LOGISTIC REGRESSION的讲解与实现

2016-03-19 18:35:50

本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议

好了,这次我们开始讲logistic regression,这个东西其实很玄幻,首先他虽然叫回归,但并不是类似线性回归那用做预测的,而是拿来做分类的

然后这个东西,在andrew ng的machine learning课上,一开始我是感觉听懂了,但是实质到了实战,就一脸递归懵逼,而在《机器学习实战》书中,对这个算法的实现一笔带过,当时我就震惊了,这怎么玩,之后查了大量资料才知道这东西是怎么做的

首先要讲的是梯度上升法:

梯度上升法


这个是一个优化算法

首先呢,你先要有一个函数:f(x1,x2......)=a1x1+a2x2+....anxn+an+1

pic

把它画出来就是这样(别吐槽,我用在线html5画板鼠标画的)

然后,我们希望找到他的局部最优解,最下降的解法,那么我们肯定是用f 对于 某个 xn的微分了

函数的微分:

pic

然后将他乘上一个步长a,这样,原值加上步长,那么这个点就会向最低点移动,最后迭代很多次后,就会到达最低点了,以为最低点的微分为0

pic

这样,就可以这么跑了

pic

类似这样,就会一点点的靠近最低点,这里的步长a要取小一点

pic

因为取大了的话,会这样:

pic

这样不断迭代,就可以取得最优解

pic

LOGISTIC模型


首先,按照andrew ng的说法,你必须找到你的h(x),显然,该函数的输出必须是两个值(分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:

pic

你要表达的是,是与不是,而这个函数,输入的数要么接近于一,要么接近于令,当他取零时,得到值0.5

在andrew ng的课程中,你的h(x)是能分开两者的,类似:

pic

或者

pic

这也就是说,你的h(x)是能把数据的分类概率作为你回归的标准,一步步地进行回归操作,最后得到一个概率分布的线

那么我们的h(x)就这么定:

pic

得到:

pic

这样,你就得到了概率分布的曲线,将每个值带入h(x)能得到最终“正确”或“否定”的概率:

pic

按照之前我们做线性回归的例子:

构造一个cost函数,让cost函数与h(x)相减,使这个函数的微分最小,那么得到的就是最优化的h(x)

所以最后,经过数学推到,我们得到我们的cost function:

pic

为了带进梯度上升算法,我们必须对cost function进行求导:

pic

最后我们可以得到我们要做梯度上升算法的式子:

pic

也就是:

pic

好的,只要我们不断迭代这个式子,我们就可以找到最优化的logistic的概率分布曲线

其实对于logistic,最麻烦的是要理解他的概率分布,之前我们的做分布,通过欧式距离来建立数据的关系,然而对于logistic,我们用的是概率来计算发生和不发生这两种状态

所以比较麻烦,现在给出《机器学习实战》里面的例程:

它是直接使用numpy,使用向量去做的,所以很多细节,需要大家脑补,不过,整个数学推到的算法是在前面的这些:

#sigmoid函数

def sigmoid(inX):

    return 1.0/(1+exp(-inX))


def gradAscent(dataMatIn,classLabels):
    dataMatrix=mat(dataMatIn)
    labelMat=mat(classLabels).transpose()
    m,n=shape(dataMatrix)

    #步长a

    alpha=0.001

    #上升梯度算法的迭代次数
    maxCycle=1000
    weights=ones((n,1))

    for k in range(maxCycle):

        #得到与标准值的错误的概率

        h=sigmoid(dataMatrix*weights)

        #我们得到的公式

        error=(labelMat-h)
        weights=weights+alpha*dataMatrix.transpose()*error

    return weights

测试数据运行的结果:

pic

这里必须吐槽一下《机器学习实战》里面这里的讲解为无,当时看的一头雾水,最后是去看了andrew ng的课程,然后动手找了大量的资料才知道这个怎么弄,《统计学习方法》是本好书呀!!

图片来自:

  • andrew ng的machine learning公开课

参考资料:

  • 《机器学习实战》
  • 《统计学习方法》
  • andrew ng 的machine learning公开课
  • 洞庭之子博客

机器学习 返回首页

Designed and built with all the love in the world by the Mr.ALJUN.

@SERVER BY NGINX AND POWER BY DIGITALOCEAN.

© COPYRIGHT BY GAGASALAMER 2015