机器学习-逻辑回归-2019-11-22

在展开之前,先看看之前学习了哪些东西:

1. 二元分类(Binary Classification)

 ,

当不知道D是否线性可分的时候,需要有 做pocket演算法,当Y=/sign(WX)进行修正。当pocket演算法跑了足够久,就可以认为Ein(Wt)足够小,h=g

此时可以判断的种类,有“是”, “非”

2. 线性回归

判断Ein最小的方法,用最小二分法

 对=0,可以得到closed form. , 是d+1维的。其中

此时可以判断的种类,有“多少”

但是,还有一类是二元分类和线性回归解决不了的,那就是,发生的概率。这时,需要使用的是逻辑回归

==============================Recap 结束====================================

和线性回归解决的问题一样,逻辑回归解决的是一个或多个特征输入对输出的影响。但是,输出只有在[0,1]。

例如,这时,有单个X判断,对Y的影响。理想情况下,P(Y|X)是一个分数,例如0.6

但是,实际是,我们能看到的,是有Noise的情况下,P(Y|X)对发生还是没发生的判断,即Y=+1,或者是-1。在某些情况下,当出现的概率超过门限值本应该判定为+1的,却由于Noise,判定为-1

 当y=+1

,当y=-1

逻辑回归函数: 在[0,1]之间,f(x)是不知道的。使用 来描述h(x),并且使h(x)能够描述f(x).

并且

===========================逻辑回归曲线=================================

那么对于h(x)的Ein是个什么样子呢?这里用到最大似然值。

这里我们假设,h(x)会模拟f(x)。则有两方面的优势

     1. 可以用h(x)来代替f(x)。用已知代替未知

     2. 可以用泰勒展开,将f(x)用h(x)进行求一阶,甚至多阶倒数,当N无穷大时,f(x)=h(x)

flikelihood (h)=P(x1)h(x1) * P(x2)(1-h(x2))*P(x3)(1-h(x3))....*P(xN)(1-h(xN))

                          =P(x1)h(x1) P(x2)h(-x2)*P(x3)h(-x3)....*P(xN)h(-xN)

当判断正确的时候,用+1,当判断错误的时候,用-1。这时,可以将+/-1 用yn来表示

                           =P(x1)h(y1x1) P(x2)h(y2x2)*P(x3)h(y3x3)....*P(xN)h(yNxN)

                                     

这时,要找到一个最好的h,接近f(x)

                                   

上面的这个公式,面临的2个问题不好解决

1. 求最大值。但是可以用求最小值的方式,变换一下。max= - min

2. 级联。但是可以用连加的方式变换一下,即ln 

求 

之前学Linear Regression的时候,对于求Ein的最小是对Ein求倒数。看Ein是否可倒

这时,可以得到:

使得:=0

第一种情况,,那么 ,那么Yn和WX必须是同号,Yn线性可分

第二种情况,就是=0。这是比较普遍的情况。但是并不是一个closed form,Yn和WX可能同号,可能异号。异号时,说明h转的角度比较大/小,那么下一次转的角度,需要调整。这类似于pocket演算法。让pocket跑足够久,认为Ein (t+1)最小。

即:

由于W也是一个向量,有方向和大小。为了简化方便,暂时将。代表方向,

根据泰勒展开式:

将固定,先考虑。

,即长度为1。那么方向呢?方向应该朝着增长方向(斜率的)反方向时,Wt+1才能朝着谷底的方向滚动

这时,固定,考虑。一般考虑

当坡度大时,步长可以大些,效率高;当坡度小时,步长可以小些,防止错过最佳解。而 表示斜率的大小。

这里定义 正比于, 变大,则表示斜率偏大,可以移动的幅度则变大。这里的就是图上紫色的

fixed learning rate gradient descent:

总结下:

逻辑回归要计算 Y在[0,1]之间,逻辑函数 ,推到过程中用到了最大似然值

然后用到梯度下降gradient descent: 每次更新都更新 

当跑了足够多的时,可以认为 , 并把Wt+1作为最终解带入g

这种方法和pocket的思想很像

你可能感兴趣的:(机器学习-逻辑回归-2019-11-22)