百面机器学习笔记(更新ing~~~)

1 篇文章 0 订阅

第一章 特征工程

01 特征归一化

​ Q:为什么需要对数值类型的特征做归一化?

​ A:对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。

  1. 线性函数归一化
    X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X-X_{min}}{X_{max}-X_{min}} Xnorm=XmaxXminXXmin
    其中X为原始数据, X m a x 、 X m i n X_{max}、X_{min} XmaxXmin分别为数据最大值和数据最小值。

  2. 零均值归一化
    z = x − μ σ z = \frac{x - \mu}{\sigma} z=σxμ
    其中, μ \mu μ为原始特征的均值, σ \sigma σ为标准差。


02 类别型特征

​ Q:在对数据进行预处理时,应该怎样处理类别特征?

​ A:序号编码、独热编号、二进制编码

  • 序号编码

    通常用于处理类别间具有大小关系的数据,例如成绩,可以分为优秀、合格、不合格三档,它们之间存在一种高低的排序关系,例如优秀可以表示为3、合格表示为2、不合格表示为1.

  • 独热编码

    独热编码通常用于处理类别间不具大小关系的特征。例如血型,一共有4个取值(A、B、AB、O),独热编码会把血型变成一个4维的稀疏向量,A表示为(1,0,0,0),B表示为(0,1,0,0),AB表示为(0,0,1,0),O表示为(0,0,0,1)。

  • 二进制编码

    还是以A、B、AB、O型血为例。假设A型血的ID为1,二进制表示为001;B型血的ID为2,二进制表示为010;AB型血的ID为3,二进制表示为011,O型血的ID为4,二进制表示为100。


03 高维组合特征的处理

​ Q:什么是组合特征?如何处理高维组合特征?

​ A:为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。


04 组合特征

​ Q:怎样有效地找到组合特征?

​ A:采用梯度提升决策树


05 文本表示模型

​ Q:有哪些文本表示模型?它们各有什么优缺点?

​ A:

  • 词袋模型(Bag of words)和N-gram模型
  • 主题模型(Topic model)
  • 词嵌入与深度学习模型

06 Word2Vec

​ Q:Word2Vec是如何工作的?它和LDA(隐狄利克雷模型)有什么区别与联系?

​ A:

  1. Word2Vec有两种网络结构,分别是CBOW(Continues Bag of Words)和Skip-gram。CBOW的目标是根据上下文出现的词语来预测当前词的生成概率,而Skip-gram是根据当前词来预测上下文中各词的生成概率。
  2. 首先,LDA是利用文档中单词的共现关系来对单词按主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布。而Word2Vec其实是对“上下文-单词”矩阵进行 学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了 上下文共现的特征。也就是说,如果两个单词所对应的Word2Vec向量相似度较 高,那么它们很可能经常在同样的上下文中出现。

07 图像数据不足时的处理方法

​ Q:在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?

​ A:训练数据不足可能会带来过拟合问题。

  1. 基于模型的方法,主要采用降低过拟合的措施,包括简化模型(将非线性模型转化为线性模型)、添加约束项以缩小假设空间(如L1\L2正则项)、集成学习、Dropout超参数等。
  2. 基于数据的方法,主要通过数据扩充(Data Augmentation)。

第二章 模型评估

08 评估指标的局限性

​ Q:准确率的局限性

​ A:准确率时分类问题中最简单也最直观的评价指标,但存在明显的缺陷。比如,当负样本占比99%时,分类器只需要将所有的样本预测为负样本也可以达到99%的准确率。所以,当不同类别的样本占比非常不均衡的时候,占比大的类别往往成为影响正确率的最主要影响因素。


​ Q:精确率和召回率的平衡

​ A:为了综合评估一个排序模型的好坏,不仅要看模型在不同Top N的Precision和Recall。而且最好绘制出模型的P-R曲线。除此之外,F1 score和ROC曲线也能综合地反映一个排序模型的性能。F1 score是精确率和召回率的调和平均值,它定义为:
F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l F1 = \frac{2 \times precision \times recall}{precision + recall} F1=precision+recall2×precision×recall

​ Q:平方根误差的"意外"

​ A:

  1. 如果我们认为这些离群点是"噪声点"的话,就需要在数据预处理的阶段把这些噪声点数据预处理掉。

  2. 如果不认为这些离群点是"噪声点"的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去。

  3. 可以找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的评估指标,比如平均绝对百分比误差,它定义为
    M A P E = ∑ i = 1 n ∣ y i − y i ^ y i ∣ × 100 n MAPE = \sum_{i=1}^{n}|\frac{y_i - \hat{y_i}}{y_i}| \times \frac{100}{n} MAPE=i=1nyiyiyi^×n100


09 ROC曲线

​ Q:什么是ROC曲线?

​ A:ROC曲线是Receiver Operating Characteristic Curve 的简称,横坐标为假阳性率(False Positive Rate,FPR),纵坐标为真阳性率(True Positive Rate,TPR)。FPR和TPR的计算方法如下:
F P R = F P N T P R = T P P FPR = \frac{FP}{N} \\ TPR = \frac{TP}{P} FPR=NFPTPR=PTP
上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数。下面来举个例子,更直观的感受下:

假设有10位疑似癌症患者,其中有3位很不辛确实患了癌症(P=3),另外7位不是癌症患者(N=7)。医院对这10位疑似患者做了诊断,其中有2位被判断为真正的癌症患者(TP=2),那么真阳性率 T P R = T P P = 2 3 TPR=\frac{TP}{P}=\frac{2}{3} TPR=PTP=32,那么假阳性率 F P R = F P N = 1 7 FPR=\frac{FP}{N}=\frac{1}{7} FPR=NFP=71。对于"该医院"这个分类器来说,这组分类结果就对应ROC曲线上的一个点( 1 7 \frac{1}{7} 71 2 3 \frac{2}{3} 32)。


​ Q:如何绘制ROC曲线?

​ A:首先,根据样本标签统计出正负样本的数量,假设正样本数量为P,负样本数量为N;接下来,把横轴的刻度间隔设置成 1 N \frac{1}{N} N1,纵轴的刻度间隔设置为 1 P \frac{1}{P} P1;再根据模型输出的预测概率对样本进行排序(从高到低);依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历所有样本,曲线最终停在(1,1)这个点,整个ROC曲线绘制完成。


​ Q:如何计算AUC?

​ A:首先来解释下AUC是什么,AUC指的是ROC曲线下的面积大小,该值能够量化地反应基于ROC曲线衡量出的模型性能。计算AUC值只需沿着ROC横轴做积分就可以了。


​ Q:ROC曲线相比P-R曲线有什么特点?

​ A:相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。


10 余弦距离的应用

​ Q:为什么在一些场景中要使用余弦相似度而不是欧式距离?

​ A:对于两个向量A和B,其余弦相似度定义为 c o s ( A , B ) = A ⋅ B ∥ A ∥ 2 ∥ B ∥ 2 cos(A,B)=\frac{A\cdot B}{\left\|A\right\|_2\left\|B\right\|_2} cos(A,B)=A2B2AB 即两个向量的夹角的余弦。当一对文本相似度的长度差距很大,但内容很相近时,如果使用词频或者词向量作为特征,它们在特征空间中的欧式距离通常很大;而如果使用余弦相似度的话,他们之间的夹角可能很小,因而相似度很高。


​ Q:余弦距离是否是一个严格定义的距离

​ A:首先要使得三条距离公理(正定性、对称性和三角不等式)成立,则该实数可称为这对元素之间的距离。而余弦距离满足正定性和对称性,但是不满足三角不等式,因此它并不是严格定义的距离。具体来说,对于向量A和B,三条距离公理的证明过程如下。

  • 正定性

    根据余弦距离的定义,有 d i s t ( A , B ) = 1 − c o s θ = ∥ A ∥ 2 ∥ B ∥ 2 − A B ∥ A ∥ 2 ∥ B ∥ 2 dist(A,B)=1-cos\theta=\frac{\left\|A\right\|_2\left\|B\right\|_2-AB}{\left\|A\right\|_2\left\|B\right\|_2} dist(A,B)=1cosθ=A2B2A2B2AB,考虑到 ∥ A ∥ 2 ∥ B ∥ 2 − A B ≥ 0 \left\|A\right\|_2\left\|B\right\|_2-AB \ge 0 A2B2AB0,因此有 d i s t ( A , B ) ≥ 0 dist(A,B)\ge0 dist(A,B)0恒成立。特别地,有 d i s t ( A , B ) = 0 ⇔ ∥ A ∥ 2 ∥ B ∥ 2 = A B ⇔ A = B dist(A,B) = 0 \Leftrightarrow \left\|A\right\|_2\left\|B\right\|_2=AB \Leftrightarrow A=B dist(A,B)=0A2B2=ABA=B。因此余弦距离满足正定性。

  • 对称性

    根据余弦距离的定义,有 d i s t ( A , B ) = ∥ A ∥ 2 ∥ B ∥ 2 − A B ∥ A ∥ 2 ∥ B ∥ 2 = ∥ B ∥ 2 ∥ A ∥ 2 − B A ∥ B ∥ 2 ∥ A ∥ 2 = d i s t ( B , A ) dist(A,B)=\frac{\left\|A\right\|_2\left\|B\right\|_2-AB}{\left\|A\right\|_2\left\|B\right\|_2}=\frac{\left\|B\right\|_2\left\|A\right\|_2-BA}{\left\|B\right\|_2\left\|A\right\|_2}=dist(B,A) dist(A,B)=A2B2A2B2AB=B2A2B2A2BA=dist(B,A),因此余弦距离满足对称性。

  • 三角不等式

    该性质并不成立,我们知道证明一个式子是正确的,需要严格的流程,如证明他是错误的,只要给出一个反例就够了,下面给出一个具体的反例。给定 A = ( 1 , 0 ) , B = ( 1 , 1 ) , C = ( 0 , 1 ) A=(1,0),B=(1,1),C=(0,1) A=(1,0)B=(1,1)C=(0,1),则有 d i s t ( A , B ) = 1 − 2 2 , d i s t ( B , C ) = 1 − 2 2 , d i s t ( A , C ) = 1 dist(A,B)=1-\frac{\sqrt{2}}{2},dist(B,C)=1-\frac{\sqrt{2}}{2},dist(A,C)=1 dist(A,B)=122 dist(B,C)=122 dist(A,C)=1。**注意:这边算的距离,不是大家习惯的欧式距离,而是余弦距离。所以不要以为笔者算错距离了!!!**因此有:
    d i s t ( A , B ) + d i s t ( B , C ) = 2 − 2 < 1 = d i s t ( A , C ) dist(A,B)+dist(B,C)=2-\sqrt{2}<1=dist(A,C) dist(A,B)+dist(B,C)=22 <1=dist(A,C)
    所以不满足三角不等式。


11 A/B测试的陷阱

​ Q:在对模型进行过充分的离线评估之后,为什么还要在线进行A/B测试呢?

​ A:需要进行在线A/B测试的原因如下:

  1. 离线评估无法消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果。
  2. 离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。
  3. 线上系统的某些商业指标在离线评估中无法计算。离线评估一般是针对模型本身进行评估,而与模型相关的其他指标,特别是商业指标,往往无法 直接获得。比如,上线了新的推荐算法,离线评估往往关注的是ROC曲线、P-R曲线等的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。这些都由A/B测试来进行全面的评估。

​ Q:如何进行线上A/B测试?

​ A:对用户进行分桶,即将用户分成实验组和对照组,对实验组的用户时宜新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏低。


​ Q:如何划分实验组和对照组

​ A:举个例子,H公司的算法工程师们最近针对系统中的"中国用户"研发了一套全新的视频推荐模型A,而目前正在使用的针对全体用户的推荐模型是B。在正式上线之前,工程师们希望通过A/B测试来验证新推荐模型的效果。正确的划分方式应该是——将所有中国用户根据user_id个位数划分为实验组和对照组,分别施以模型A和模型B,才能够验证模型A的效果。


12 模型评估的方法

​ Q:在模型评估过程中,有哪些主要的验证方法,它们的缺点是什么?

​ A:Holdout检验、交叉验证、自助法(Bootstrap)、微积分

  • Holdout检验

    最简单也是最直接的方法,直接将原始的样本集合随机分成训练集和验证集,70%的样本用于模型训练,30%的样本用于模型验证。不过缺点很明显,验证集上计算出来的评估指标和原始分组关系很大。

  • 交叉检验

    k-fold交叉验证:首先将全部样本分为k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余作为训练集,进行模型的评估和训练。最后把k词评估指标的平均值作为最终的评估指标。

  • 自助法

    前面两种方法,都是基于划分训练集和验证集的方法进行模型评估的。然而,当样本规模比较小时,将样本集进行划分会让训练集进一步减小,自助法就可以解决这个问题。自助法是基于自助采样的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽出来过,将这些没有被抽出来的样本作为验证集,进行模型验证。


​ Q:在自助法的采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过?

​ A:一个样本在一次抽样过程中未被抽中的概率为 ( 1 − 1 n ) \left(1-\frac{1}{n}\right) (1n1),n次抽样均为未抽中的概率为 ( 1 − 1 n ) n \left( 1-\frac{1}{n}\right)^n (1n1)n。当n趋于无穷大时,概率为 lim ⁡ n → ∞ ( 1 − 1 n ) n \lim\limits_{n\to\infty}\left(1-\frac{1}{n}\right)^n nlim(1n1)n。根据极限 lim ⁡ n → ∞ ( 1 + 1 n ) n = e \lim\limits_{n\to\infty}\left(1+\frac{1}{n}\right)^n = e nlim(1+n1)n=e
因 为 lim ⁡ n → ∞ ( 1 − 1 n ) n = lim ⁡ n → ∞ ( n − 1 n ) n = lim ⁡ n → ∞ 1 ( n n − 1 ) n = lim ⁡ n → ∞ 1 ( 1 + 1 n − 1 ) n = lim ⁡ n → ∞ 1 ( 1 + 1 n − 1 ) n − 1 ⋅ lim ⁡ n → ∞ 1 ( 1 + 1 n − 1 ) 1 = 1 e ⋅ 1 = 1 e ≈ 0.368 因为\lim\limits_{n\to\infty}\left(1-\frac{1}{n}\right)^n = \lim\limits_{n\to\infty}\left(\frac{n-1}{n}\right)^n \\= \lim\limits_{n\to\infty}\frac{1}{\left(\frac{n}{n-1}\right)^n} = \lim\limits_{n\to\infty}\frac{1}{\left(1+\frac{1}{n-1}\right)^n} \\ =\lim\limits_{n\to\infty}\frac{1}{\left(1+\frac{1}{n-1}\right)^{n-1}} \cdot\lim\limits_{n\to\infty}\frac{1}{\left(1+\frac{1}{n-1}\right)^1} \\ =\frac{1}{e}\cdot1 = \frac{1}{e} \approx0.368 nlim(1n1)n=nlim(nn1)n=nlim(n1n)n1=nlim(1+n11)n1=nlim(1+n11)n11nlim(1+n11)11=e11=e10.368
因此,当样本数很大时,大约有36.8%的样本从未被选择过,可作为验证集。


13 超参数调优

​ Q:超参数有哪些调优方法?

​ A:

  • 网格搜索

    通过查找搜索范围内的所有点来确定最优值。如果采用较大的搜索范围以及较小的步长,有很大概率找到全局最优值,但是计算量也非常的大。所以,在实际应用中,一般会使用较大的步长来寻找大概的位置,然后在缩小搜索范围和步长,来寻找更精确的最优值,不过这样可能会错过全局最优值,大概率得到的是局部最优值。

  • 随机搜索

    随机搜索跟网络搜索比较类似,只不过不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。虽然速度比网格搜索快一些,但是也没法保证是全局最优值。

  • 贝叶斯优化算法

    网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息。具体来说,它学习目标函数的形状的方法是,首先根据先验分布,假设一个搜集函数;然后,每一次使用新的采样点来测试目标函数时,利用这个这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。


14 过拟合和欠拟合

​ Q:在模型评估过程中,过拟合和欠拟合具体指什么现象?

​ A:过拟合指的是模型在训练集上的表现很好,但是在测试集和新数据上的表现较差。欠拟合指的是模型在训练和测试集上表示斗不好的情况。

image-20201116084217393

​ Q:能否说出几种降低过拟合和欠拟合风险的方法?

​ A:

  • 降低"过拟合"风险的方法

    1. 从数据入手,获取更多的训练数据。使用更多的训练数据上解决过拟合问题最有效的手段。
    2. 降低模型复杂度。例如,在神经网络模型中减少网络参数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
    3. 正则化方法
    4. 集成学习方法
  • 降低"欠拟合"风险的方法

    1. 添加新特征
    2. 增加模型复杂度。例如,在线性模型中添加高次项,在神经网络模型中添加网络层数或者神经元个数。
    3. 减小正则化系数

第三章 经典算法

15 支持向量机

​ Q:在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在超平面上的投影仍然是线性可分吗?

​ A:对于任意线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的。

image-20201117082421346

​ Q:是否存在一组参数使SVM训练误差为0?

​ A: y ( j ) ∈ { − 1 , 1 } y^{(j)}\in\{-1, 1\} y(j){1,1},当训练样本为正例,即 y ( j ) = 1 y^{(j)}=1 y(j)=1时,预测结果 f ( x ( j ) ) > 0 f(x^{(j)})>0 f(x(j))>0,样本被预测为正例;而当训练样本为负例,即 y ( j ) = − 1 y^{(j)}=-1 y(j)=1时,预测结果 f ( x ( j ) ) < 0 f(x^{(j)})<0 f(x(j))<0,样本被预测为负例。因此所有样本的类别都被预测正确,训练误差为0。


​ Q:训练误差为0的SVM分类器一定存在吗?

​ A:存在一个SVM最优解是模型的解,且一定使模型分类误差为0。


​ Q:加入松弛变量的SVM的训练误差可以为0吗?

​ A:当C取0时,w也取0即可达到优化目标,但是显然此时我们的训练误差不一定能达到0。


16 逻辑回归

​ Q:逻辑回归相比于线性回归,有何异同?

​ A:首先,逻辑回归处理等是分类问题,线性回归处理等书回归模型,这是两者的本质区别。不过两者都是使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上可以看成是极大似然估计都一个化简;并且两者都可以使用梯度下降的方法。


​ Q:当使用逻辑回归处理多标签的分类问题时,有哪些常见做法,分别应用于哪些场景,它们之间又有怎样的关系?

​ A:如果一个样本只对应于一个标签,可以使用多项逻辑回归(Softmax Regression)来进行分类;当存在样本可能属于多个标签的情况时,我们可以训练k个二分类器的逻辑回归分类器。


17 决策树

​ Q:决策树有哪些常用的启发函数?

​ A:

  • ID3——最大信息增益
  • C4.5——最大信息增益比
  • CART——最大基尼指数(Cini)

​ Q:如何对决策树进行剪枝?

​ A:

  • 预剪枝

    预剪枝的核心思想是在树中结点进行扩展之前,先计算当前的划分是否能带来模型泛化能力的提升,如果不难,则不再继续生长子树。此时可能存在不同类别的样本同时存在于结点中,按照多数投票的原则判断该结点所属类别。

  • 后剪枝

    后剪枝的核心思想是让算法生成一棵完全生长的决策树,然后从最底层向上计算是否剪枝。剪枝过程将子树删除,用一个叶子结点替代,该结点的类别同样按照多数表决的原则进行判断。同样地,后剪枝也可以通过在测试集上的准确率进行判断,如果剪枝过后准确率有所提升,则进行剪枝。相比于预剪枝,后剪枝方法通常可以得到泛化能力更强大的决策树,但时间开销会更大。

    常见的后剪枝方法包括错误率降低剪枝(Reduced Error Pruning, REP)、悲观剪枝(Pessimistic Error Pruning, PER)、代价复杂度剪枝(Cost Complexity Pruning, CCP)、最小误差剪枝(Minimum Error Pruning, MEP)、CVP(Critical Value Pruning)、OPP(Optimal Pruning)


第四章 降维

18 PCA最大方差理论

​ Q:如何定义主成分?从这种定义出发,如何设计目标函数使得降维达到提取主成分的的目的?针对这个目标函数,如何对PCA问题进行求解?

​ A:数据在某个方向上的方差更大;最大化投影方差,也就是让数据在主轴上投影的方差最大。

  1. 对样本数据进行中心化处理。
  2. 求样本协方差矩阵
  3. 对协方差矩阵进行特征分解,将特征值从大到小排列。
  4. 取特征值前d大对应的特征向量 ω 1 , ω 2 , ⋯   , ω d \omega_1,\omega_2,\cdots,\omega_d ω1,ω2,,ωd

19 PCA最小平方差理论

​ Q:能否从回归的角度定义PCA的目标并相应地求解问题?

​ A:最佳直线 ω \omega ω和最大方差法求解的最佳投影方向一致,即协方差矩阵的最大特征值所对应的特征向量。差别仅上协方差矩阵 Σ \Sigma Σ的一个倍数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值