![33bd09546b10e0ba30e45ee8b615ef6f.png](https://img-blog.csdnimg.cn/img_convert/33bd09546b10e0ba30e45ee8b615ef6f.png)
本文知识点:
- 什么是逻辑回归?
- 逻辑回归为什么用 sigmoid 函数?
- 逻辑回归为什么用极大似然函数?
什么是逻辑回归?
当预测目标是概率这样的,值域需要满足大于等于0,小于等于1的,这个时候单纯的线性模型是做不到的,因为在定义域不在某个范围之内时,值域也超出了规定区间。
![50bd3eb56e58c24ed1ed3f84a9b0a674.png](https://img-blog.csdnimg.cn/img_convert/50bd3eb56e58c24ed1ed3f84a9b0a674.png)
所以此时需要这样的形状的模型会比较好
![6603048f8d6f2647efd4cdc70f5ec284.png](https://img-blog.csdnimg.cn/img_convert/6603048f8d6f2647efd4cdc70f5ec284.png)
那么怎么得到这样的模型呢?
这个模型需要满足两个条件 大于等于0,小于等于1
大于等于0 的模型可以选择 绝对值,平方值,这里用 指数函数,一定大于0
小于等于1 用除法,分子是自己,分母是自身加上1,那一定是小于1的了
![c8a99238e7e652c24fd7490438beacc5.png](https://img-blog.csdnimg.cn/img_convert/c8a99238e7e652c24fd7490438beacc5.png)
再做一下变形,就得到了 logistic regression 模型
![4051d0ba0905274eccfbe95a50973319.png](https://img-blog.csdnimg.cn/img_convert/4051d0ba0905274eccfbe95a50973319.png)
通过源数据计算可以得到相应的系数了
![be465c638d1dac03f5a2aa8e3083148d.png](https://img-blog.csdnimg.cn/img_convert/be465c638d1dac03f5a2aa8e3083148d.png)
最后得到 logistic 的图形
![889c8fa3856b68de45fe274b896e3683.png](https://img-blog.csdnimg.cn/img_convert/889c8fa3856b68de45fe274b896e3683.png)
逻辑回归为什么用 sigmoid 函数?
假设我们有一个线性分类器:
![ec6d408eebb1cd867d3522ebb47b914f.png](https://img-blog.csdnimg.cn/img_convert/ec6d408eebb1cd867d3522ebb47b914f.png)
我们要求得合适的 W ,使 0-1 loss 的期望值最小,即下面这个期望最小:
![1db64e78c885b5114ae7ed187e62968c.png](https://img-blog.csdnimg.cn/img_convert/1db64e78c885b5114ae7ed187e62968c.png)
一对 x y 的 0-1 loss 为:
![f6b415cac4f7569d42d683f0704a9ad5.png](https://img-blog.csdnimg.cn/img_convert/f6b415cac4f7569d42d683f0704a9ad5.png)
在数据集上的 0-1 loss 期望值为:
![913b49815be620a5d5f183777028ab6b.png](https://img-blog.csdnimg.cn/img_convert/913b49815be620a5d5f183777028ab6b.png)
由 链式法则 将概率p变换如下:
![1386a6a01a589d7da11e9f459c314616.png](https://img-blog.csdnimg.cn/img_convert/1386a6a01a589d7da11e9f459c314616.png)
为了最小化 R(h),只需要对每个 x 最小化它的 conditional risk:
![a53bb759ab34c2c6a9cabd83f610051b.png](https://img-blog.csdnimg.cn/img_convert/a53bb759ab34c2c6a9cabd83f610051b.png)
由 0-1 loss 的定义,当 h(x)不等于 c 时,loss 为 1,否则为 0,所以上面变为:
![1c3f1eb19534441743c5b695b97d63d1.png](https://img-blog.csdnimg.cn/img_convert/1c3f1eb19534441743c5b695b97d63d1.png)
又因为
![29731e4e07e45a7a32a989656b2cefdf.png](https://img-blog.csdnimg.cn/img_convert/29731e4e07e45a7a32a989656b2cefdf.png)
所以:
![29d15bb07b6a49ccd0c577b64e536cf6.png](https://img-blog.csdnimg.cn/img_convert/29d15bb07b6a49ccd0c577b64e536cf6.png)
为了使 条件风险 最小,就需要 p 最大,也就是需要 h 为:
![fb3ce67587d3c7c4b2f638f350a16ccf.png](https://img-blog.csdnimg.cn/img_convert/fb3ce67587d3c7c4b2f638f350a16ccf.png)
上面的问题等价于 找到 c*,使右面的部分成立:
![4b97dd9f9b9813190770d8484a3d6b29.png](https://img-blog.csdnimg.cn/img_convert/4b97dd9f9b9813190770d8484a3d6b29.png)
取 log :
![97f02fd51e31c6540ae1783a4a24cce3.png](https://img-blog.csdnimg.cn/img_convert/97f02fd51e31c6540ae1783a4a24cce3.png)
在二分类问题中,上面则为:
![56e075b9a02a6e46897bcb2a7330eba4.png](https://img-blog.csdnimg.cn/img_convert/56e075b9a02a6e46897bcb2a7330eba4.png)
即,我们得到了 log-odds ratio !
接下来就是对 log-odds ratio 进行建模,最简单的就是想到线性模型:
![423c29c04be1645d13ca8d69d8bc9391.png](https://img-blog.csdnimg.cn/img_convert/423c29c04be1645d13ca8d69d8bc9391.png)
则:
![e4f8cbf8569b05d6ca90a67c151b4a93.png](https://img-blog.csdnimg.cn/img_convert/e4f8cbf8569b05d6ca90a67c151b4a93.png)
于是得到 sigmoid 函数:
![4fcdd51479342bf002051643e1b240bf.png](https://img-blog.csdnimg.cn/img_convert/4fcdd51479342bf002051643e1b240bf.png)
由此可见,log-odds 是个很自然的选择,sigmoid 是对 log-odds 的线性建模。
逻辑回归为什么用极大似然函数?
Logistic regression 用来解决二分类问题,
它假设数据服从伯努利分布,即输出为 正 负 两种情况,概率分别为 p 和 1-p,
目标函数 hθ(x;θ) 是对 p 的模拟,p 是个概率,这里用了 p=sigmoid 函数,
所以 目标函数 为:
![3c154570ce4e3db3dddcdb1259b6f35d.png](https://img-blog.csdnimg.cn/img_convert/3c154570ce4e3db3dddcdb1259b6f35d.png)
损失函数是由极大似然得到,
记:
![c44e93dd7571ec88abd033521234e941.png](https://img-blog.csdnimg.cn/img_convert/c44e93dd7571ec88abd033521234e941.png)
则可统一写成:
![a88f03fbadc87d49fc26401c1848e40b.png](https://img-blog.csdnimg.cn/img_convert/a88f03fbadc87d49fc26401c1848e40b.png)
写出似然函数:
![724fb875b1cba19f07bf811526061e51.png](https://img-blog.csdnimg.cn/img_convert/724fb875b1cba19f07bf811526061e51.png)
取对数:
![99ce92e88b5f642ce6c88aa57690f0b2.png](https://img-blog.csdnimg.cn/img_convert/99ce92e88b5f642ce6c88aa57690f0b2.png)
求解参数可以用梯度上升:
先求偏导:
![c4780708fe2139f6a4f52a75dde5ee02.png](https://img-blog.csdnimg.cn/img_convert/c4780708fe2139f6a4f52a75dde5ee02.png)
再梯度更新:
![08d97e97c7147819e5f7089c3aca9dab.png](https://img-blog.csdnimg.cn/img_convert/08d97e97c7147819e5f7089c3aca9dab.png)
常用的是梯度下降最小化负的似然函数。
那么为什么逻辑回归要使用极大似然函数呢?
- 因为我们想要让 每一个 样本的预测都要得到最大的概率,即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.
- 对极大似然函数取对数以后相当于对数损失函数,由上面 梯度更新 的公式可以看出,对数损失函数的训练求解参数的速度是比较快的,而且更新速度只和x,y有关,比较的稳定。
- 为什么不用平方损失函数呢,如果使用平方损失函数,梯度更新的速度会和 sigmod 函数的梯度相关,sigmod 函数在定义域内的梯度都不大于0.25,导致训练速度会非常慢。而且平方损失会导致损失函数是 theta 的非凸函数,不利于求解,因为非凸函数存在很多局部最优解。