机器学习面试题整理
1、树形结构为什么不需要归一化?
因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。
分裂点的位置是由信息熵或者基尼系数等的大小来决定的,而这些是根据概率判断的,和数值没有关系。
按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且,树模型是不能进行梯度下降的,
因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。
既然树形结构(如决策树、RF)不需要归一化,那为何非树形结构比如Adaboost、SVM、LR、Knn、KMeans之类则需要归一化呢?
对于线性模型,特征值差别很大时,比如说LR,我有两个特征,一个是(0,1)的,一个是(0,10000)的,运用梯度下降的时候,
损失等高线是椭圆形,需要进行多次迭代(走Z字形)才能到达最优点。但是如果进行了归一化,那么等高线就是圆形的,促使SGD往原点迭代,从而导致需要的迭代次数较少。
2、在k-means或kNN,我们常用欧氏距离来计算最近的邻居之间的距离,有时也用曼哈顿距离,请对比下这两种距离的差别
欧式距离:
欧氏距离计算公式:假设有两个点(x1,y1),(x2,y2)。则,欧式距离为d=((x1-x2)^2+(y1-y2)^2)^(1/2)
缺点:某些特征比其他特征取值大很多时,精确度会变差,很多特征值为0,即稀疏矩阵,结果不准,数据点的分布是某个圆心的半径,用欧式距离就不能比较了。。
曼哈顿距离:
异常值对分类结果影响比欧式距离小。,某些特征值较大,会掩盖其他距离的临近关系。认为各维度对距离的贡献权重一样
曼哈顿距离计算公式:假设有两个点(x1,y1),(x2,y2)。则,曼哈顿距离d=|x1-x2|+|y1-y2|
3、逻辑斯特回归为什么要对特征进行离散化。
在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:
① 非线性!非线性!非线性!逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,
相当于为模型引入了非线性,能够提升模型表达能力,加大拟合; 离散特征的增加和减少都很容易,易于模型的快速迭代;
② 速度快!速度快!速度快!稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
③ 鲁棒性!鲁棒性!鲁棒性!离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。
如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
④ 方便交叉与特征组合:离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
⑤ 稳定性:特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。
当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
⑥ 简化模型:特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。
4、LR(逻辑斯特回归)
有一篇特别棒的博客:https://www.cnblogs.com/ModifyRong/p/7739955.html
总结:逻辑斯特回归是假设数据服从伯努利分布,通过对它的最大(极大)似然估计(这个就是构建损失函数的过程),进行梯度下降求解的参数,达到二分类的目标。