机器学习 分类 预测 算法 逻辑回归

机器学习常见面试题目

Machine learning common interview questions
Posted by yougth on April 16, 2018 · 阅读约 18 分钟

算法类

逻辑回归原理及公式推导

逻辑回归通常是实习及1-3年初级算法必问的,最好能够很通顺的讲下来,里面公式都能够完整的推导下来,详细参见 读完之后重点关注回答两个问题:

  1. 有很多函数可以做到把一个数映射到0-1之间,为什么逻辑回归或者很多模型都选择在最后一层过sigmod函数
  2. 二分类损失函数log loss怎么来的

逻辑回归和线性回归的区别和联系

Item 线性回归 逻辑回归
解决问题 回归预测 分类
分布 正态分布 二项分布
损失函数 均方差 logstic
变量要求 连续性变量 分类型变量
线性/非线性 线性 不一定

联系:它们都属于广义线性模型,逻辑回归通过定义几率(odds),\(ln \frac{y}{1-y} = w^Tx\),然后通过log函数变换跟线性回归联系起来,\(w^Tx\)越大,则y>0.5,越小则y<0.5,然后就可以做分类。

L0和L1以及L2正则化区别

L0范数基本上不常见,表示向量中非零元素的个数,\(L_0\) = 0/1 with \(x_i \neq 0\),因为L1范数在一定程度上表示了L0范数的作用,所以这个不常用

L1范数表示向量中元素绝对值的和,\(L_1\) = \(\sum_{i=1}^{n} \mid x_i \mid\),L1范数解通常是稀疏性的,通常会让解比较极端,而且有特征选择的作用。

L2范数表示欧氏距离,\(L2 = \sqrt{\sum_{i=1}{n} x_i^2}\),L2范数有特征平滑作用,能够防止过拟合,能够限制每个特征解都比较小,但是不会让他变成0,并且能够让优化过程稳定且快速。

至于为什么L1范数的解会导致稀疏性,可以从两个维度分析,第一个维度是L1正则化相当于给损失函数中引入了拉普拉斯先验,看拉普拉斯分布图会发现它在0处是非平滑的;而L2正则化相当于给损失函数引入了高斯先验,看高斯分布图会发现它是个平滑函数,0处似乎极值,所以只会趋近0不会导致为0。第二个角度是带正则化和带约束的优化是等价的,使用拉格朗日函数,可以看到后面部分就是它的解空间,L2对应的是圆形解空间,L1对应的是菱形接空间,和目标函数更容易碰撞到边界上。

集成学习bagging和boosting的区别和联系

Bagging (bootstrap aggregating) Bagging即套袋法,其算法过程如下:

  1. 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中).共进行k轮抽取,得到k个训练集.(k个训练集相互独立)
  2. 每次使用一个训练集得到一个模型,k个训练集共得到k个模型.(注:根据具体问题采用不同的分类或回归方法,如决策树、神经网络等)
  3. 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果.

Boosting Boosting是一族可将弱学习器提升为强学习器的算法. 关于Boosting的两个核心问题:

  1. 在每一轮如何改变训练数据的权值或概率分布? 通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样本的权值,而误分的样本在后续受到更多的关注.
  2. 通过什么方式来组合弱分类器? 通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值. 而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型.
Item bagging boosting
样本选择 有放回抽取 总训练集
样例权重 均匀抽样 错误率越大权重越高
预测函数 每个预测函数权重相等 每个弱分类器有自己权重,误差小的分类器权重高
并行计算 可以并行 顺序,当前轮依赖前一轮结果
偏差-方差分解 降低方差(抑制过拟合) 降低偏差(增强拟合能力)
适应基分类器 复杂的(不剪枝决策树,神经网络) 简单分类器

联系:都属于集成学习

判别模型和生成模型的区别

判别模型直接学习决策函数\(y = f(x)\)或者条件概率分布\(P(y \mid x)\)作为预测的模型,其基本思想是在有限的条件下建立判别模型,不考虑样本的生成模型,直接研究预测模型。例如k近邻,lr,svm,决策树等 生成模型由数据学习联合概率密度分布\(P(x,y)\),然后求出训练数据x的概率分布\(p(x)\),最后计算出后验概率 \(p(y \mid x) = p(x,y) / p(x)\),就是生成模型,例如朴素贝叶斯、隐马尔可夫模型、高斯混合模型、LDA、Restricted Boltzmann Machine

生成模型特点:是联合概率,首先需要从统计的角度分析数据分布情况,能够反映同类数据本身的相似度,不关心分类边界。 判别式模型特征:是条件概率,直接学习决策函数或者分布,不能反映数据本身的特征,寻找不同类别之间的最优分类面,反映不同数据之间差异,能够抽象问题,提取或者定义特征取简化学习问题。

例如让你判定一个人说话用的语言,生成式模型就是把所有语言都学习一遍,然后去判断,而判别式则不去学习,而是直接找语言模型之间的差别取分类。

联系:由生成模型可以得到判别模型,而判别模型不能得到生成模型。

机器学习评价指标

预测值\真实值 1 0
1 TP FP
0 FN TN

定义真阳率(召回率):\(TPR = \frac{TP}{TP+FN}\),表示正样本中被预测对的比率,当然这个比率越高越好

定义假阳率:\(FPR = \frac{FP}{TN+FP}\),表示负样本中被预测错的比率,这个比率越低越好

准确率:\(Precision = \frac{TP}{TP+FP}\),预测对的样本在所有预测为正样本中的比率

ROC 曲线就是横轴是假阳率,纵轴是真阳率。

而这个率跟分类阀值有关,不同的分类阀值假阳率和真阳率不同,而其下面的面积就表示AUC曲线。

AUC可以理解为我们随机从所有正样本随机选取一个样本,从所有负样本中选取一个样本,把这个正样本预测为正样本的概率为P1,把这个负样本预测为正样本的概率为P0,P1>P0的概率就是AUC,AUC本质反映分类器对样本的排序能力。

另一个常见的评价指标是KS(Kolmogorov-Smirnov),\(KS = max(TPR-FPR)\),反映模型的最优区分效果,比如推荐系统中这个指标较大比较好,我们要求更大的召回率比较好。而一些预测地震的模型可以要求准确率高。

常用激活函数

有监督分类常见损失函数

损失函数,本质是在使用数学方法评估两个数据分布的差异,其中y表示待学习样本本身数据分布,而f(x)表示模型学习到的数据分布,那么损失函数就是衡量这两个分布的接近程度,或者说差异程度。所以选择损失函数基本要对建模数据分布有个假设,二分类常用假设为二项(伯努利)分布,回归常用假设为正态(高斯)分布。

损失函数 定义 特性 常用算法
0-1损失 \(L_{0,1}(y,f(x)) = 1:0 if (y ==f(x))\) 非凸非光滑 感知机
绝对值损失 \(L(y,f(x)) = abs(y - f(x))\) 非凸非光滑  
感知机损失 \(L_{p}(y,f(x)) = max(0, -y·f(x))\) 非凸非光滑 感知器
Log对数损失 \(L_{log}(y,f(x)) =log_2(1+exp(-(f(x)·y)))\) 光滑凸函数 逻辑回归
Hinge损失 \(L_{Hinge}(y,f(x)) = max(0, 1 - y·f(x))\) 健壮性高 支持向量机SVM
交叉熵损失 \(L_{CrossEntropy}(y, f(x)) = -\sum_{i \in N}y_i · log f(x_i)\) 光滑凸函数 逻辑回归及多分类

分类算法

有监督回归常见损失函数

损失函数 定义 特性 常用算法
平方损失 \(L_{square}(y, f(x)) = (y - f(x))^2\) 光滑易优化,异常点敏感 线性回归
绝对值损失 \(L_{absolute}(y, f(x)) = abs(y - f(x)\) 非光滑,但异常点友好  

还有一个是Huber损失,综合了前面两个函数的优点,公式为 \(L_{Huber}(y, f(x)) = \begin{cases} (f(x) - y)^2 & \text{abs(y - f(x)) <= \theta } \\ 2\theta\ abs(f(x) - y) - \theta^2 & \text{abs(y - f(x)) > \theta} \end{cases}\)

回归算法

特征选择的方法

抑制过拟合的方法

决策树三种启发函数差异

简写 ID3 C4.5 CART
全称 最大信息增益 最大信息增益比 最大基尼系数
特性 倾向于取值多的特征 优化惩罚特征多结果  
变量类型 离散 离散&连续 离散&连续
模型类型 分类 分类 分类&回归
特征确实敏感性 敏感 不敏感 不敏感
分叉数目 多分叉 多分叉 二分叉
特征跨层级使用 不会 不会
是否建议剪枝

GBDT和xgboost区别

机器学习进阶

交叉熵损失和log损失的区别和联系

本质上它两是一个东西,一般在二分类问题中常叫log loss或logistic,而在多分类问题中经常叫交叉熵损失(Cross-entropy),证明见另一篇

tensorflow建模时常用的优化器有哪些

详细参考Tensorflow-各种优化器总结与比较

工程工具类

spark中常见提升性能参数

spark数据倾斜解决方法(参见美团文章)

💬 评论(使用 Giscus,登录 GitHub 即可发言)