分类

​x -> function -> Class n​

分类问题就是要找到一个函数使得给定输入能输出它所属的类别。

又以宝可梦为例,宝可梦有十八种属性:电、火等

李宏毅机器学习——概率分类模型_分类模型

比如输入是皮卡丘输出就是电。

如何分类

首先要收集训练数据

在二元分类模型(只有两个类别)中:

输入x,g(x) > 0 则 class1 否则 class2

那么损失函数可以这样定义:

李宏毅机器学习——概率分类模型_Sigmoid函数_02
也就是它的错误次数,越小说明这个函数越好。

下面通过概率论的知识来解决找到最好的函数问题。

李宏毅机器学习——概率分类模型_极大似然_03

给定两个盒子,从这两个盒子中随机抽一个球出来,它是蓝色的。
那么这蓝色的球从盒子1和盒子2中抽出来的几率分别是多少?

假设从盒子1中抽球的概率 李宏毅机器学习——概率分类模型_Sigmoid函数_04,从盒子2中抽球的概率李宏毅机器学习——概率分类模型_分类模型_05

并且盒子1里面蓝球的概率是李宏毅机器学习——概率分类模型_概率分类模型_06,绿球的概率是李宏毅机器学习——概率分类模型_分类_07
盒子2中蓝球的概率是李宏毅机器学习——概率分类模型_分类_08,绿球的概率是李宏毅机器学习——概率分类模型_Sigmoid函数_09

那么根据贝叶斯公式,可以计算出蓝球从盒子1中抽出来的概率是:

李宏毅机器学习——概率分类模型_Sigmoid函数_10

现在把盒子换成类别的话:

李宏毅机器学习——概率分类模型_分类_11

假设有两个类别Class1和Class2。

给定一个x,那么它属于哪个类别呢?
如果知道从Class1中抽x的概率李宏毅机器学习——概率分类模型_分类_12和从Class2中抽x的概率李宏毅机器学习——概率分类模型_分类_13

从Class1中抽到x的概率李宏毅机器学习——概率分类模型_分类模型_14以及从Class2中抽到x的概率李宏毅机器学习——概率分类模型_极大似然_15

那么可以计算x属于Class1的概率有多大:

李宏毅机器学习——概率分类模型_分类_16

这就叫做生成模型(Generative Mode)。顾名思义,有了这个模型,这可以用来生成x。

可以计算某一个x出现的几率李宏毅机器学习——概率分类模型_Sigmoid函数_17,就可以知道x的分布,然后就可以用这个分布来生成x。

假设我们考虑水系(Water)和一般系(Normal)的神奇宝贝。

李宏毅机器学习——概率分类模型_分类模型_18

在训练数据中,共有79只水系的,61只一般系的。

那从Class1中取得一只宝可梦的几率是李宏毅机器学习——概率分类模型_Sigmoid函数_19
那从Class2中取得一只宝可梦的几率是李宏毅机器学习——概率分类模型_Sigmoid函数_20

李宏毅机器学习——概率分类模型_Sigmoid函数_21

那么从水系的神奇宝贝中挑出一只是海龟的几率(李宏毅机器学习——概率分类模型_极大似然_22)有多大?

也就是李宏毅机器学习——概率分类模型_极大似然_23

我们知道每个神奇宝贝都是用特征(feature)向量来描述。

我们首先考虑防御力(Defense)和特殊防御力(SP Defense)这两个特征(因为没法画出7个特征的图像出来…)

李宏毅机器学习——概率分类模型_极大似然_24

每个点都代表一只宝可梦,如果给我们一个不在训练数据中的新的神奇宝贝,比如海龟。

李宏毅机器学习——概率分类模型_分类模型_25

那么从水系中挑出一只神奇宝贝是海龟的几率是多少? 李宏毅机器学习——概率分类模型_分类_26

可以想象这79只神奇宝贝是从某个高斯分布(正态分布)中取样出来,那么找到海龟代表的那个点的几率就不是0。

那给定这79个点,怎么找到这个高斯分布。

高斯分布常见的形式是:

李宏毅机器学习——概率分类模型_分类模型_27

视频中给出了另一个种形式:

李宏毅机器学习——概率分类模型_Sigmoid函数_28

可以把高斯分布想成一个函数,这个函数的输入就是向量x,代表某只宝可梦的数值;
输出就是这只宝可梦从这个分布中取样出来的几率。

这个几率由均值李宏毅机器学习——概率分类模型_极大似然_29和协方差矩阵李宏毅机器学习——概率分类模型_Sigmoid函数_30组成。

把不同的李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30代入这个函数,就能得到不同的图像,x的几率也不一样。

李宏毅机器学习——概率分类模型_Sigmoid函数_33

同样的李宏毅机器学习——概率分类模型_Sigmoid函数_30不同的李宏毅机器学习——概率分类模型_极大似然_29得出来的图形中几率分布最高点的位置不一样;

李宏毅机器学习——概率分类模型_分类模型_36

同样的李宏毅机器学习——概率分类模型_极大似然_29和不同的李宏毅机器学习——概率分类模型_Sigmoid函数_30的几率分布最高点位置一样,但是分布发散的程度不一样。

假设有一个高斯分布存在,从这个分布中取样79次后,取出这79个点。

那么这个高斯分布到底是什么样的呢?

假设我们可以根据这个79个点估测出高斯分布的李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30

李宏毅机器学习——概率分类模型_概率分类模型_41

接着给一个新的点x,它不在我们过去所见过的79个点里面,我们已经知道了李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30,我们就可以写出高斯函数

李宏毅机器学习——概率分类模型_Sigmoid函数_44

然后把x代进去,就可以算出这个x从这个分布出取样出来的几率,如果x越接近中心点,那么取样出来的概率就越大。

那么现在的问题就是如何找到这个李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30,用的方法是极大似然。

极大似然

可以想象这个79个点能从任何李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30

从高斯分布中生成能生成任何一个点,不过几率有高低之别。

李宏毅机器学习——概率分类模型_分类模型_49

如上图,左下角那个分布生成这个79个点的可能性(Likelihood)比右上角的分布要高。

所以给定李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30,就可以算出生成这些点的可能性 就是取样出每个点的几率之积:

李宏毅机器学习——概率分类模型_Sigmoid函数_52

上面的李宏毅机器学习——概率分类模型_分类模型_53不是代表损失函数,而是取Likelihood中的首字母。

所以,接下来要做的事情是找到生成这个79个点可能性最大(maximum likelihood)的高斯分布(李宏毅机器学习——概率分类模型_分类模型_54)。

李宏毅机器学习——概率分类模型_Sigmoid函数_55

我们可以穷举所有的李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30,找到使上面式子结果最大。

平均就是李宏毅机器学习——概率分类模型_分类模型_58

李宏毅机器学习——概率分类模型_Sigmoid函数_59
李宏毅机器学习——概率分类模型_极大似然_60

李宏毅机器学习——概率分类模型_Sigmoid函数_61

然后根据上面的公式算出来两个类别的李宏毅机器学习——概率分类模型_极大似然_29李宏毅机器学习——概率分类模型_Sigmoid函数_30:

李宏毅机器学习——概率分类模型_极大似然_64

现在我们就可以进行分类了!
我们只要算出李宏毅机器学习——概率分类模型_极大似然_65的几率,根据下式:

李宏毅机器学习——概率分类模型_分类_16

如果李宏毅机器学习——概率分类模型_分类_67,那么x就属于类别1(水系)。

我们已知了李宏毅机器学习——概率分类模型_分类_12李宏毅机器学习——概率分类模型_分类_13,然后代入李宏毅机器学习——概率分类模型_分类_70李宏毅机器学习——概率分类模型_分类_71得出李宏毅机器学习——概率分类模型_分类模型_14的值,同理可得出李宏毅机器学习——概率分类模型_极大似然_15的值,整个式子的结果就可以计算出来了。

那结果怎样?

李宏毅机器学习——概率分类模型_Sigmoid函数_74

蓝色的点是水系的神奇宝贝的分布,红点时一般系的分布。

李宏毅机器学习——概率分类模型_Sigmoid函数_75

红色区域几率大于0.5是类别1;蓝色区间几率小于0.5,是类别2。

然后把这个模型用于测试数据,发现正确率只有47%,但此时我们只考虑了两个特征。

我们把所有特征都考虑进来(共7个),结果准确率也只有54%。
上面得出的分类结果不太好,我们优化一下模型,让两个类别共用同一个李宏毅机器学习——概率分类模型_Sigmoid函数_30

李宏毅机器学习——概率分类模型_分类_77

假设水系79个神奇宝贝是从李宏毅机器学习——概率分类模型_概率分类模型_78的高斯分布生成出来的,同时另外61只(编号从80开始)神奇宝贝从李宏毅机器学习——概率分类模型_Sigmoid函数_79的高斯分布生成出来,这两个分布的协方差矩阵是同一个。

那该怎么计算最大似然呢?

李宏毅机器学习——概率分类模型_极大似然_80

李宏毅机器学习——概率分类模型_概率分类模型_78产生李宏毅机器学习——概率分类模型_分类模型_82李宏毅机器学习——概率分类模型_极大似然_83,用李宏毅机器学习——概率分类模型_Sigmoid函数_79产生李宏毅机器学习——概率分类模型_Sigmoid函数_85李宏毅机器学习——概率分类模型_极大似然_86

李宏毅机器学习——概率分类模型_分类_70李宏毅机器学习——概率分类模型_Sigmoid函数_88的计算方法和前面的相同。

李宏毅机器学习——概率分类模型_Sigmoid函数_30的取值为

李宏毅机器学习——概率分类模型_分类_90

然后再看一下结果,看有什么改进没

李宏毅机器学习——概率分类模型_分类模型_91


在考虑了所有特征的情况下,准确率到了73%,右边的模型也称为线性模型。

总结一下上面的步骤

李宏毅机器学习——概率分类模型_分类模型_92

如果所有特征(维度)都是独立的,那么你可以尝试使用朴素贝叶斯分类器

Sigmoid 函数

李宏毅机器学习——概率分类模型_概率分类模型_93

我们来整理下这个式子,上下同除分子,得到:

李宏毅机器学习——概率分类模型_Sigmoid函数_94
李宏毅机器学习——概率分类模型_分类模型_95

因为李宏毅机器学习——概率分类模型_极大似然_96 以及 李宏毅机器学习——概率分类模型_概率分类模型_97

所以就有上式等于:

李宏毅机器学习——概率分类模型_分类_98

这个函数叫做Sigmoid函数,它的图形为:

李宏毅机器学习——概率分类模型_Sigmoid函数_99

接下来算一下李宏毅机器学习——概率分类模型_Sigmoid函数_100应该是怎样的 李宏毅机器学习——概率分类模型_分类模型_95

李宏毅机器学习——概率分类模型_极大似然_102
把相乘的部分变成相加得

李宏毅机器学习——概率分类模型_分类模型_103

李宏毅机器学习——概率分类模型_分类_104

李宏毅机器学习——概率分类模型_极大似然_105代表Class1在训练数据集中出现的次数,李宏毅机器学习——概率分类模型_概率分类模型_106代表Class2在训练集中出现的次数。

李宏毅机器学习——概率分类模型_分类_107

李宏毅机器学习——概率分类模型_分类_108

李宏毅机器学习——概率分类模型_分类模型_109
接下来把李宏毅机器学习——概率分类模型_极大似然_110展开

李宏毅机器学习——概率分类模型_极大似然_111

李宏毅机器学习——概率分类模型_概率分类模型_112展开:

李宏毅机器学习——概率分类模型_极大似然_113

所以李宏毅机器学习——概率分类模型_Sigmoid函数_100可以写成:

李宏毅机器学习——概率分类模型_Sigmoid函数_115

而我们上面说过,如果共用李宏毅机器学习——概率分类模型_Sigmoid函数_30的话,那么就有李宏毅机器学习——概率分类模型_Sigmoid函数_117

那么上式有:

李宏毅机器学习——概率分类模型_分类_118

假设李宏毅机器学习——概率分类模型_分类模型_119 ,后面这一项其实就是一个常数,另李宏毅机器学习——概率分类模型_极大似然_120

因为李宏毅机器学习——概率分类模型_分类模型_121

李宏毅机器学习——概率分类模型_Sigmoid函数_122

也就有李宏毅机器学习——概率分类模型_分类_123

它解释了为什么共用李宏毅机器学习——概率分类模型_Sigmoid函数_30时界线是线性的。

在生成模型中,我们找出李宏毅机器学习——概率分类模型_Sigmoid函数_125就可以代入上式,然后就能算出几率

但是为什么要这么麻烦呢?最终要找到一个向量李宏毅机器学习——概率分类模型_极大似然_126和一个常量李宏毅机器学习——概率分类模型_极大似然_127,如果我们能否直接找出李宏毅机器学习——概率分类模型_极大似然_126李宏毅机器学习——概率分类模型_极大似然_127就好了。