传统机器学习算法(线性回归 逻辑回归)

Anarkenker Posted on 2025-05-28 141 Views


本文没有具体的代码实现, 具体的代码实现见https://github.com/Anarkenker/Algorithm.git

传统的机器学习算法主要分为三种类型 监督学习 无监督学习 半监督学习
这篇文章我们所讨论的线性回归模型和逻辑回归模型都属于监督学习的范畴, 监督学习指的是使用有标签的数据进行训练, 目标是建立输入与输出映射关系的一种算法。监督学习又分成两个大类, 一个是回归算法,另一种是分类算法首先,我们来介绍一下线性回归模型

一、线性回归模型(Linear regression)

线性回归模型是通过构建一条直线来拟合数据集的, 其中有两种方式来描述数据集, 一种是类似于画一个坐标系, 另一种则是数据表。通过将训练集提供给学习算法让他产生一个模型 f 在一元线性回归中模型可以表示为

f(x)w,b=wx+b

但是这样我们并不了解这个模型拟合的这么样, 我们需要借助 成本函数 来查看这个模型拟合的如何 一元线性回归的成本函数表示为

J(w,b)=12mi=1m(fw,b(x(i))y(i))2

有些时候也会将其扩大二倍, 但是是否扩大二倍对结果并不会产生显著影响另一种写法就是

J(w,b)=12mi=1m(y^iyi)2

使用的是平方误差成本函数,它的 损失函数(Loss Function)

loss=L(fw,b(x(i)),y(i))=1mi=1m12(f(x(i))y(i))2

其中 y^ 是模型的预测值 (y^iyi)2 这是误差, 你可以把它想象成一个等高线, 最低处就是我们要的效果, 我们可以通过 梯度下降 来实现成本函数的降低。

w=wαJ(w,b)w

这里 α 是学习率

J(w,b)w=1mi=1m(fw,b(x(i))y(i))x(i)J(w,b)b=1mi=1m(fw,b(x(i))y(i))

接着我们通过循环下面这一过程来实现梯度下降

tmpw=wαJ(w,b)wtmpb=bαJ(w,b)bw=tmpwb=tmpb

在实际的情况下我们肯定不止一个特征, 如果我们有 n 个特征的话我们的模型方程就会变成

fw,b(x)=w1x1+w2x2+...+wnxn+b

我们可以用两个行向量来简化这个方程,一个向量表示特征, 另一个向量来表示权重

w=[w1,w2,...,wn]x=[x1,x2,...,xn]

从而用向量相乘表示出

f(x)x,b=wx+b

向量化可以让代码看起来更加简洁,同时可以提升代码的运行速率 (通过调用numpy库)
在多元线性回归中

tmpw(i)=w(i)1mi=1m(fw,b(x(i))y(i))x(i)

将所有系数都进行梯度下降
各个特征的大小各不相同, 为了在训练模型的时候保证各个特征更加均衡,提升模型的收敛速度和效果。我们采取 特征放缩 的方法, 常见的特征放缩的方法有
1、均值归一化(Mean normalization)
通过减去均值并除以取值范围,将特征缩放到 [1,1] 左右。

x=xμxmaxxmin

其中 μ 是特征的均值,xmaxxmin 分别是最大值和最小值。
均值归一化可以让特征的均值变为 0,并且缩放到一个较小的范围,有助于提升模型训练的效率和稳定性。

2、标准化(Z-score Standardization)
标准化后的数据服从均值为 0,标准差为 1 的标准正态分布
$$
x' = \frac{x - \mu}{\sigma}
$$
其中 μ 是均值,σ 是标准差。
标准差(Standard Deviation,记作 σ)是衡量一组数据离均值远近程度的统计量。它反映了数据的离散程度或波动大小。
计算公式如下:

σ=1ni=1n(xiμ)2

其中:

  • xi 表示第 i 个数据,
  • μ 表示所有数据的均值,
  • n 表示数据的总个数。
    标准差越大,说明数据分布越分散;标准差越小,说明数据越集中在均值附近。

使用特征放缩的前提:只要特征的取值范围远大于或远小于 [1,1],就建议进行特征放缩,使所有特征处于相近的尺度,有利于模型训练和收敛。

判断算法是否收敛的方法
在使用梯度下降法训练模型时,我们通常需要判断算法是否已经收敛。常见的检查方法有:

  1. 观察成本函数(Cost Function)变化
    每次迭代后记录损失函数 J(w,b) 的值,并绘制成曲线。如果损失函数随着迭代次数不断减小,并最终趋于平稳(变化很小),说明梯度下降已经收敛。
  2. 设置阈值
    如果损失函数的变化量 |Jk+1Jk| 小于某个很小的阈值(如 104),可以认为已经收敛。
  3. 观察参数变化
    如果每次迭代参数 wb 的更新幅度非常小,也可以认为已经收敛。

多项式回归 fw,b(x)=w1x11+w2x22+...+wnxnn+b 可以让你的模型更加拟合但是也容易导致过拟合, 解决过拟合可以通过 1、增加训练数据 2、减少特征的数量 3、正则化(通过修改多项式模型的项数, 这是一种更加温和的解决过拟合的方法) 。这里我们重点说一下正则化
正则化的成本函数为:

J(w,b)=12mi=1m(fw,b(x(i))y(i))2+λ2mj=1mwj

然后我们可以通过梯度下降来使得它的系数下降, 从而降低一些特征的影响

J(w,b)w=1mi=1m(fw,b(x(i))y(i))x(i)+λmwj

梯度下降的过程和上面所写的一样

二、逻辑回归模型(Logistic regression)

逻辑回归是一种用于解决二分类问题的统计模型。它通过将线性回归的结果输入到Sigmoid函数中,将输出值限制在0到1之间,从而可以解释为概率。线性回归与逻辑回归的区别 线性回归:用于预测连续值。逻辑回归:用于预测离散值(通常是二分类问题)。
Sigmoid函数的公式为:

g(z)=11+ez

它将任何实数值映射到0到1之间。将 z=wx+b 带入

f(w,b)=11+ewx+b

然后线性回归模型的 损失函数

loss=L(fw,b(x(i)),y(i))=1mi=1m12(f(x(i))y(i))2

逻辑回归模型的损失函数(Loss Function)定义为:

L(fw,b(x(i)),y(i))=y(i)log(fw,b(x(i)))(1y(i))log(1fw,b(x(i)))

这里的y(i) 决定了这个使用那个函数,于是成本函数(cost function)是

J(w,b)=1mi=1my(i)log(fw,b(x(i)))+(1y(i))log(1fw,b(x(i))

它对 bw 的偏导数与线性回归模型相同, 正则化的方式也相同

This author has not provided a description.
Last updated on 2025-05-29