logistic回归
来源:互联网 发布:三菱触摸屏怎么存数据 编辑:程序博客网 时间:2024/04/29 14:40
线性分类问题
我们看如下这幅图。两类样本直观地可以通过一条直线分隔。
这就是常见的线性分类问题。
用回归方法解决分类问题
分类问题是一种特殊的回归问题,其输出的预测为类标签。如果是0,1两类,则输出0为负类,1为正类。
我们把线性回归中的结果,直接做如下处理:
也就是把线性回归得到的结果,按照>,<0得到分类标签。在一维特征下,期望拟合到如下图形:
这就是简单的感知机模型。
很明显,这种函数不能求导。感知机模型很难用概率模型来推导出其数学依据,也不可能用概率模型来推导其代价函数。这种模型的求解困难,如果直接套上最小二乘的代价函数,却不能从概率上推导证明其合理性。
我们需要一个连接分类与回归的方法,这种方法是可解的。
这里讨论一个把分类转化为回归的方法:logistic回归。
Logistic函数
Logistic来自于人口增长的研究,类似高斯分布是自然界常见的分布规律,logistic也是类似的函数。
表达式如下:
函数图像如下:
我们观察到,logistic函数有则优良的性质,它平滑地从0变换到1,而且把负无穷-正无穷的x投影到[0,1]之间。
*编码时一开始在[-50,50]直接拟合,后来发现,logistic极度的两极分化特性,使得最后的图看起来一直没用logistic的感觉。如下是logistic函数在[-50,50]之间的图形:
如果是两类分类问题,我们可以用logistic把预测结果再做一次投影变换,从而得到[0,1]之间的结果。
如下:
Logistic函数还有个好的性质就是其导数形式:
不复杂且容易计算。
小结
使用logistic函数的优势:
1.[0,1]之间的映射
2.两极分化的特性
3.容易求导
接下来推导其数学依据以及求解方法,这也是感知机模型所不具备的。
概率模型
我们发现,logistic回归得到的是[0,1]之间的值,我们可以简单地把h(xi)看做yi=1的概率,也就是:
综合起来得到统一的公式:
接下来,写出样本事件(x1,x2,…,xn)发生的概率,也就是释然函数:
写成log形式,得到:
同样的,我们用下降法求解上述释然函数最大值的问题。
负梯度方向:
更新步骤:
类似简单的线性回归,我们可以使用统一计算的批下降算法,或者逐步更新的随机下降法,这里不再赘述。
我们发现,上述的求解形式与简单的线性回归是一样的,经证明,其均属于同一的数学模型类别。这个放在以后讨论。
Logistic回归matlab实现
初始样本由Y=3*X-2+noise生成后取Y>0的为1,得到01二值类标签。这里采用随机下降法求解:
clear;clc;X=[];X=[X,random('unif',-5,5,[1,100])];% X=[X,random('norm',-20,50,[1,50])];noise=random('norm',0,1,[1,100]);Y=3*X-2+noise;plot(X,Y,'*');for i=1:size(Y,2) if(Y(i)>0) Y(i)=1; else Y(i)=0; endendplot(X,Y,'*');hold on;sita=zeros(1,2);maxiter=200;a=0.01;min_J=-10000;J=[];for iter=1:maxiter for i=1:100 h=1/(1+exp(-(sita(1)*X(i)+sita(2)))); sita(1)=sita(1)+a*(Y(i)-h)*X(i); sita(2)=sita(2)+a*(Y(i)-h); end j=0; for i=1:100 h=1/(1+exp(-(sita(1)*X(i)+sita(2)))); j=j+Y(i)*log2(h)+(1-Y(i))*log2(1-h); end J=[J,j]; if(j<min_J) break; endendsita(1)sita(2)x=-5:0.01:5;y=1./(1+exp(-(sita(1)*x+sita(2))));plot(x,y);
得到的结果
Sita(1)=
3.2977
Sita(2)=
-2.1028
拟合得到的函数为:
Y=1/(1+e^-(3.2977X-2.1028))
得到的拟合图形如下:
- Logistic回归
- Logistic回归
- logistic回归
- Logistic 回归
- Logistic 回归
- logistic回归
- Logistic回归
- Logistic回归
- Logistic回归
- Logistic回归
- logistic回归
- Logistic回归
- logistic回归
- Logistic 回归
- logistic回归
- Logistic回归
- logistic回归
- Logistic回归
- A Brief History of FAST corner detector--FAST特征发展情况
- C++ const修饰函数、函数参数、函数返回值
- 多线程基础
- 世界是属于弱者的
- Slider和Scroll
- logistic回归
- C# webBrowser 模拟登陆填充操作等(写网页注册机之类的时候要用到)
- Nginx如何开启和配置gzip
- Linux设备驱动程序学习(0)-Hello, world模块
- linux下进程与线程绑核
- oracle多表联查对结果合并
- HDU 3038 How Many Answers Are Wrong
- javascript 原型链
- VS 2010智能提示没有了