本文没有具体的代码实现, 具体的代码实现见https://github.com/Anarkenker/Algorithm.git
传统的机器学习算法主要分为三种类型 监督学习 无监督学习 半监督学习
这篇文章我们所讨论的线性回归模型和逻辑回归模型都属于监督学习的范畴, 监督学习指的是使用有标签的数据进行训练, 目标是建立输入与输出映射关系的一种算法。监督学习又分成两个大类, 一个是回归算法,另一种是分类算法首先,我们来介绍一下线性回归模型
一、线性回归模型(Linear regression)
线性回归模型是通过构建一条直线来拟合数据集的, 其中有两种方式来描述数据集, 一种是类似于画一个坐标系, 另一种则是数据表。通过将训练集提供给学习算法让他产生一个模型
但是这样我们并不了解这个模型拟合的这么样, 我们需要借助 成本函数 来查看这个模型拟合的如何 一元线性回归的成本函数表示为
有些时候也会将其扩大二倍, 但是是否扩大二倍对结果并不会产生显著影响另一种写法就是
使用的是平方误差成本函数,它的 损失函数(Loss Function) 是
其中
这里
接着我们通过循环下面这一过程来实现梯度下降
在实际的情况下我们肯定不止一个特征, 如果我们有
我们可以用两个行向量来简化这个方程,一个向量表示特征, 另一个向量来表示权重
从而用向量相乘表示出
向量化可以让代码看起来更加简洁,同时可以提升代码的运行速率 (通过调用numpy库)
在多元线性回归中
将所有系数都进行梯度下降
各个特征的大小各不相同, 为了在训练模型的时候保证各个特征更加均衡,提升模型的收敛速度和效果。我们采取 特征放缩 的方法, 常见的特征放缩的方法有
1、均值归一化(Mean normalization)
通过减去均值并除以取值范围,将特征缩放到
其中
均值归一化可以让特征的均值变为
2、标准化(Z-score Standardization)
标准化后的数据服从均值为 0,标准差为 1 的标准正态分布。
$$
x' = \frac{x - \mu}{\sigma}
$$
其中
标准差(Standard Deviation,记作
计算公式如下:
其中:
表示第 个数据, 表示所有数据的均值, 表示数据的总个数。
标准差越大,说明数据分布越分散;标准差越小,说明数据越集中在均值附近。
使用特征放缩的前提:只要特征的取值范围远大于或远小于
判断算法是否收敛的方法
在使用梯度下降法训练模型时,我们通常需要判断算法是否已经收敛。常见的检查方法有:
- 观察成本函数(Cost Function)变化
每次迭代后记录损失函数的值,并绘制成曲线。如果损失函数随着迭代次数不断减小,并最终趋于平稳(变化很小),说明梯度下降已经收敛。 - 设置阈值
如果损失函数的变化量小于某个很小的阈值(如 ),可以认为已经收敛。 - 观察参数变化
如果每次迭代参数和 的更新幅度非常小,也可以认为已经收敛。
多项式回归
正则化的成本函数为:
然后我们可以通过梯度下降来使得它的系数下降, 从而降低一些特征的影响
梯度下降的过程和上面所写的一样
二、逻辑回归模型(Logistic regression)
逻辑回归是一种用于解决二分类问题的统计模型。它通过将线性回归的结果输入到Sigmoid函数中,将输出值限制在0到1之间,从而可以解释为概率。线性回归与逻辑回归的区别 线性回归:用于预测连续值。逻辑回归:用于预测离散值(通常是二分类问题)。
Sigmoid函数的公式为:
它将任何实数值映射到0到1之间。将
然后线性回归模型的 损失函数 是
逻辑回归模型的损失函数(Loss Function)定义为:
这里的
它对
Comments 1 comment
3