1.本文介绍
- 线性回归算法
- 梯度下降算法
- 逻辑回归算法
2.线性回归算法
假设某个人去银行贷款,银行会了解个人的基本信息,如年龄,工资等等,然后输入银行评估系统,以此决定是否发放贷款以及确定贷款的额度。在这里银行评估系统就是基于历史数据建立一个合适的回归模型,只要有新数据传入模型,就会返回一个合适的预测结果值。记工资、年龄用x1和x2表示,是所需数据特征的指标,贷款额度就是最终想要的预测结果,也叫做标签,用y表示。找到x1、x2和y之间的关系,就可以解决问题。
实际贷款金额由数据特征x1和x2共同决定的,需要确定x1、x2对y产生多大的影响。用来表示其影响( 用
表示权重项,对线性回归方程起到最核心的影响)。
表示年龄的参数,
表示工资的参数。可得其线性回归方程(预测结果所在平面):
为偏置项(对其做微调,使得方程的效果更好。),手动添加
这一项,使其值全部为1 即可。
误差分析:
为样本编号,真实值
与预测值
存在差异,有误差项
,即:
误差是服从独立同分布的,服从均值为0方差为
的高斯(正态)分布。
(当拿到一份数据集,建模之前肯定要进行重新洗牌操作,让各自样本的相关性最低。)
似然函数的求解:
误差项服从高斯分布,其表达式为 :
将代入上式,可得:
而似然函数就是通过观察样本数据的情况来选择最合适的参数,从而得到与样本数据相似的结果。对于上式, 基本思路就是找到最合适的参数来拟合数据点,可以把它当作是参数与数据的组合得到的跟标签值一样可能性大小。可能性越大,得到的预测值跟真实值越接近,意味着回归方程做的越好。就有了极大似然估计,找到最好的参数,使其与
组合后能够成为
的可能性越大越好。
则有似然函数:
其中,为当前样本,
为整个数据集样本的个数。
对上面的似然函数取对数,可得:
我们的目标是要求其极大值点,则需使越小越好。
线性回归的求解:
其目标函数如下:
要求极值(使其得到最小值的参数),对上式求偏导数可得:
这里要求矩阵可逆,计算对其求解。但是机器学习是一个优化的过程,而不是直接求解的过程。
3.梯度下降算法
机器学习的核心思想就是不断优化寻找更加合适的参数,但给定目标函数,想办法使真实值与预测值之间的差异越小越好。可以采用梯度下降算法(下山问题)。
只有最陡峭的道路,下山就会最快。也就是说当前位置梯度的反方向(目标函数J(θ)关于参数θ的梯度是函数上升最快的方向,是下山问题,故是反方向)。在梯度下降的过程中,每一步都走的非常小心,每一次更新的步长都要尽可能的小,这样可以保证整体的稳定性。步长过大,可能会偏离合适的方向。
对于优化目标函数:,找到最合适的参数θ(可以多个参数),使其目标函数值最小。只有参数θ对最终结果产生影响。在优化中,对于多个参数,在实际计算中,需要分别对这些参数求偏导,再进行更新。
步骤如下:
- 找到当前最合适的方向,对于每个参数都有各自的方向。
- 走一小步(若走的快,方向偏离越多,可能走错路)
- 安照方向与步伐去更新参数
- 重复以上操作
梯度下降策略有三种常见策略:
- 批量梯度下降:考虑所有样本数据,每一迭代优化计算在公式中都需要把所有的样本计算一遍,易得最优解,因为每一次迭代都会选择整体最优的方向。但样本数量若大,导致迭代速度慢。其计算公式如下:
即
在更新参数时取负号,取梯度相反的方向前进,其中
表示对所选择的样本求平均损失,
表示选择 的样本数据,
表示特征。比如
表示工资所对应的参数。
- 随机梯度下降:每次只使用一个样本,迭代速度加快,但是会导致结果更差。计算公式如下:
- 小批量梯度下降:选择一部分样本数据。一般会选取16,32,64,128这些总数,把选择的样本个数叫作batch.10个样本数据的计算公式如下:
除了对方向的选择,还有步长(学习率)的选择。通常会选取较小的学习率和较多的迭代次数。随着迭代的进行,目标函数会逐渐降低,直至达到饱和收敛状态。在迭代过程中出现不平稳的现象,目标函数始终没有达到收敛状态,很可能是学习率过大或者样本数据过小以及数据预处理问题所致。
4.逻辑回归算法
逻辑回归本质上是一个经典的二分类问题,即一般的0与1问题。在线性回归的基础上,只需稍作改变,就能完成分类任务。
回顾线性回归算法得到的结果:输入特征数据,输出一个具体的值,可以把输出值看做一个得分值。此时做分类问题,要判断输入数据是正例还是负例,比较各自的的分值,如果正例的得分值高,说明输入数据属于正例类别。这个得分值一般用概率值。
概率值的获取:利用Sigmoid函数定义如下:
自变量z取任意实数,其结果值域为[0,1]。
在判断最终分类结果时,可以选择0.5为阈值(根据实际情况)来进行正负例类别的划分,例如最终的结果为0.7,而0.7大于0.5,就归为正例。
首先得到得分值,再利用Sigmoid函数转换成概率值,公式如下:
x是特征数据,是每个特征所对应的参数。对正负例情况进行分析:
由于是二分类任务,当正例概率为,负例概率必须为
,对于标签的选择:y=1为正。y=0为负。可以将上式合并为:
。
逻辑回归的求解:
仍然用到似然函数:
上式两边取对数,化简,可得:
.
在最小二乘法中求极小值,自然用梯度下降,现在要求极大值,只需取目标函数的相反数即可:
,求其极小值即可,求其偏导:
下标表示样本,在迭代过程中选择的样本编号;下标
表示特征(参数)编号,参数
和数据特征是一一对应的关系。对
求偏导,最后得到的结果乘以
,这表明要对哪个参数进行更新需要用其对应的特征数据,而与其他特征无关。得到上面的偏导数,可对参数进行更新,公式如下:
。
参考文档:《跟着迪哥学Python数据分析与机器学习实战》