机器学习笔记-Logistic回归
来源:互联网 发布:网络推广专员薪资制度 编辑:程序博客网 时间:2024/05/21 22:41
回顾
Logistic Regression Problem
问题的提出
从一个人的身体数据来判断这个人有没有心脏病,这是一个典型的二元分类问题。Logistic Regression关注的是根据一个人的身体状况来给出可能心脏病发的概率。也就是说我们想要知道的是
所以我们要介绍的问题是:如果targer function是
Soft Binary Classification
我们想要得到的目标函数是
这样我们就可以找一个
Logistic回归的假设函数
同样的,对每一个样本
现在我们想要的并不是这个分数的大小(linear regression想要的是这个),我们想要的是一个0到1之间的数值。直观上分数
所以我们要做的就是找到一个logistic hyperthesis来和我们的target function很接近。
logistic函数
logistic函数:
logistic函数会把分数高的输出为1, 分数低的输出为0。
逻辑斯蒂回归从表面上看就是加了一个
来估计目标函数
logistic回归的损失函数
三种线性的模型的对比
现在将
在线性分类方法中,
似然函数likelihood
我们最终想要知道的,或者说目标函数, 是样本为正例的可能性,即
根据上面给出的等式可以定义:
(其中的
因为我们想要使用logistic函数
logistic function h 的一个性质:h(−x)=1−h(x)
根据以上的性质最大似然函数的表达式如下:
我们想要假设函数
极大化
进一步变换可以得到似然函数:
我们现在的目的就是极大化似然函数:
重写一下逻辑斯蒂函数:
θ(x)=11+exp(−x) ,
重写一下我们的逻辑斯蒂回归模型的假设函数:h(x)=11+exp(−wTx) (线性回归+logistic)
那么∏Nn=1h(ynxn)=∏Nn=111+exp(−ynwTxn)=∏Nn=1θ(ynwTxn)
我们的目标变为寻找参数
取
其中
所以
这里有一个概念
到这里我们就把想要极大化似然函数的目的变为要极小化
Gradient of Logistic Regression Error
最小化Ein
这里给出一个结果,函数
所以第一步就是求
- 首先对
Ein(w) 求导,即计算▽Ein(w) Ein(w)=1N∑n=1Nln(1+exp(−ynwTxn∘)□)
应用求导的链式法则对wi 求偏导∂Ein(w)∂wi=1N∑n=1N(∂ln(□)∂□)(∂(1+exp(∘))∂∘)(∂(−ynwTxn)∂(wi))=1N∑n=1N(1□)(exp(∘))(−ynxn,i)=1N∑n=1N(exp(∘)1+exp(∘))(−ynxn,i)=1N∑n=1Nθ(∘)(−ynxn,i)
可以得到:
- 求解使得梯度为0的
w want ▽Ein(w)=1N∑n=1Nθ(−ynwTxn)(−ynxn)=0
这里可以看到梯度是一个加权和,其中的权值为θ(−ynwTxn) 。一种情况是,该梯度要为0,那么所有的权值项都要为0。即θ(−ynwTxn) 都要为0。那么此时就要求−ynwTxn 非常小,即ynwTxn≫0 。所有的ynwTxn 都满足远远大于0(wTxn 和yn 同号),说明该数据必须是线性可分的。所以想要得到解析解是困难的。并且不同于linear regression ,在linear regression 中我们要求的是一个线性的方程式,但是这里是一个非线性的方程式,所以我们不可能可以得到类似与linear regression 的analytic solution 。
回顾下
即如果样本
其中的
question:
在梯度中:▽Ein(w)=1N∑Nn=1θ(−ynwTxn)(−ynxn) ,哪一个样本点的权重值是最大的。
answer:
ynwTxn 值最小的样本点。
why:
ynwTxn 的值最小,有可能是负值,也就是说此时的w 在这个样本点上是错的。即,犯错误的点会得到比较大的权重值。
梯度下降算法
iterative optimization要做的事情就是找一个合适的方向
for t=0,1,2,⋯
wt+1=wt+ηv
until stop,return w as g .
其中:v 是方向(为方便计算规范化为长度为1的向量),η 是步长。
logistics regression的
想要最快的到达谷底(达到
这样的好的方向怎么决定呢?
利用泰勒(Taylor expansion:简单理解为一条曲线可以在很小的范围内被一条直线近似的替代)展开,如果
这样的话,原来的问题:
所以现在的情况是:
因为
要使得该式子最小的最
即,梯度的负方向!
梯度下降
得到了最好的方向, 我们就可以对
即,往梯度的反方向走一小步。这个方法就是
如何选择步长
已经解决了更新的方向的问题, 现在我们考虑步长的问题。
对于
得到
逻辑斯蒂回归算法
现在我们得到了完整的
初始化
w0
For t=0,1,⋯
- 计算梯度
▽Ein(w)=1N∑n=1Nθ(−ynwTxn)(−ynxn) - 梯度下降更新权重
wt+1=wt−η▽Ein(wt)
⋯ 直到▽Ein(w)≈0 或者已经更新了足够多的步数
返回最新的wt+1 作为g 。
在每一个迭代步中,花费最大是计算梯度:所有的样本的
总结
这篇介绍了
参考
- 林轩田:机器学习基石
- 机器学习笔记-Logistic回归
- 机器学习笔记:Logistic回归
- 【机器学习笔记】logistic回归
- 【机器学习笔记1】Logistic回归总结
- 机器学习实战笔记5(logistic回归)
- 机器学习实战Logistic回归笔记
- 机器学习笔记—Logistic 回归
- 【机器学习笔记1】Logistic回归总结
- 斯坦福大学机器学习笔记(4)-logistic回归
- 【机器学习笔记1】Logistic回归总结
- 机器学习笔记之Logistic回归算法
- 机器学习笔记(四)Logistic回归
- 【机器学习笔记1】Logistic回归总结
- 【机器学习笔记】Logistic回归总结
- 机器学习笔记(四)之Logistic回归
- 机器学习实战笔记-Logistic回归
- 机器学习-Logistic回归
- 机器学习-logistic回归
- Android使用Intent
- chrome 调试小技巧
- Faster-rcnn voc数据集制作
- 关于 aws 免费使用12月注意事项
- Sprint读取配置文件内容格式的String
- 机器学习笔记-Logistic回归
- Spring(07)——单例注入多例之lookup-method
- 单例模式的解读以及和全局变量的区别
- zookeeper启动失败,zkServer.sh status 出错
- CString一些简单操作方法
- React/React Native 的ES5 ES6写法对照表
- 嵌入式软硬件协作简单例子分析
- 最终,还是没能成为吹牛逼的资本!(三)
- 解决AndroidStudio导入项目在 Building gradle project info 一直卡住