逻辑回归模型分析
2015-07-21 20:40
483 查看
本文主要分两个部分进行讨论,首先介绍最简单的线性回归模型;接着对逻辑回归进行分析
1、线性回归-->最小二乘法
对于线性回归问题,我们根据自变量的个数将其分为一元线性回归和多元线性回归,本部分先详细介绍一元线性模型,然后将其推广到多元线性模型
1)一元线性模型
当输入只有一个自变量时,我们称之为一元线性模型。(最简单)
设样本集合为:(xi,yi),i=1,2,…,m。
目标为:在平面上找出一条线,使得样本点尽可能多的在这条直线上。
设一元线性模型为:h(x)=ax+b,输出误差为:Si=yi-h(xi)。
则样本的整体损失为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/c4a0e8145323041e3f6f19b2d38af18a.jpg)
为了让整体损失函数最小,我们使用最小二乘法。由于整体损失函数为凸函数,因而其极小值即为最小值。
先对a,b求偏导数,并令偏导为0。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/355fd085a7a28c057c2f28aca4f4a491.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/ec10112488ab614774d8d7d504fbbfd9.jpg)
整理得:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/9c27936fa519677f9da98a6a598d491b.jpg)
两个等式,两个变量,可以直接使用公式求得a,b。
参数a, b的计算方法见参考文献[2]。
2)多元线性模型
当输入的自变量有多个时,我们称之为多元线性模型。
设多元线性模型为:h(x)=a0+a1x1+a2x2+…+anxn
对单个样例的误差为:Si=yi-h(xi)
整体误差为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/fbae247f1e116b5fb02133863ff6b7b3.jpg)
对每个参数求偏导,并赋0:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/79822fa8dd90374eb04bb152c13b3c36.jpg)
有n个等式,n个变量,可以求得每个变量ai的值。
变量ai的计算过程见参考文献[2]。
2、逻辑(logistics)回归
逻辑回归可以进行二分类和多分类,下面分别进行讨论:
1)二项逻辑回归(二分类)
假如我们现在需要对一类物品进行二分类,首先根据物品的多个特征,然后将物品的多个特征进行线性组合,这和我们上面讨论的多元线性模型有点类似。只是我们现在不是需要拟合平面(空间)上的点,而是需要将平面(空间)上的不同类别的点区分开来。
多元线性模型为:h(x)=a0+a1x1+a2x2+…+anxn
我们可以直接使用多元线性模型来对物品进行分类,通过设置一个阀值,然后将所有h(x)大于阀值的样本分为一类,其他的分为另一类。但这种方式存在一个问题,由于h(x)的值是任意大小的,阀值的选择是一件困难的事情,若我们对其进行归一化处理,则阀值的选择就相对简单很多。
设阀值为:t,则
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/19b7611d1afe31f87b76655c105b5265.jpg)
为了方便表述,设:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/ca8dda50a04e08c4f7283198b77d2b28.jpg)
在此我们使用sigmoid函数对其进行归一化。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/134484fd558abb8b56c7b06b3f529817.jpg)
此时,若我们使用平方最小误差函数来估算参数,由于归一化后的函数为非凸函数,故而不能使用梯度下降法来找到其最小值。但我们使用极大似然估计的方法估计模型参数。
由于是二分类,可以设:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/b0d4f9dbc6984f314d42b45926cf507a.jpg)
所以似然函数为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/474a69a9bf34659599ab999f37381010.jpg)
对数似然函数:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/b9402f19f0602f559ea37ee70afba1c4.jpg)
对L(a)求极大值,得到a的估计值。为了能使用梯度下降算法,我们在对数似然函数前面加上负号,这样就可以求其最小值:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/8391912d4c1384b32447b48081aab8b3.jpg)
每次让参数a向对数似然函数的负梯度方向移动一小步。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/bc42a2d25ced63764baebf7ef6301e81.jpg)
//推导过程很简单,感兴趣的可以去看参考文献[2]
最后,对a的值进行更新:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/eddece80342971c55abc38e5df113633.jpg)
2)多项逻辑回归
上面介绍了二项逻辑回归,多分类的逻辑回归有点类似,假如类别共有K类,对于前面的k-1类使用下式进行计算:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/f4446b81814e8fbcac208c94600c3be4.jpg)
对于第K类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/90fa5891162b77a866fb99d3073d4a95.jpg)
总结
逻辑回归虽然有回归二字,但是它并不能处理回归问题,其主要用来进行二分类,当然也能进行多分类。其主要过程是将输入线性加权后再归一化到(0,1)这个区间内,其归一化使用sigmoid函数。
参考文献:
[1] peghoty, http://blog.csdn.net/itplus/article/details/10857843
[2] 李航,统计学习方法。
1、线性回归-->最小二乘法
对于线性回归问题,我们根据自变量的个数将其分为一元线性回归和多元线性回归,本部分先详细介绍一元线性模型,然后将其推广到多元线性模型
1)一元线性模型
当输入只有一个自变量时,我们称之为一元线性模型。(最简单)
设样本集合为:(xi,yi),i=1,2,…,m。
目标为:在平面上找出一条线,使得样本点尽可能多的在这条直线上。
设一元线性模型为:h(x)=ax+b,输出误差为:Si=yi-h(xi)。
则样本的整体损失为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/c4a0e8145323041e3f6f19b2d38af18a.jpg)
为了让整体损失函数最小,我们使用最小二乘法。由于整体损失函数为凸函数,因而其极小值即为最小值。
先对a,b求偏导数,并令偏导为0。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/355fd085a7a28c057c2f28aca4f4a491.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/ec10112488ab614774d8d7d504fbbfd9.jpg)
整理得:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/9c27936fa519677f9da98a6a598d491b.jpg)
两个等式,两个变量,可以直接使用公式求得a,b。
参数a, b的计算方法见参考文献[2]。
2)多元线性模型
当输入的自变量有多个时,我们称之为多元线性模型。
设多元线性模型为:h(x)=a0+a1x1+a2x2+…+anxn
对单个样例的误差为:Si=yi-h(xi)
整体误差为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/fbae247f1e116b5fb02133863ff6b7b3.jpg)
对每个参数求偏导,并赋0:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/79822fa8dd90374eb04bb152c13b3c36.jpg)
有n个等式,n个变量,可以求得每个变量ai的值。
变量ai的计算过程见参考文献[2]。
2、逻辑(logistics)回归
逻辑回归可以进行二分类和多分类,下面分别进行讨论:
1)二项逻辑回归(二分类)
假如我们现在需要对一类物品进行二分类,首先根据物品的多个特征,然后将物品的多个特征进行线性组合,这和我们上面讨论的多元线性模型有点类似。只是我们现在不是需要拟合平面(空间)上的点,而是需要将平面(空间)上的不同类别的点区分开来。
多元线性模型为:h(x)=a0+a1x1+a2x2+…+anxn
我们可以直接使用多元线性模型来对物品进行分类,通过设置一个阀值,然后将所有h(x)大于阀值的样本分为一类,其他的分为另一类。但这种方式存在一个问题,由于h(x)的值是任意大小的,阀值的选择是一件困难的事情,若我们对其进行归一化处理,则阀值的选择就相对简单很多。
设阀值为:t,则
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/19b7611d1afe31f87b76655c105b5265.jpg)
为了方便表述,设:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/ca8dda50a04e08c4f7283198b77d2b28.jpg)
在此我们使用sigmoid函数对其进行归一化。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/134484fd558abb8b56c7b06b3f529817.jpg)
此时,若我们使用平方最小误差函数来估算参数,由于归一化后的函数为非凸函数,故而不能使用梯度下降法来找到其最小值。但我们使用极大似然估计的方法估计模型参数。
由于是二分类,可以设:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/b0d4f9dbc6984f314d42b45926cf507a.jpg)
所以似然函数为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/474a69a9bf34659599ab999f37381010.jpg)
对数似然函数:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/b9402f19f0602f559ea37ee70afba1c4.jpg)
对L(a)求极大值,得到a的估计值。为了能使用梯度下降算法,我们在对数似然函数前面加上负号,这样就可以求其最小值:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/8391912d4c1384b32447b48081aab8b3.jpg)
每次让参数a向对数似然函数的负梯度方向移动一小步。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/bc42a2d25ced63764baebf7ef6301e81.jpg)
//推导过程很简单,感兴趣的可以去看参考文献[2]
最后,对a的值进行更新:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/eddece80342971c55abc38e5df113633.jpg)
2)多项逻辑回归
上面介绍了二项逻辑回归,多分类的逻辑回归有点类似,假如类别共有K类,对于前面的k-1类使用下式进行计算:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/f4446b81814e8fbcac208c94600c3be4.jpg)
对于第K类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/19/90fa5891162b77a866fb99d3073d4a95.jpg)
总结
逻辑回归虽然有回归二字,但是它并不能处理回归问题,其主要用来进行二分类,当然也能进行多分类。其主要过程是将输入线性加权后再归一化到(0,1)这个区间内,其归一化使用sigmoid函数。
参考文献:
[1] peghoty, http://blog.csdn.net/itplus/article/details/10857843
[2] 李航,统计学习方法。
相关文章推荐
- 什么是线程,线程与进程有什么区别?
- CoreDataDemo
- swift2 自动引用计数
- 大图轮播
- Node.js的线程和进程
- [DLX重复覆盖] hdu 3957 Street Fighter
- POJ 1185 炮兵阵地(状态压缩dp)
- SQL server 2008数据库的备份与还原
- Spring Quartz集群(二)
- 为什么你只是个码农
- vs2012连接sql2008(错误类型:Could not load file or assembly)
- 判断链表 有环
- 梅尔频率倒谱系数(MFCC)的提取过程与C++代码实现
- LeetCode 198 House Robber动态规划
- Learning how to learn - Diffuse mode thinking
- 数据库练习题26-45题
- Android 4.0屏蔽式多点触摸
- (好文)Log4j输出格式控制--log4j的PatternLayout参数含义
- poj 1088/2111 滑雪(经典dp/字典序输出)
- iOS初学者