Machine Learning Foundations 10: Logistic Regression | Cheney Shen

Technology blog

Machine Learning Foundations 10: Logistic Regression


 
 

内容:

  1. 问题模型
  2. 推导Ein
  3. 找到 w 使得 Ein 最小
  4. 通过梯度下降法计算得到最小的 W

 
 


 
 

上一次介绍的是 linear regerssion,使用平方错误可以很方便的算出来最好的情况在哪里。

今天我们来看一下 logistic regression 可以用在哪些地方。

 
 


 
 

我们先来看看 学习流程图:

这里的例子还是医院的系统,我们用机器学习来判断病人有没有心脏病。

 
 

左上角说我们拿到的资料是有noise的,我们可以用一个target distribution来描述这个问题,对于这里的这个二元分类问题,target distribution会是一个理想的目标分类函数,就是把目标的分布是大于还是小于1/2,直接得出预测结论。

在这里我们在意的是 classification error,就是二元分类结论对不对。

 
 


 
 

类似的问题:如果我们想要知道的是病人两三个月后心脏病发的几率是多少。

表示:我们有兴趣的是一个 0-1 的值,不再是二元分类的结论,而是分类结果的可能性值。

 
 

这就是我们今天想要探讨的问题 soft binary classification。

 
 


 
 

我们今天要怎样做,才能找出一个好的hypothsis,来跟这个target function很接近。

 
 

我们想要输出的是 P(1|xi) 这个 0-1 的数值

我们需要的输入是 期望是直接有与x对应的P的值

剩下的事情就是找一个 hypothesis G,让资料的预测差异越小越好

 
 

事实上我们拿不到期望的输入,我们能有的是

譬如心脏病发这件事情,我们有的资料是: 以前的病人XX在过了几个月后 病发了还是没有病发,但是不会有他的资料是说他几个月后并发的概率是多少;对于所有的病人(单笔资料)都是得到这样的数据。

 
 

这样的资料和我们以前做 binary classification 的时候是一样的,我们手上有的是xxoo这样的01结论。

 
 


 
 

因此我们可以把手上的资料(上一页ppt的actual data:OOXX) 转换看作是 我们想要的资料的带 noisy 的版本(这一页PPT的actual data:0011 ),这样也就有0-1数值了,只是有noise。

 
 

我们今天要做的就是

输入是 OOXX 这样的 binary classification 结论的时候,如何去求解得到一个好的 hypothesis 来求解 P。

 
 


 
 

要得到一个好的 h,我们首先需要设定一下 hypothesis 的长相。

Feature 和以前一样表示为 xi, 有了这个以后可以算一个加权分数。

 
 

然后

我们今天有兴趣的不是这个分数本身(采用分数本身求解就是linear regression);

我们今天有兴趣的是得到一个0-1之间的值。

 
 

因此我们采用右图所示转换函数函数图:横轴是分数,纵轴是0-1。通过分数(可能是 -无穷 到 +无穷)来直接转换得到0-1的目标值。这个函数命名为 theta (logistic funtion)

 
 

因此我们下面看的就是如何找出一个 logistic hypothesis 来和我们的目标函数f接近。

 
 


 
 

最常用的logistic funtion长成这样(蓝色框所示,就是图中蓝色线一样的长相)。

 
 


 
 

小测验

 
 


 
 

图中三种模式对照

 
 

相同点:

使用权重数据来算分数

 
 

不同点:

Linear classification: 直接根据分数大于还是小于0来判断,error 就是分对还是分错(01值)

Linear Regression: 直接输出的就是分数,error 就是数值差的平方

Logistic Regression: 算完分数再透过一个logistic function来转换得到 0-1 的数值, error 会是什么?

 
 


 
 

来定义 error function 长什么样子。

 
 

我们来看 target function 可以写成上边黄色框内右边的结果。

然后我们来看假设我们有一笔资料集D(x0-xn),那这个资料产生的几率是多少? 就是粉色框内的结果和推到(f是我们不知道的,假装h来替代)。

 
 

因此得到的观念:

如果我们今天 h/f 很接近的话,那么 h的可能性/f的几率 也很接近

通常f产生这些资料的几率是很大的

 
 


 
 

因此根据上面的观念推演出:

g 就是可能性最高的那个h

 
 

另外对于 logistic regression,如图函数存在对称性,就是棕色框框公式所述。

 
 

因此对于原来的 likelihood(h):

P灰色部分对于所有的h来说都是一样的,不用在意。

不一样的是h/1-h的部分,可以根据对称性替换得到下一张PPT所示的结果。

 
 


 
 

因此得到:h可能性 正比于 h(ynxn)乘起来

 
 


 
 

因此我们来看这个正比公式:

可以把h换掉成w(权重),得到下一页所示

 
 


 
 

这里面出现的是连乘,取log去掉连乘,为了运算。

 
 


 
 

这里是max,我们希望能使minimize的动作,也是为了方便运算,如下页所示处理。

 
 

因此我们要做的就是 minimize 连加,就和以前的计算方式类似,我们就是要找一个w使得整个式子的结果最小。

 
 


 
 

我们把 theta 的公式代入式子,就可以做上面的推导。

 
 

Ein 部分就是把 Err(w, xn, yn) 累加结果。

 
 


 
 

小练习

 
 


 
 

上面已经推到得到了 Ein,剩下的问题是 我们怎么去找到一个 w 使得 Ein 最小。

 
 

之前我们讲到 linear regression 里面函数是平滑的 甚至是 convex 的,因此找到梯度为o的地方就是目标W。

 
 

这里 logistic regression 你去推到一下的话也会发现这个函数是 convex 的,这里就不推到了。因此同样我们要做的事情就是想办法找出谷底在哪里,就也是梯度为0的地方。因此下面就是算上面公示的梯度。

 
 


 
 

直接不能处理,就定义一些中间变量:这里就是定义 方块和圈圈

 
 

这个方法是解微分的基本方法之一,请看高等数学相关内容。

 
 


 
 

求解过程。

最终得到 Ein 的梯度。

 
 


 
 

因此下一步我们是不是就是去求解梯度为0呢?

 
 

但是你会发现:

Theta 全部都是 0 的话,那么Ein梯度就是0。

也就是说 Theta() 里面的东西都要是 -无穷,代表 ywn 相关部分就是要 正无穷;wx 是分数,y*分数 是正的代表同号,也就是说 w 是好的w,所有的都满足。

那就是说整体上要线性可分才会满足 theta 全部都是 0.

 
 

因此

Weight sum = 0

今天我们要解的是非线性方程式,要算出其谷底在哪里很困难,没有close-form solution。

 
 


 
 

我们回头到 PLA 方法里面找灵感:

 
 

PLA的特点就是从某一个出发,一步一步修正结果。

每次看看这个w在哪里犯了错误,然后从犯错的地方看怎么去修正,直到不用做更新。

 
 


 
 

为了后续方便讨论,我们把两个步骤简化成一个步骤:

 
 

随便取一个点,如果点是错的,则加上ynxn;如果点是对的,则加上0.

这和原来的两步是一样的内容。

 
 


 
 

这个更新的式子里面有两样东西:

  1. 更新的方向是什么 v
  2. 常数项:要在更新的方向走多远 n

 
 

对 (n, v) 做不同的改变就是不同的演算法,但是所有的统称为 iterative optimization approach.

下面会介绍一个特别的 iterative optimization approach.

 
 


 
 

小测验。

 
 


 
 

所以迭代优化要做的事情就是:找一个V,决定一个他要跨多大步出去,就这样一直的更新w,得到最好的w。

 
 

PLA 里面: v 来自于错误的修正,这里是离散的

Logistic regresiion 里面:这个是平滑的,我们能怎么做?

 
 

如图所示,假设我们把一个球放在山坡的某一个地方,让它自然的滚下去,我们知道他最终会停留在谷底,就是最佳解。而现在我们要做的就同样是找一个滚下去的方向来让他到达最佳位置。

 
 


 
 

一开始我们假设v长度是相对固定的1,然后我们想先跨一步最大的,就是能让我们的Ein一下子下降最多的,那么就是向最陡得方向跨一步。

 
 

那么这样的情况下:

仍然是非线性优化,而且还多了个条件,这样再做最佳化感觉上问题反倒变得更难了一些。

 
 

如何他这个问题变得容易呢?

目前我们学到的容易解的问题都是线性的问题,因此我们想办法把问题变成线性的。

我们来看上坡弧线,如果只专注一小段,则可以看作是直线,就是线性。如蓝色框框公式的约等于标识的情况那样,可以约等于 上个位置 + 梯度方向走了一个单位。(泰勒展开)

 
 

所以我们的问题就可以变成一个线性问题。我们要解决的是v在这样一个线性的式子里面取什么值是最好的。

 
 


 
 

所以怎么去求解呢?

上面公式灰色部分表示不是那么的重要,因为是常数而已。因此就变成了 v乘上一个我们已经知道的向量的结果 到底怎么会越小越好。

 
 

完全反方向的时候 值会最小!

所以得到蓝色框内的v的最佳解。

 
 

所以把最好的v代入就会得到w的变化的式子,解释就是从Wt开始向Wt的梯度反方向走一步。

这个方法就是 gradient descent

 
 


 
 

上面确定了我们要走的方向,接下来考虑我们一步要跨多远。

如果走的太小就如左图,慢

如果走的太大就如中图,不准

比较好的如右图,如果坡度比较大夸比较大的步伐,坡度比较小就跨比较小的步伐,比较有道理。

 
 

因此 步长 和坡度 因该是正相关。

 
 


 
 

如果步长和坡度成比例,你会发现原来的式子可以化简。这个方法叫做 fixed learning rate,就是最佳化的n。

 
 

我们最终要用的式子就是 黄色框内的公式

 
 


 
 

所以总结一下 logistic regression 方法:

 
 

从 W0 开始,每一步都是:

先算一下梯度是多少,然后向梯度的方向走紫色的n那么多路;

直到梯度接近为0的时候(或者走了足够的步数)停下,最终的Wn就是目标g。

 
 


 
 

小测验

 
 


 
 

总结:

介绍了 logistic regression,

从他的问题出发,他的问题是 输入是logistic function 输出是 P(1/x)

他的Error是 cross-entropy,如果我们要最小化他的error,我们就需要计算梯度,通过梯度下降的方法一步一步的得到最小的 Ein,就得到目标g。

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 


One Comment

Post a Comment

Your email address will not be published. Required fields are marked *

  • Categories

  • Tags