回归算法是机器学习中的经典算法之一,本文是对学习线性回归和逻辑回归算法进行的总结,线性回归与逻辑回归算法解决的分别是回归和分类问题,结合梯度下降优化思想对算法参数进行求解。
以银行贷款业务来举例,银行是否发放贷款,属于分类问题;银行根据个人信息返回的发放贷款金额,属于回归问题。
1 线性回归算法
银行评估系统要做的是基于历史数据建立一个回归模型,只要有新数据传入模型,就会返回一个合适的预测结果。要做的是找到数据特征指标与贷款额度之间的关系,只要找到了这个合适的关系,问题就解决了。
1.1 线性回归方程
给出回归方程,找到合适的参数,问题就解决了。线性回归方程公式如下:
线性回归方程
1.2 误差项分析
在样本中,每一个真实值和预测值之间都会存在一个误差:
误差项公式
误差项之间相互独立且具有相同分布,并且服从均值为0、方差为θ^2的正态分布。
1.3 似然函数求解
什么是似然函数?
通过观察样本数据情况来选择合适的参数,从而得到与样本数据相似的结果。
基本思路是找到最合适的参数来拟合数据点,可以把它当作参数与数据组合之后得到与标签值相同的可能性大小。可能性越大越好,预测值与真实值越接近,回归方程越好。
因此有了极大似然估计:找到最好的参数θ,使其与x组合之后得到y的可能性越大越好。
误差项的正态分布表达式如下:
正态分布表达式
代入误差项公式后得到:
似然函数的定义:
似然函数
对式子作对数变换,求解使L(θ)最大的参数θ的极值点:
对数变换
1.4 线性回归求解
目标函数:
目标函数
计算偏导数,求极值:
求偏导
线性回归的结果可以当做一个数学上的巧合,恰好能得出这样一个值。但这和机器学习的思想却有点矛盾,机器学习是一个优化的过程,本质上是希望机器不断学习,找到最合适的参数,而不是一个直接求解的过程。
2 梯度下降算法
机器学习的核心思想就是不断优化寻找更合适的参数,当给定一个目标函数之后,要想办法使真实值和预测值之间的差异尽可能小。
把目标函数比作山的话,到底是上山还是下山,取决于你优化的目标是越大越好(上山)还是越小越好(下山)。
那么如何下山呢?有两个因素可以控制:方向和步长。
2.1 下山方向的选择
首先需要明确的是什么方向能够使下山速度最快,也就是当前位置梯度的反方向(目标函数J(θ)关于参数θ的梯度是函数上升最快的方向,对应于下山问题,就是梯度的反方向)。
当沿着梯度方向下山的时候,位置也在不断发生变化,所以,每前进一小步之后,都需要停下来观察一下接下来的梯度是什么方向,每次前进都沿着下山最快的方向也就是梯度的反方向。
2.2 梯度下降的优化
梯度下降算法的步骤:
1)找到当前最合适的方向(梯度);
2)走一小步,走得越快,方向偏离越多可能就会走错路;
3)按照方向与步长去更新参数;
4)重复以上步骤。
在梯度下降过程中,通常每一步都走得很小心,即每一步更新的步长要尽可能得小,才能保证整体的稳定,如果步长过大,可能会偏离合适的方向。
2.3 梯度下降策略对比
梯度下降算法中有三种常见策略:批量梯度下降;随机梯度下降;小批量梯度下降
这三种策略的基本思想都是一致的,只是在计算过程中选择样本的数量有所不同。
批量梯度下降
批量梯度下降需要考虑所有样本数据,每一次迭代优化计算在公式中都需要把所有样本计算一遍,该方法容易得到最优解,每一次迭代都会选择整体最优的方向。如果样本数量非常大,就会导致迭代速度非常慢。
批量梯度下降的计算公式:
批量梯度下降
在更新参数时取了一个负号,因为现在求解的问题是一个下山问题,即需要沿着梯度的反方向前进。
- 1/m 表示对所选择的样本求其平均损失,i表示选择的样本数据,j表示特征;
- 系数α的含义是更新幅度的大小,也就是步长
随机梯度下降
考虑批量梯度下降速度的问题,如果每次仅使用一个样本,迭代速度就会大大提升。
随机梯度下降存在的问题是,速度虽然很快,却不一定每一次都能朝着收敛的方向,因为只考虑一个样本有点太绝对了,如果样本是异常点或错误点可能会导致结果更差。
随机梯度下降的计算公式,它与批量梯度下降计算公式的区别仅在于选择样本的数量:
随机梯度下降
小批量梯度下降
批量梯度下降和随机梯度下降都太绝对了,要么选全部,要么选一个,如果在总体样本数据中选出一批会更好。
例如,选择10个样本数据进行更新:
小批量梯度下降
实际中最常使用的是小批量梯度下降,通常会把选择的样本个数叫做batch,也就是32,64,128。
2.4 学习率对结果的影响
可以认为步长就是学习率(更新参数值的大小),通常会选择较小的学习率以及较多的迭代次数。
正常迭代优化时的学习曲线走势:
学习曲线
随着迭代的进行,目标函数会逐渐降低,直到达到饱和收敛状态。
如果选择的学习率较大,学习过程可能会变得不平稳:
较大学习率的情况
在迭代过程中出现不平稳现象,目标函数始终没能达到收敛状态,甚至学习效果越来越差,这很可能是学习率过大或者选择样本数据过小以及数据预处理问题导致的。
学习率的选择是机器学习任务中非常重要的一部分,调参过程同样也是反复进行实验,以选择最合适的参数,通用的做法是从较小的学习率开始尝试,如果遇到不平稳现象,就调小学习率。
3 逻辑回归算法
逻辑回归本质上是一个经典的二分类算法,解决的是是否或0/1问题。有了线性回归的基础,只需要稍作改变,就能完成分类任务。
3.1 原理推导
判断一个输入数据是正例还是负例,如果把线性回归得到的得分值转换为概率值,会更容易理解。使用sigmoid函数,可以把线性回归结果处理成概率值:
sigmoid函数公式
sigmoid函数
sigmoid函数中自变量z可以取任意实数,其结果值域为(0,1),相当于输入一个任意大小的得分值,得到的结果都在(0,1)之间,恰好可以把它当做分类结果的概率值。
计算流程如下:
首先得到得分值,然后通过sigmoid函数转换为概率值:
对正负例情况分别进行分析:
将正负例合并起来:
3.2 逻辑回归求解
求解方式与线性回归是一样的。
首先得到似然函数:
取对数化简:
之前在最小二乘法中求的是极小值,自然用梯度下降,但是现在要求的目标是极大值(极大似然估计),通常在机器学习优化中需要把上升问题转化为下降问题,取目标函数的相反数即可。
此时,只需要求目标函数的极小值,按照梯度下降的方法,求偏导:
更新参数:
这样就得到了逻辑回归中每一个参数应该如何更新,求解方法依旧是迭代优化思想。找到最合适的参数θ,任务就完成了。
逻辑回归的优点:
1)简单实用,机器学习中并不是一味选择复杂的算法,简单高效才是王道;
2)结果比较直观,参数值的意义可以理解,方便分析;
3)模型简单,泛化能力强,更通用。
遇到分类问题,都是先考虑逻辑回归,能够解决问题根本不需要复杂算法。
学习资料:唐宇迪机器学习课程 第五章 回归算法














网友评论