机器学习类别比神经网络大,经典的机器学习模型具有非常强的逻辑性、数学性和可解释性。本人选择用经典的LR模型作为机器学习的开篇!
本篇主要注重模型的构建和数学原理的推导,包括模型的评估的方法。代码部分放在另一篇文章探讨。

LR theory

一、来源:用标准线性回归模型得到一系列预测值,设置某参考阈值,将预测值二分类。但是这样分类导致两种问题1、如果预测值过于弥散,且混杂,阈值的设置将很难确定。2、设定阈值后没有数学依据建立合理损失函数,损失函数与标准的线性回归模型大相径庭无法准确修改线性模型参数。
解决方案:1、将预测值转换为概率,将其值压缩在0~1之间。2、利用概率的最大似然估计反过来确定模型参数。和我们上一篇文章softmax层选取思想有相似之处,大家可以对比。

二、LR模型的构建
来源于线性回归模型,我们首先给出标准的线性模型公式:

z=B0+B1X1+B2X2+B3X3+...+BiXi

logistic函数
image
其实这是一个简化版的logistic函数,他还有个名字叫sigmoid函数,多用在激活函数。

为什么选用logistic函数?

看他的函数分布图:
图片.png
上图也可以理解为logistics概率分布,数字越大越接近于1,数字越小越接近于0,典型两极分化,既然是两极分化作为分类再适合不过了。但这种样子的函数也挺多,为啥只找它?
1、数字越大概率变化越小,超大数据对模型的影响不会很大。什么意思呢,我举个好玩的例子:印度贫富差异大,可分为富人区和穷人区,我们以楼房的高度去预测楼房属于富人还是穷人。根据现实我们可以知道一般来说富人房子比较高,穷人一般小平房不过几层。那么区分点我们不做分析也想得到,也就大概区分度在5层左右,5层以上是富人,五层一下是穷人。如果现在有个超级大厦200层,按线性的计算他会大大影响模型判断,就会出现5层也是富人200层也是富人这种分类里面数据弥散。所以用logistic(),相当于对两级数据有惩罚,让他们对模型的影响小一点不要像线性那么大。
2、这个函数的倒数可以用它本身表示,方便后续的参数计算。
它的倒数为y(1-y)
三、损失函数构建
首先假设为二分类问题:y取值0和1。
列出概率公式:
图片.png

这里强调的是服从logistic分布概率分布。

损失函数:

损失函数为所有独立事件的联合概率。
为什么是联合概率呢?源自于重要数学前提-------

极大似然估计

一文搞懂极大似然估计
这篇文章讲的非常通俗易懂大家可以看一看。
我们首先列出‘损失函数’公式:
这里打上引号原因是,这里的的损失函数准确的讲是待优化函数,并没有关于y值的直接损失。
图片.png
如图所示:是关于参数B的待优化函数。也是极大似然估计联合概率的表达式。摘选于刘顺祥的书中截图。
我们这里简短的描述极大似然估计的数学含义:极大似然估计的目的在于估计,估计样本的真实概率。也就是说先验概率我们是不知道的,我们需要通过已有的样本表现去估计它的概率。怎么估计呢?就是求使样本联合概率最大化的先验概率值。这就非常简单了就是求个概率p使得联合概率最大,也就是求合适的参数B使损失函数最大化。
我们接下来对两边取对数简化一下损失函数:
图片.png
四、优化损失函数:
这就是一个多元函数求最大值问题,对每个参数求导并令其等于零求极值。
图片.png
求导之后发现面临1、计算复杂问题。2、需要带入所有样本。前一张的softmax层也提到过重要的解决思想就是随机梯度下降:
首先梯度下降是为了解决计算复杂的问题,随机梯度下降是为了解决需要带入大量样本的问题。
梯度下降优化算法:
梯度下降优化算法示意图
随机梯度下降是求目标函数的极小值,我们的目标函数是最大值所以我们需要对函数前面加上负号:
图片.png
接下来有个疑问,也是我想不太明白的问题,至今也没有好的解释,有大佬看见帮我解答一下。梯度下降算法是求极值问题,而不是最值问题,怎么才能确定我们求得极值是最小值呢?
本题适用于梯度下降优化算法我觉得是损失函数的对数处理,让直接让参数的所在项是一个单调函数,这样可以避免多个极值问题。但是对与参数和损失是高阶关系应该如何运用梯度优化算法呢?
图片.png

注意事项:

这里我们发现一个很有意思现象,在更新参数的时候每一步都得导入所有样本,并没有随机梯度下降。这里的主要原因是,损失函数定义是极大似然估计的联合样本乘积,不能狭义的用单个样本定义损失函数,这里只适合梯度下降不适合随机

至此LR理论的算法部分就完结了,下一篇将完善LR模型的评估与参数解释。


尹某某
1 声望1 粉丝

机器学习爱好者