机器学习笔记(2)

     来了来了!!书接上回,hym大概知道了构建模型的一个基本流程,现如今很多模型都是用的这样的模式。但是还是很容易感受到,我们构建的模型,好像离实际的应用还远的很,这是为什么呢?模型的构建流程如下


模型构建流程一般为:明确目标与数据收集→数据预处理(清洗、特征工程等)→选择算法与模型架构→模型训练→评估与调优→验证与部署。

    而我们上个模型在构建的时候,忽略了非常多的处理过程,但是不用担心,我们将在后面的学习中慢慢补充这些内容。

    首先,我们先关注数据的预处理。这里我们引入一个概念,叫做


                       特征缩放


特征缩放(Feature Scaling)是数据预处理的关键步骤,指通过数学变换将不同特征的取值范围调整到同一数量级,消除特征间尺度差异对模型的影响,确保算法性能不受特征绝对值大小或量纲干扰。

核心作用

  • 避免数值大的特征主导模型(如梯度下降优化时梯度方向偏差);

  • 提升基于距离计算的算法(如 KNN、SVM)准确性;

  • 加速模型训练收敛速度(如神经网络、线性回归)。

单单讲概念是枯燥的,我来举个例子给大家看看

        假设现在我们要买房子,想要收集关于房子的信息,假设房子的买点在与房子的大小,房子卧室的数量,我们这里假设卧室数量范围浮动在(1~10),房子大小范围浮动在(1~1000),房子价格根据这些来决定。现在网上有很多的诸如此类的数据,我们借助python爬取了出来做了一个数据集,然后我们利用之前看过的构建模型的方法,多线性回归进行拟合(这里我们假设线性相关),然后我们按部就班,生成对应的J函数关于向量W与b的等高线值图像,如下图1所示

图1

关于图1


1.等高线图的数学含义

  • J(W, b):表示代价函数(如均方误差 MSE),是关于权重 W 和偏置 b 的二元函数。

  • 等高线:图中每条曲线代表J (W, b) 值相等的点的轨迹,类似地图中的等高线(海拔相同的点连接成线)。

2. 等高线图的关键构成


     (1) 坐标轴

  • 横轴:通常表示权重参数 W(或 W₁、W₂等多维权重中的某一维)。

  • 纵轴:通常表示偏置参数 b。


     (2) 等高线形状

  • 圆形 / 近似圆形:当 W 和 b 的尺度相近时,等高线呈圆形,梯度方向直指最小值点,优化路径更高效。

  • 椭圆形 / 狭长形:当 W 和 b 的尺度差异大时,等高线被拉长,梯度方向倾斜,导致优化路径曲折(需多次迭代才能收敛)。


    (3) 颜色 / 线条密度

  • 颜色深浅:表示 J (W, b) 的值大小(如深色表示低代价,浅色表示高代价)。图1没表示清除,不用在意,一般是有颜色标记的,这里方便直接截取的视频中的图。

  • 线条密度:越密集的区域表示代价函数变化越快(梯度大)。


    (4) 全局最小值点

  • 等高线图的中心(最内层闭合曲线)对应 J (W, b) 的最小值点,即最优参数组合 (W*, b*)。

可以看到图1狭长,在进行对应的梯度下降时,会出现很大的问题。

        在偏导求值时,由于学习率相同,数据大小变化更快的一端偏导更大,下降速度远远大于小的一方,而让数据大的特征值更容易影响模型,而小的特征值对模型的影响很小。这样会导致学习率在放入的时候,很难找到合适的值,例如房子大小在0~1000,假设又有一个特征值在0~10000,诸如此类,那我们不得不根据数据变化最大的特征值进行调整学习率,防止学习率过大而使得发生梯度爆炸(Gradient Explosion)


梯度爆炸


参数剧烈震荡:梯度方向频繁反转,导致参数在最优解附近大幅跳跃,无法收敛。


损失函数发散:迭代过程中损失值持续上升或剧烈波动,模型性能急剧下降。


数值溢出:极端情况下,梯度值超过计算机浮点数表示范围,导致 NaN(Not a Number)错误。


原因
学习率过大时,参数更新步长超过最优解的 “邻域”,每次迭代都会跳过更优解,形成恶性循环。


        而同时小数值特征值对模型的影响也变得越来越小,使得模型拟合的速度大大下降。

        这显然不是我们想要见到的结果,那我们怎么解决呢?

        那我们就需要用到今天的重点了——特征缩放 

        我们通俗的称呼为归一化操作

        听这个名称我们就可以知道,就是我们数学学习的将大的数值数据变成一个小的数据而选择保持原数据之间的一些关系,例如数据之间的比例

        而恰恰我们在研究梯度下降时,只是需要数据之间变化的速率关系,可以说是类似比例的层面,而不是简单的数值大小关系。

        恭喜!你已经找到了一个解决方法,现在我们需要来找几个解决方案来实操了。

这里我列出几个方法,hym可以大概看看:

  • 最大值归一化:数据无负数,需缩放到 [0, 1],保留分布,对异常值敏感

  • 均值归一化:数据有正负值,需中心化且缩放到 [-1, 1],保留分布,对异常值敏感

  • Z-score 标准化:数据近似正态分布,需保留分布形状,保留分布,对异常值敏感

  • Min-Max 缩放:稀疏数据、已知边界数据,需严格缩放到 [0, 1],不保留分布,对异常值敏感

  • L1/L2 归一化:向量相似度计算(如文本分类),需消除向量长度影响,不保留分布,对异常值敏感

  • Robust 缩放:数据包含异常值,需消除向量长度影响,保留分布,不对异常值敏感

       在了解这些方法后,我们得知道归一化是用在哪些数据上的,首先前面讨论的是特征向量数据,那对于标签值y要不要呢?首先,可以肯定的是归一化最多用于具有连续值的y,然后再分析具体情况如下

ai->总结


线性回归、岭回归、Lasso:若特征已归一化,为保持尺度一致性,可对 y 归一化(但非必须,因模型会自动学习截距项)。


神经网络、支持向量机(SVM)回归:若输入特征归一化,输出 y 归一化可能加速训练收敛。

           终于是到了代码部分,使用的库和之前一样

          为了更加好展示数据数值大小在归一化和未归一化下的差距,直接对房子大小进行史诗级升级,来到1~50000平方米!有点大,hym忍受一下(bushi)。

数据data3.csv

           这是数据捏,房子还是蛮大的,房价。。。算了。。。

           模型的一些基础操作就不贴图了,先演示一下用牢模型结合不同的学习率看看效果展示一下效果

alpha = 0.001

alpha = 0.0001

alpha = 0.00001

alpha = 0.000001

alpha = 0.00000001

alpha = 0.00000001

alpha = 0.000000001

          666,烟斗不演了,可以看到,当学习率到十的负九次方才能正常工作。但是不用担心,归一化来喽。

          先用最大值归一化举例子

最大值归一化

归一化后构建模型,alpha为1

       看看结果吧!

归一化后,损失函数(alpha为1)

          可以看到学习率高到为1时,一样能正常工作,显然这种能非常方便更改alpha来调试模型的方法非常好。除此之外,我们还可以使用很多其他方法,这里举例几种

Min-Max缩放

Z-score 标准化

Robust 缩放

         学习率基本都在0.1~1左右,这里不展示具体代码,结果如下

Min-Max缩放

Z-score 标准化

Robust 缩放

         可以看到不同的归一化方法有不同的结果,对于不同的数据分布,总会有更适合的方法,所以没有什么方法好坏之分,只有适合与否。但无一例外,在这种归一化的方法下,我们能更好的处理更复杂数据的情形,构建模型时,更好的把握学习率的范围,便于调试

常用初次使用范围

  • 最大值归一化:0.01 到 0.1

  • 均值归一化:0.001 到 0.01

  • Z-score 标准化:0.0001 到 0.01

  • L1/L2 归一化:0.1 到 1

  • Robust 缩放:0.00001 到 0.001

         在之后,我们可以逐步扩大alpha值,一般是倍数增加,例如三倍,四倍,然后观察是否模型拟合更好,更快。

         除了速度与便于调试,在寻找极小值时,归一化也可以在一定程度上很好的避免陷入局部最小值,如之前未归一化,很可能出现一些局部最小值,而因为alpha值小,让数据数值小的特征值陷入在局部最小值中,从而失去最优解。我们可以对上诉模型都进行一万次迭代,观看结果

输出

        可以看到,第一个(未进行归一化)明显损失值大的多),而其他模型迭代后基本上损失值相同,说明都到达了真正的最小值点附近,而第一个有可能跳入了局部最小值,或者有可能是速度太小了,还需要更多的迭代,无论是哪一种,都足以证明归一化的优势所在!

所以在机器学习中,归一化基本上成为了不可或缺的操作。

        具体内容就这些了,欢迎hmy讨论分享,要是觉得鼠鼠写的对自己有帮助或者感兴趣,麻烦点点赞和转发,让更多人看到,谢谢大家。

如果你是初次看到,想要看更多内容,不妨点个关注,后续不定期更新。

        上个帖子疑似被限流了,刚发帖一个小时就1000浏览量,到现在才涨了50不到的浏览量,呜呜,其实无所谓了,能帮助到有需要的人,也是鼠鼠的荣幸了呀

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com