Hands-on ML & Interview

最近在看 Hands-on Machine Learning with Scikit-Learn and TensorFlow 这本书,碰巧又要面试新人,于是便从此书中挖掘了一些问题,在此记录下

决策树

1.Cart树中子节点的Gini impurity是不是一直小于父节点,为什么?

不是,举个例子,有样本5个,类别顺序是, A B A A A
此时基Gini impurity为0.32,这时候生成子节点,可以得到 AB 和 AAA
此时AB子节点的Gini impurity就是大于父节点的吗,不过整体看,子节点还是要父节点的

2.决策树模型underfits 时进行特征缩放是否有用

从决策树的分裂逻辑上可以直观地感受到feature scaling没啥用

3.决策树训练的时间复杂度是多少

nmlog(m),其中m为样本数,n为特征数。
理解这个比较简单,nmlog(m) = nm * log(m)
这里边log(m)就是树高度,每一层的时间复杂度是nm,所以整体就位nmlog(m)

linear model

1.Feature Scaling的作用

线性模型中feature scaling将各维度特征统一,能提升学习速度,这个在网上可以搜到相关解释,二维特征中圆形往中心逼近的快,而椭圆会比较慢

2.梯度下降训练逻辑回归是否会陷入局部最小

逻辑回归中使用的link function是sigmod函数,最后推到出来的loss function是凸函数所以最终会优化到全局最小

SVM

1.什么是支持向量

svm中边界的点就是支持向量

2.数百万数据,数百万个特征的情况是该使用dual还是primal方式去训练,为什么?

不能使用对偶形式训练,对偶形式的计算复杂度在m的二次方和三次方之间,其中m指的是数据量。