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))

得到的拟合图形如下:


1 0
原创粉丝点击