按照一定的精简形式整理机器学习相关算法,为了能够快速回忆,也帮助自己再一次梳理一遍算法。

1. 天下没有免费的午餐

  在机器学习领域,一个基本的定理就是“没有免费的午餐”。换言之,就是没有算法能完美地解决所有问题,尤其是对监督学习而言(例如预测建模)。当然,所选的算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。作为类比,如果你需要打扫房子,你可能会用到吸尘器、扫帚或是拖把,但你绝对不该掏出铲子来挖地。

2. 偏差和方差

  偏差描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,说明越偏离真实数值。

  方差描述的是预测值的变化范围和离散程度,即离其期望值的距离。

  模型的真实误差则是偏差和方差的和:

线性回归(Linear Regression)

  • 决策函数
    • 线性计算:
  • 损失函数
    • 平方损失:
  • 优化算法
    • 解析解直接计算:$\hat { w } = \left( \gamma \mathbf { I } + X ^ { T } X \right) ^ { - 1 } X ^ { T } y$
    • 逆不存在可以用梯度下降:
      1. 输入 $X$, $y$, 初始化权重 $w_0$
      2. 计算损失函数对参数 $w$ 的偏导并迭代更新
      3. 达到最大迭代次数,或者损失降低到一定程度退出
  • 优点
    • 实现简单,计算简单。
  • 缺点
    • 不能拟合非线性数据。
    • 对异常值非常敏感。

逻辑斯特回归(Logistic Regression)

  • 决策函数
    • $h(x) = {1\over{1+e^{-x^T w}}} = p$
  • 损失函数
    • 交叉熵损失:
  • 优化算法
    • 梯度提升算法:${\partial J \over \partial w} = -{1\over{m}} \sum_{i=1}^m\left( y_i - h(x_i)\right) x_i$
  • 优点
  • 缺点

支持向量机 (Support Vector Machines)

-w618

-w366

技巧性问题

如何解决过拟合问题?

  • 正则化

如何应对类别不平衡的问题?

算法表格汇总

算法 类型 是否支持多分类 决策函数 优化目标 求解算法
Adaboost 有监督
判别模型
非线性
不直接支持 $\begin{array}{l}{F(\mathrm{x})=\sum_{t=1}^{T} \alpha_{t} f_{t}(\mathrm{x})} \ {\operatorname{sgn}(F(\mathrm{x}))}\end{array}$ $\min _{F} \mathrm{E}(\exp (-y F(\mathrm{x})))$ 分阶段优化
公式解
           

References

  1. 机器学习算法优缺点对比及选择(汇总篇)
  2. 机器学习面试
  3. 贝叶斯思想以及与最大似然估计、最大后验估计的区别
  4. 我几乎面了所有知名公司的算法岗位