0%

百面机器学习 (一)

-

1. 为什么需要对于数值类型特征进行特征归一化?


为了消除不同数据特征之间的量纲影响,我们需要对于特征进行归一化处理,是的不同指标之间具有可比性。其主要方法为以下两种:

  • 线性函数归一化 (Min-Max Scaling):对原始特征进行线性变换,归一化到[0,1] 范围内。

  • 零均值归一化:会将原始特征映射到均值为 0,方差为 1 的分布上。设原始特征的均值和方差分别为 $\mu, \delta$,归一化公式。

    Python 代码实现

    1
    2
    3
    4
    5
    # 线性函数归一化, 零均值归一化
    from sklearn.preprocessing import MinMaxScaler, StandardScaler
    scaler = MinMaxScaler()
    x = scaler.fit(x)
    x = scaler.transform(x)

    好处:归一化后能够加快模型的梯度下降收敛速度(线性回归,逻辑回归,SVM, NN),树模型不适用。

2. 在对数据预处理时,如何处理类别型特征?


  • 序号编码:类别之间具有大小关系。例如乘积的高、中、低三挡。序号编码按照大小关系对类别特征赋予一个数值 id。

  • 独热编码:类别间不具有大小关系的特征。需要注意类别取值较多的情况下的问题

    • 使用 稀疏向量节省空间。
    • 进行特征选择降低维度。
  • 二进制编码:先使用序号编码为每一个类别赋予一个类别 id, 然后使用二进制编码 hash。

3. 什么是组合特征?如何处理高维组合特征?


为了提高复杂关系的拟合能力,特征工程经常将 一阶离散特征 两两组合,构成高阶组合特征。例如广告点击预估问题中,原始数据中有语言和类型两种离散特征。

$W_{ij}$ 的维度等于 $|x_i| \cdot |x_j|$, 即为 $i$ 和 $j$ 的特征个数乘积。

  • 可能存在的问题:当 离散型 特征为 id 类型的特征时候,例如推荐问题中, m 个用户 id 和 n 个物品 id。那么 m 和 n 都是千亿级别的,这个乘积就非常大,参数量就会非常大。一种行之有效的方法就是将用户和物品分别映射为 $k$ 维度的低纬度向量 ($k\ll m, k\ll n$), 此时需要学习的参数规模变为 $m \times k + n \times k$。

  • 其他的特征组合方式: 两两组合特征仍然存在过拟合的问题,其他特征组合方式,基于决策树的特征组合寻找方式。

4. 文本表示模型有哪些?各自的优缺点?


  • 词袋模型:每篇文本看做一个忽略顺序的词语集合,被表示为一个长向量。向量的每一维表示一个词语,维度对应的权重表示该词在原文章中的重要程度。TF-IDF 计算公式。

    其中 $TF (t, d)$ 表示 $t$ 单词在文档 $d$ 中出现的频率。 $IDF (t)$ 表示逆文档频率。

  • N-gram: 单个拆分单词可能忽略到连续单词表示的信息。 $n-gram$ 则表示组合连续的词语为一个特征。

  • 主题模型:从文本库中选择具有代表性的主题(得到每个主题上次的分布特性)。并且计算每篇文章的主题分布。

  • 词嵌入和深度学习模型:词向量化模型的统称。核心思想是将每一个词映射成低纬度空间上的一个稠密向量。

5. Word2Vec 是如何工作的?它和 LDA 有什么区别和联系?


  • CBOW 是根据上下文出现的词语来预测当前词的生成概率。Skip-gram 则是根据当前词预测上下文中各个词的生成概率。激活函数使用 $softmax$。

  • 由于 CBOW 和 Skip-gram 中激活函数存在归一化的缘故,每次迭代过程非常缓慢。 产生 Hierarchical Softmax 和 Negative Sampling 两种改进方法。

  • Hierarchical Softmax 改机思路: 在 CBOW 和 Skip-gram 的最后一个 softmax 相当于一个多分类。它需需要对语料库中每个单词(类)计算指数概率并计算归一化,在几十万词汇量的预料是非常消耗的。

    • 首先根据词频构造 Huffman 树,每个词都处于树上的某个叶子节点。词频较大的词语出现在浅层的中,较小的出现在较深的叶子节点。
    • 将原本的 $|V|$ 分类问题转变为 $\log|V|$ 个二分类问题(本质上是一个 LR 分类器)。
  • Negative Sampling: CBOW 框架的简单原理,负采样遍历到每一个目标词,然后让目标词的概率 $P (w_t | c_t)$ 最大,由 softmax 公式原理,让分子中 $e^{(w_t)^T\cdot x}$ 最大,分母中其他非目标词 $e^{(w_i)^T \cdot x}$ 最小。

    • softmax 的计算量大是因为它将所有其他非目标词语都当做了负样本。
    • 负采样的思想,每次按照一定概率随机采样一些词当负例。
    • 将原本的 $|V|$ 分类问题变成了 K 分类问题。
  • LDA: 利用文档中单词的共现关系对单词按主题聚类。将”文档 - 单词 “ 拆解为 “ 文档 - 主题 “ 和 “ 主题 - 单词 “两个概率分布。( 一文详解 LDA 模型)

    • 二项分布:每次概率投掷只有 0 or 1 两种值,重复 n 次比较最后的结果

    • 多项式分布:每次投掷都有概率为 $p_1, p_2, …, p_n$ 种可能。

    • 共轭先验分布:先验分布 $p(\theta)$ 和后验分布 $p(\theta | x)$ 满足同样的分布律,则它们叫做共轭分布。

6. 图像分类任务中,数据不足可能产生的问题?如何缓解数据量不足带来的问题?


  • 数据不足会带来过拟合问题:通过简化模型(非线性模型变为线性模型),添加参数约束项缩小假设空间(L1/L2 正则化),集成学习,Dropout(降低)参数。

  • 根据先验知识,在保持特定信息前提下,扩充数据集。

    • 一定程度内的旋转,平移,裁剪,反转等。
    • 对像素添加噪声扰动,椒盐噪声,高斯白噪声等。
    • 颜色变换,RGB 颜色空间进行主成分分析。
    • 改变图片亮度,清晰度、对比度和锐度等
  • 生成对抗网络

  • 借助其他模型或数据进行迁移学习。(基于大数据上的预训练的通用模型,在该小数据上 fine-tune)。

  • AUC 指标一般不会随着正负样本比例变化,而 AUPC 和 P-R (Precision-Recall) 曲线则会受到正负样本比例的影响。

  • 欧式距离体现了数值上的 绝对差异 ,余弦距离体现了方向上的 相对差异

    • 当去判断为 A 和 B 两个用户在观看类型的向量时候 A(0, 1), B(1, 0),此时 余弦距离 > 欧式距离,而此时更加关注用户对不同视频的喜好,关注相对差异,应该使用余弦距离。

    • 当分析用户活跃度, 使用登陆次数和观看时长作为特征。A(1, 10), B(10, 100),此时 余弦距离 < 欧式距离。但是应该使用欧式距离,更加关注与绝对差异。

7. 超参数有哪些调优方法?


  • 网格搜索: 它通过查找搜索范围内的所有点来确定最优值。缺点是非常需要消耗资源和时间。实际应用中网格搜索法一般先使用较为广的搜索范围和较大步长寻找全局最优值可能的位置,然后在缩小范围和步长进行精确查找。

  • 随机搜索:在搜索范围随机选择样本点。理论依据,如果样本点足够多,那么随机采样很大概率可以找到全局最优解或近似解,它比网格搜索更快。

  • 贝叶斯优化算法:对目标函数进行学习,找到目标函数向全局最优值提升的参数。缺点是容易陷入局部最优值。

8. 集中降低过拟合和欠拟合风险的方法?


  • 降低 “过拟合” 风险的方法。

    • 获得更多的训练数据。

    • 降低模型的复杂度(NN 减少网络层数,决策树降低树的深度、进行剪枝操作)。

    • 正则化方法(L1 / L2 正则化)。

    • 集成学习方法: 多个模型集成在一起,降低单个模型的过拟合风险。

  • 降低 “欠拟合” 风险的方法:

    • 添加新的特征。

    • 增加模型的复杂度。

    • 减少正则化系数。

9. SVM


  • svm 中两类分类点在超平面上的投影是线性不可分的

  • $R^d$ 空间中的某个点 $p \in R^d$ 到超平面 $w^T \cdot x + b = 0$ 的距离为 $\frac{|w^T \cdot p + b|}{||w||}$ (点 p 到超平面的距离等于 p 与超平面上某点想超平面的法向量的投影)

  • 间隔 $\gamma$ 的定义: 间隔表示距离超平面最近的样本到划分超平面距离的两倍。
    $\gamma := 2min_i \frac{|w^T \cdot x_i + b|}{||w||}$

  • 定理 3:线性支持向量机的目标, 找到一组合适的 $w, b$,使得

  • 定理 4:若 $(w^, b^)$ 是线性支持向量的一个解,那么对于任意的 $r>0$ 仍然是该优化问题的解。因此为了简化优化问题,我们约束 $(w, b)$ 使得 $\min\limits_i|w^T\cdot x_i + b| = 1$

  • 定理 5 (线性支持向量机基本型):根据定理 3, 4 推导

    转化为:其中在支持向量上的点取到等于符号

  • 定义 6 拉格朗日函数,对于优化问题

    拉格朗日函数形式为:

  • 推理 7. 结合定理 5 和 6,优化公式:

  • KKT 条件(推理 7)描述的优化为题在最优值处必须满足如下条件:

    • 主问题可行: $g_i(u) \leq 0, h_j(u) = 0$。

    • 对偶问题可行: $\alpha_i \geq 0$;

    • 互补松弛条件: $a_ig_i(u) = 0$;

  • 对偶问题(推理 7 优化的对偶问题), 且对偶问题是主问题(推理 7)的下界。

  • 线性支持向量机的拉格朗日形式:

    其对偶问题为:

  • 线性支持向量机的对偶问题等价于找到一组合适的参数 a, 使得。

    根据内层对 $(w, b)$ 求导,然后令偏导等于 0, 得到(w, b)的最优值。

  • 线性支持向量机的 KKT 条件:

    • 主问题可行: $1 - y_i(w^Tx_i + b) \leq 0$

    • 对偶问题可行: $a_i \geq 0$

    • 互补松弛: $a_i (1 - y_i(w^Tx_i + b)) = 0$

  • 引理 1: 线性支持向量机中,支持向量是距离划分平面最近的样本,落在最大间隔边界上。
    由 KKT 条件:

    • $a_i > 0$ 时候,$1 - y_i(w^Tx_i + b) = 0 \to y_i(w^Tx_i + b) = 1$

    • $a_i = 0$ 时候, $1 - y_i(w^Tx_i + b) < 0 \to y_i(w^Tx_i + b) > 1$

  • 引理 2: 支持向量机的参数 $(w, b)$ 仅由支持向量决定,与其他样本无关(只有 $a_i > 0$ 样本有效)。

  • 常见核函数:

      1. 当特征维度 d 超过样本数,使用线性核。
      1. 当特征维度 d 较小,样本数 m 中等时,使用 RBF 核。
      1. 当特征维度 d 较小,样本数 m 较大时,svm 性能不如神经网络。
name experssion 优点 缺点
线性核函数 $k(x_i, x_j) = x_i * x_j$ 有高效实现,不容易过拟合 无法解决非线性可分问题
多项式核函数 $k(x_i, x_j) = ((x_i * x_j) + 1) ^ d$ 比线性核更一般,d 描述了被映射空间的复杂度 参数多,d 很大时计算不稳定
高斯核函数(RBF) $k(x_i, x_j) = exp(- \frac{(x_i-x_j)^2}{2{\delta}^2})$ 只有一个参数,没有计算不稳定问题 计算慢,过拟合风险大
sigmoid 核函数 $k(x_i, x_j) = tanh(\eta + \theta)$ 实现的是一种多层神经网络
  • 软间隔: 前面的公式都是假设样本完全是线性可分的(虽然理论上总能找到一个高维映射使数据线性可分。但是实际任务中找到这样的核函数是非常难的)

  • 软间隔支持向量机基本类型(离散型):在优化间隔的同时,允许分类错误的样本出现,但是这类样本需要尽可能少。

    $C$ 是个可调节参数用于权衡优化间隔的超参数。

  • 软间隔支持向量机基本型(连续型):为了使优化函数问题保持为二次规划问题,引入连续值变量(松弛变量 $\xi_i$ ) 用以度量样本违背约束的程度。

    • 当 $y_i(w^T\phi(x_i) + b) \geq 1$, $\xi_i = 0$

    • 否则, $\xi_i = 1 - y_i(w^T\phi(x_i) + b)$ (hinge loss)

  • 软间隔支持向量机对偶型:其对偶问题等价于找到一组合适的 a, 使得

  • 软间隔支持向量机的拉格朗日函数:

    对偶问题:

内层对 $(w, b, \xi)$ 求导并令偏导等于 0.

坚持原创技术分享,您的支持将鼓励我继续创作!