机器学习之归一化
- 1.目的
- 1.1损失函数求解问题
- 1.2 归一化目的
- 2. 归一化
- 2.1 最大值最小值归一化
- 2.2 标准化
1.目的
1.1损失函数求解问题
- 线性回归Loss函数梯度公式
参数 | 含义 |
---|---|
θ \theta θ | 函数参数 |
α \alpha α | 学习率 |
x j i x^i_{j} xji | x:数据集,i:样本,j:特征 【数据集的每一行是一条样本,每一列是一个特征】 |
z ( θ j ) z_{(\theta_{j})} z(θj) | 预测值 |
y i y^i yi | 真实值 |
θ j : = θ j − α ∗ ∂ L o s s ( θ ) ∂ θ j : = θ j − α ∗ ( z ( θ j ) − y i ) ∗ x j i \begin{aligned} \theta_{j}&:=\theta_{j}-\alpha*\frac{\partial Loss_{(\theta)}}{\partial \theta_{j}} \\&:=\theta_{j}-\alpha* (z_{(\theta_{j})}-y^i)*x^i_{j} \end{aligned} θj:=θj−α∗∂θj∂Loss(θ):=θj−α∗(z(θj)−yi)∗xji
-
对参数求偏导【求梯度】如下:
θ 1 : = θ 1 − α ∗ ( z ( θ 1 ) − y i ) ∗ x 1 i θ 2 : = θ 2 − α ∗ ( z ( θ 2 ) − y i ) ∗ x 2 i \begin{aligned} \theta_{1}&:=\theta_{1}-\alpha* (z_{(\theta_{1})}-y^i)*x^i_{1} \\\theta_{2}&:=\theta_{2}-\alpha* (z_{(\theta_{2})}-y^i)*x^i_{2} \end{aligned} θ1θ2:=θ1−α∗(z(θ1)−yi)∗x1i:=θ2−α∗(z(θ2)−yi)∗x2i- 对于损失函数初始参数时,参数值期望是均值为0方差1的正太分布随机在0附近的,所以每个初始参数值大小是差不多的。
- 根据公式可知 α ∗ ( z ( θ 1 ) − y i ) \alpha* (z_{(\theta_{1})}-y^i) α∗(z(θ1)−yi)值也差不多,即参数迭代的快慢就由 x j i x^i_{j} xji【特征值的大小】决定的
- 假设 x 1 i x^i_{1} x1i特征为年龄, x 2 i x^i_{2} x2i特征为收入,由于年龄的取值范围远小于收入, x 1 i x^i_{1} x1i< x 2 i x^i_{2} x2i,则 θ 2 \theta_{2} θ2迭代速度快于 θ 1 \theta_{1} θ1,导致 θ 2 \theta_2 θ2达到最优解时,需要等待 θ 1 \theta_1 θ1迭代到最优解
-
图像说明
- 在机器学习算法模型中,需要根据损失函数(Loss)求梯度根据损失求最优解参数 θ \theta θ
- 如图,对于loss损失的最优解在中心点
- 迭代参数路线如图蓝色线所示,当 θ 2 \theta_2 θ2迭代到最优解时, θ 1 \theta_1 θ1距离最优解的距离还有一段距离,导致 θ 2 \theta_2 θ2达到最优解时,需要等待 θ 1 \theta_1 θ1迭代到最优解,会导致 θ 1 \theta_1 θ1在最优解的位置慢慢震荡,不能同时获取最优解
1.2 归一化目的
- 归一化可以把数据统一到某个范围,达到梯度下降求参数迭代速度一致,统一每个特征的范围,即无量纲化【就是去单位】
- 如图,对参数进行归一化后, θ 1 \theta_1 θ1与 θ 2 \theta_2 θ2迭代速度一致,可以同时求得最优解,同时收敛,减少迭代次数,模型速度加快
2. 归一化
2.1 最大值最小值归一化
参数 | 含义 |
---|---|
j | 特征 |
i | 样本 |
x j m i n x^{min}_{j} xjmin | 每个特征的最小值 |
x j m a x x^{max}_{j} xjmax | 每个特征的最大值 |
x i , j x_{i,j} xi,j | 特征的每个样本值 |
x i , j = x i , j − x j m i n x j m a x − x j m i n \begin{aligned} x_{i,j} &= \frac{x_{i,j}-x^{min}_{j}}{x^{max}_{j}-x^{min}_{j}} \end{aligned} xi,j=xjmax−xjminxi,j−xjmin
- 优点
- 会将数据归一化到0-1之间
- 缺点
- 容易受到噪点数据的影响,公式分母是最大值与最小值的差
- 如果存在最大值噪点,会导致分母值变大,大部分数据趋向于0,最大值噪点的值趋向于1
- 如果存在最小值噪点,会导致分母值变大,大部分数据趋向于1,最小值噪点的值趋向于0
from sklearn.preprocessing import MinMaxScaler data=[[1],[2],[3],[1000]] scaler=MinMaxScaler() data_fit=scaler.fit_transform(data) print(data_fit) # [[0. ],[0.001001],[0.002002], [1. ]] data=[[1],[1100],[1020],[1000]] scaler=MinMaxScaler() data_fit=scaler.fit_transform(data) print(data_fit) #[[0. ],[1. ],[0.92720655],[0.90900819]]
- 更新路线可能不是最优路线
- 当我们使用最大值最小值归一化时,会将数据集的值归一化到0-1之间,导致数据的值都为正
- 导致参数只能同时增大或减小 ,但是每个参数的关系并不都是正相关性
- 如图,我们希望参数 w t w_t wt迭代到 w ∗ w_* w∗,我们发现 w 2 w_2 w2迭代过程中在增大, w 1 w_1 w1迭代过程中在减小,由于我们将数值都归一化为正数,只能根据图中黑线迭代得到最优参数,不能通过最优路径【红色线】迭代,导致迭代次数增加
- 容易受到噪点数据的影响,公式分母是最大值与最小值的差
2.2 标准化
参数 | 含义 |
---|---|
x j m e a n x^{mean}_{j} xjmean | 特征均值 |
s t a n d a r d d e v i a t i o n standard \quad deviation standarddeviation | 特征方差 |
x i , j = x i , j − x j m e a n s t a n d a r d d e v i a t i o n \begin{aligned} x_{i,j} &= \frac{x_{i,j}-x^{mean}_{j}}{standard \quad deviation} \end{aligned} xi,j=standarddeviationxi,j−xjmean
- 公式分子为均值归一化,使数据有正有负,可以得到最优的迭代路线,使更新尽可能沿着最优解路径去。
- 公式分子为方差归一化,可以减小噪点数据的影响。