算法 面试常见问题

1、GBDT和LR的差别。(这个问题可以推广的,和AdaBoost、RF、XgBoost,etc的差别)

LR模型对于各个特征值得范围差别很大时候,如果不进行特征标准化,会导致训练出来大特征值的权重明显比其他特征要高很多,模型的准确性影响非常大。针对本次实验,X的第一个特征值增大100000倍以后,accuracy从0.95降低到了0.33。如果对特征值进行标准化以后,score会提升到90%。当然,如果特征之间的值域本来就很接近,如果进行标准化,反而会降低准确率。针对本实验从0.95降低到了0.90。GBDT模型相比于LR模型,准确率会有明显的优势。而且,不会像LR一样,对于各个特征值得范围差别很大时候,准确率依然会是一个很高的值。针对本次实验,X的第一个特征增加100000倍以后,准确率居然和以前一样。这么看来,GBDT在不进行数据标准化的情况下,效果依然很好。但是GBDT模型的训练时间明显比LR要慢好多。LR在0.03s就可以训练完成,GBDT足足用了1.2s,比LR要慢4倍。

2、AdaBoost原理

AdaBoost是利用前一轮迭代的误差率来更新训练集的权重,校正前一轮迭代被错误分类的样本,通俗一点的理解就是将重心放在分错的样本上。

3、决策树处理连续值的方法

因此需要连续属性离散化,常用的离散化策略是二分法,这个技术也是C4.5中采用的策略

4、决策树处理缺失值

计算分裂损失减少值时,忽略特征缺失的样本,最终计算的值乘以比例(实际参与计算的样本数除以总的样本数

5、特征选择的方法

去掉取值变化小的特征/单变量特征选择/皮尔逊相关系数

1、方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征

2、相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值

3、卡方检验,自变量和因变量的相关性

互信息法/递归特征消除法/基于惩罚项的特征选择法/基于树模型的特征选择法

6、过拟合的解决办法

数据集扩增

正则化:正则化方法是指在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项

L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项

L2正则是基于L2范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项

7、k-means原理,优缺点及改进

原理:对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。

优点:

    1)原理比较简单,实现也是很容易,收敛速度快。

    2)聚类效果较优。

    3)算法的可解释度比较强。

    4)主要需要调参的参数仅仅是簇数k。

缺点:

    1)K值的选取不好把握(改进:可以通过在一开始给定一个适合的数值给k,通过一次K-means算法得到一次聚类中心。对于得到的聚类中心,根据得到的k个聚类的距离情况,合并距离最近的类,因此聚类中心数减小,当将其用于下次聚类时,相应的聚类数目也减小了,最终得到合适数目的聚类数。可以通过一个评判值E来确定聚类数得到一个合适的位置停下来,而不继续合并聚类中心。重复上述循环,直至评判函数收敛为止,最终得到较优聚类数的聚类结果)。

    2)对于不是凸的数据集比较难收敛(改进:基于密度的聚类算法更加适合,比如DESCAN算法)

    3)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳。

    4) 采用迭代方法,得到的结果只是局部最优。

    5) 对噪音和异常点比较的敏感(改进1:离群点检测的LOF算法,通过去除离群点后再聚类,可以减少离群点和孤立点对于聚类效果的影响;改进2:改成求点的中位数,这种聚类方式即K-Mediods聚类(K中值))。

               6)初始聚类中心的选择(改进1:k-means++;改进2:二分K-means,相关知识详见这里这里)。

优化:    

K-Means++:

    a)  从输入的数据点集合中随机选择一个点作为第一个聚类中心
    b) 对于数据集中的每一个点,计算它与已选择的聚类中心中最近聚类中心的距离
    c) 选择一个新的数据点作为新的聚类中心,选择的原则是:较大的点,被选取作为聚类中心的概率较大
    d) 重复b和c直到选择出k个聚类质心
    e) 利用这k个质心来作为初始化质心去运行标准的K-Means算法

elkan K-Means利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算。

    第一种规律是对于一个样本点和两个质心。如果我们预先计算出了这两个质心之间的距离,则如果计算发现,我们立即就可以知道。此时我们不需要再计算,也就是说省了一步距离计算。

    第二种规律是对于一个样本点和两个质心。我们可以得到。这个从三角形的性质也很容易得到。

Mini Batch K-Means中,我们会选择一个合适的批样本大小batch size,我们仅仅用batch size个样本来做K-Means聚类。那么这batch size个样本怎么来的?一般是通过无放回的随机采样得到的。

8、svm为什么引入拉格朗日优化方法

SVM将寻找具有最大几何间隔划分超平面的任务转化成一个凸优化问题,如下所示:

我们当然可以直接使用现成工具求解,但还有更为高效的方法,那就是使用拉格朗日乘子法将原问题转化为对偶问题求解。

具体做法是:(1)将约束融入目标函数中,得到拉格朗日函数;(2)然后对模型参数w和b求偏导,并令之为零;(3)得到w后,将其带入拉格朗日函数中,消去模型参数w和b;(4)这样就得到了原问题的对偶问题,对偶问题和原问题等价,同时对偶问题也是一个凸优化问题,使用SMO算法求解拉格朗日乘子;(5)得到拉格朗日乘子后,进一步可以得到模型参数w和b,也就得到了我们想要的划分超平面。

猜你喜欢

转载自blog.csdn.net/kwame211/article/details/81512373