【Day 13】逻辑回归(Logistic Regression)(下)

Discriminative v.s. Generative

  • Logistic Regression的方法称之为 判别(Discriminative) 的方法。
  • 用Gaussian来描述事後机率(Posterior probability)这件事称之为 生成(Generative) 的方法。

实际上这两个方法的模型是一样的,只要是在做机率模型的时候把共变异数矩阵(Covariance matrix)设成一样的,它们的模型就会是一样的。
Discriminative可以透过梯度下降法直接把 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 的值找出来,而Generative就需要先找出 https://chart.googleapis.com/chart?cht=tx&chl=%5Cmu%5E1%2C%20%5Cmu%5E2%2C%20%5CSigma%5E%7B-1%7D ,再带入公式把 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 找出来。

要注意的是,虽然我们是使用同一个模型,但因为这两种方法的假设不同,所以最後找出来的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 也会不同。在Logistic Regression里面我们没有做任何假设,直接去找 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b,而在Generative model里面,我们对机率分布(Probability distribution)是有假设的,可能假设是Gaussian、Bernoulli或是假设是不是Naive Bayes等等,根据这些假设去找 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b,那这两个方法找出来的 https://chart.googleapis.com/chart?cht=tx&chl=w%2C%20b 不会是同一组。

从实验结果可以看出,Discriminative model会比Generative model好,但是为什麽会这样?

假设你有一笔训练资料,有两个class,每一笔资料会有两个feature,总共有13笔资料。

如果给一笔测试资料如下图,我们直觉会把它分类为 class 1,但Naive Bayes会把它分类成哪个类别呢?

https://chart.googleapis.com/chart?cht=tx&chl=P(C_1)%20%3D%20%5Cfrac%201%20%7B13%7D%2C%20P(C_2)%20%3D%20%5Cfrac%20%7B12%7D%7B13%7D
https://chart.googleapis.com/chart?cht=tx&chl=P(x_1%20%3D%201%7CC_1)%20%3D%201%2C%20P(x_2%20%3D%201%7CC_1)%20%3D%201
https://chart.googleapis.com/chart?cht=tx&chl=P(x_1%20%3D%201%7CC_2)%20%3D%20%5Cfrac%201%203%2C%20P(x_2%20%3D%201%7CC_2)%20%3D%20%5Cfrac%201%203

对Naive Bayes来说,它不考虑不同维度的相关性,也就是认定这两个维度是独立产生的。我们在 class 2 里面没有看到像是测试资料这样的资料是因为取样的不够多,如果取样过多就有可能可以看到都是 1 的资料。
因此,Generative model跟Discriminative model的差别就在於,Generative model有做某些假设,假设你的资料来自於一个机率模型。

但Discriminative model不是在所有情况下都可以赢过Generative model,下面列出了几点Generative model有优势的时候。

  • 如果训练资料很少,可以比较在同一个问题下,给予Discriminative model和Generative model不同量的训练资料,会发现Discriminative model会受资料量影响很大,因为它没有做任何假设,只要资料越来越多,它的error就会越来越小,而如果是Generative model,它受资料的影响比较小,因为它有自己的假设,所以在资料少的时候,Generative model有时候可以赢过Discriminative model。
  • 如果你的资料是noisy的,标记(Label)有问题的,那当有一些假设的时候反而可以把资料里面有问题的部分忽略掉。
  • 在Discriminative model中,我们是直接假设一个事後机率,然後去找事後机率里面的参数,但是在做Generative model的时候,我们把整个公式拆成Prior probability跟Class-dependent probability这两项的话,有时候会有帮助,因为它们可以是来自不同来源。以语音辨识为例,它的Prior probability是某一句话被说出来的机率,而你要估测某一句话被说出来的机率就只要去网路上爬很多的文字就可以计算,并不需要声音的资料。

多类别分类(Multi-class Classification)

下图是3个class的计算过程,从图中可以看出Softmax的输出就是拿来当作 https://chart.googleapis.com/chart?cht=tx&chl=z 的事後机率。

逻辑回归的限制

假设今天的资料如下图所示,我们就没有办法做分类。

这是因为逻辑回归的两个class之间的boundary是一条直线。

特徵转换(Feature Transformation)

我们可以将原本定的不好的feature换成一个比较好的feature space,让逻辑回归变得可以处理,但是我们很难找出一个好的transformation。

因此我们可以让机器自己产生好的transformation,我们只要把很多个逻辑回归接起来就可以了。

结论就是,如果我们只有一个逻辑回归,我们没有办法分类这个范例,但如果我们把三个逻辑回归接在一起,就可以分类了。那如果我们把每一个逻辑回归都叫做一个神经元(Neuron),把这些逻辑回归串起来所形成的网路(Network),就是所谓的类神经网路(Neural Network),也就是在做深度学习(Deep Learning)


参考资料

李宏毅老师 - ML Lecture 5


<<:  [Day11] 函式 function

>>:  D3JsDay11 观测时候别铁齿,拿出你的比例尺

由GCC了解C语言,学习笔记

gcc gcc 这边将介绍如何使用gcc将C语言程序码编译成可执行程序,以下将会介绍编译的过程,程序...

Day-1 : Hello Wali 起手式

说故事之前,不免俗先自我介绍一下,我叫瓦力, 我的本行是一位插画家,也是一位斜杠青年, 我来自一个很...

Day 11 利用 docker 安装 nginx 并配置 https

现今的浏览器如 Firefox, Google Chrome 多以将仅 http 的网站和连结标注为...

讯息是怎麽进到网际网路的(二)?区网内的装置:AP, Switch, Router

聊完了区网中设备与设备的连结後,我们来近距离看看这三大设备:AP, Switch 和 Router ...

DAY6-JAVA的函数

1.函数 在JAVA中,我们把函数称做method。 函数可用的语法如下: public stati...