概述
KNN
K Nearest Neighbor: 一个样本最相似的 K 个样本中大多数都属于某一个类别,则该样本也属于这个类别
流程
分类流程:
- 计算未知样本到每个训练样本距离
- 训练样本根据距离排序
- 取距离最近的 K 个训练样本
- 进行多数表决,统计 K 个样本中哪个类别样本更多
- 未知样本归属到出现次数最多的类别中
回归流程:
第 1-3 步同分类流程
- 把这 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$为惩罚系数,值越大,权重调整服务越大
