概述

KNN

K Nearest Neighbor: 一个样本最相似的 K 个样本中大多数都属于某一个类别,则该样本也属于这个类别

流程

分类流程

  1. 计算未知样本到每个训练样本距离
  2. 训练样本根据距离排序
  3. 取距离最近的 K 个训练样本
  4. 进行多数表决,统计 K 个样本中哪个类别样本更多
  5. 未知样本归属到出现次数最多的类别中

回归流程

第 1-3 步同分类流程

  1. 把这 K 个样本目标值计算求平均值即为未知样本的值
  • K 值过小:过拟合,会受到异常点影响
  • K 值过大:欠拟合,模型简单,极端例子,K=样本数量

距离

欧式(L2)距离:$d_{12} = \sqrt{\sum_{k=1}^{n}{(x_{1k} - x_{2k})^{2}}}$

曼哈顿(L1)距离:$d_{12} = \sum_{k=1}^{n}{|x_{1k} - x_{2k}|}$

切比雪夫距离:$d_{12} = \max_{k}{|x_{1k} - x_{2k}|}$(相较于曼哈顿可以斜着走)

闽可夫斯基距离 Minkowski:$d_{12} = \sqrt[p]{\sum_{k=1}^{n}{|x_{1k} - x_{2k}|^{p}}}$,上述距离的总结,p=1 时,为曼哈顿距离;p=2 时,为欧式距离;p=∞ 时,为切比雪夫距离。

数据预处理

归一化:对原始数据变换把数据映射到$[mi, mx]$之间。$x’ = \frac{x - min}{max - min}, x’’ = x’ * (mx - mi) + mi$,$max, min$为数据集的最大最小值。(小数据集处理,容易受最大最小值影响)

标准化:对原始数据进行标准化,转换为均为 0,标准差为 1 的标准正态分布的数据。$x’ = \frac{x - mean}{\sigma}$, $mean$为特征平均值,$\sigma$为特征的标准差。(大数据集处理)

超参数选择方法

交叉验证:一种数据集的分割方法,将训练集划分为 n 份,一份做验证集,其他 n-1 份做训练集

如下例子,分成 4 份,每份做验证集做四次训练测试,取四次测试结果平均值

网格搜索:模型有很多超参数,能力也有差异,每种超参数都采用交叉验证评估,最后选择最优参数组合。

线性回归

利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)关系进行建模的一种分析方式

$$ h_{(w)} = w_1x_1 + w_2x_2 + \cdots + b = w^{T}x + b, w^{T} = [b, w_1, w_2, \cdots], x = \begin{pmatrix} 1 \ x_1 \ x_2 \ \vdots \end{pmatrix} $$

损失函数

均方误差(MSE):$J(w) = \frac{1}{m}\sum_{i=1}^{m}{(h_{(w)}^{(i)} - y^{(i)})^{2}}$

平均绝对误差(MAE):$J(w) = \frac{1}{m}\sum_{i=1}^{m}{|h_{(w)}^{(i)} - y^{(i)}|}$,反应真实的平均误差。

均方根误差(RMSE):$J(w) = \sqrt{\frac{1}{m}\sum_{i=1}^{m}{(h_{(w)}^{(i)} - y^{(i)})^{2}}}$,放大误差的数据对指标影响,对异常数据敏感。

正规方程

$$ w = (X^{T}X)^{-1}X^{T}y $$

梯度下降(GD)

$$ w = w - \alpha \frac{\partial J(w)}{\partial w} $$

$\alpha$ 通常在 0.001~0.01 之间,$\alpha$ 越小,收敛越慢,$\alpha$ 越大,收敛越快,但可能错过最优点。

全梯度下降 (FGD):每次迭代都使用整个训练集,计算量大,收敛慢。例如:

$$ w = w - \alpha \frac{1}{m}\sum_{i=1}^{m}{(h_{(w)}^{(i)} - y^{(i)})x^{(i)}} $$

随机梯度下降 (SDG):每次迭代只使用一个样本,计算量小,收敛快,但结果不稳定。例如:

$$ w = w - \alpha (h_{(w)}^{(i)} - y^{(i)})x^{(i)} $$

小批量梯度下降:每次迭代使用一部分样本,计算量适中,收敛速度适中,结果稳定。例如:

$$ w = w - \alpha \frac{1}{b}\sum_{i=1}^{b}{(h_{(w)}^{(i)} - y^{(i)})x^{(i)}}, 1 < b < m $$

梯度下降和正规方程的对比:

对比维度 梯度下降 正规方程
是否需要学习率 需要选择学习率 不需要学习率
求解方式 需要迭代求解 一次运算得出,一蹴而就
应用场景 普适性强,迭代计算方式,适合嘈杂、大数据场景 小数据量场景、精准的数据场景
缺点 - 计算量大;易受噪声、特征强相关性的影响
注意事项 在各类损失函数(目标函数)求解中大量使用;深度学习中参数常达上亿规模,仅能通过迭代求最优解 1. $X^TX$的逆矩阵不存在时,无法求解
2. 计算$X^TX$的逆矩阵非常耗时
3. 数据规律非线性时,无法使用或效果差

正则化

  • L1 正则化:$J(w) = MSE(w) + \lambda \sum |w_i|$,使权重趋向于 0,甚至为 0,使某些特征失效
  • L2 正则化:$J(w) = MSE(w) + \lambda \sum w_i^2$,岭回归,使权重趋向于 0,但不会为 0

$\lambda$为惩罚系数,值越大,权重调整服务越大