BAT机器学习面试1000题(406~410题)


406、常用的聚类划分方式有哪些?列举代表算法。

解析:

  1. 基于划分的聚类:K-means,k-medoids,CLARANS。

  2. 基于层次的聚类:AGNES(自底向上),DIANA(自上向下)。

  3. 基于密度的聚类:DBSACN,OPTICS,BIRCH(CF-Tree),CURE。

  4. 基于网格的方法:STING,WaveCluster。

  5. 基于模型的聚类:EM,SOM,COBWEB。


407、什么是偏差与方差?

解析:

泛化误差可以分解成偏差的平方加上方差加上噪声。偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力,方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响,噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问题本身的难度。偏差和方差一般称为bias和variance,一般训练程度越强,偏差越小,方差越大,泛化误差一般在中间有一个最小值,如果偏差较大,方差较小,此时一般称为欠拟合,而偏差较小,方差较大称为过拟合。

偏差:

1.png


方差:

2.png


408、解决bias和Variance问题的方法是什么?

解析:

High bias解决方案:Boosting、复杂模型(非线性模型、增加神经网络中的层)、更多特征

High Variance解决方案:agging、简化模型、降维

具体而言

高偏差, 可以用boosting模型, 对预测残差进行优化, 直接降低了偏差. 也可以用高模型容量的复杂模型(比如非线性模型, 深度神经网络), 更多的特征, 来增加对样本的拟合度.

高方差, 一般使用平均值法, 比如bagging, 或者模型简化/降维方法, 来降低方差.

高偏差和高方差都是不好的, 我们应该加以避免. 但是它们又是此消彼长的关系, 所以必须权衡考虑. 一般情况下, 交叉验证训练可以取得比较好的平衡:

将原始样本均分成K组, 将每组样本分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型, 这K个模型可以并发训练以加速. 用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标. K一般大于等于3, 而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均预测正确率。

在实作上,k 要够大才能使各回合中的 训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。

409、采用 EM 算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?

解析:

用EM算法求解的模型一般有GMM或者协同过滤,k-means其实也属于EM。EM算法一定会收敛,但是可能收敛到局部最优。由于求和的项数将随着隐变量的数目指数上升,会给梯度计算带来麻烦。

410、xgboost怎么给特征评分?

解析:

在训练的过程中,通过Gini指数选择分离点的特征,一个特征被选中的次数越多,那么该特征评分越高。

[python] # feature importance

print(model.feature_importances_)

plot pyplot.bar(range(len(model.feature_importances_)), model.feature_importances_)

pyplot.show() ==========

plot feature importance

plot_importance(model)

pyplot.show()
已邀请:

要回复问题请先登录注册

返回顶部