在展开之前,先看看之前学习了哪些东西:
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的思想很像