李宏毅机器学习(三)
此篇博文是基于李宏毅老师此视频的学习总结。此部分主要介绍,分类:概率生成模型。(Classification: Probabilistic Generative Model)
1、分类问题的解决方案
-
设计函数(模型):根据输入数据,输出分类结果。
-
设计损失函数:
L(f)=n∑δ(f(xn)̸=y^n)
表示训练数据分类错误的总次数。
-
找到最优函数
2、贝叶斯公式应用
老师在课程中依旧以宝可梦为例,描述一个二元分类问题:将水系(Water)宝可梦和一般(Normal)宝可梦区分出来。
-
下图左边Class1是水系(Water),P(C1)表示选择到Class1中宝可梦的概率;下图右边Class2是一般(Normal),P(C2)表示选择到Class2中宝可梦的概率;
-
训练数据:79 Water, 61 Normal。因此可得到:
P(C1)=79/(79+61)=0.56P(C2)=61/(79+61)=0.44
-
设想一下,实际水系宝可梦不止训练数据中的79只,那么,当面对新数据(test data)的时候,怎么求出从Class1中选出它的概率呢?(不可能是0吧)。于是,可以假设训练数据是从一个高斯分布(包含所有的水系宝可梦数据)中取出的部分样本点。因此,问题就变成了求解这个高斯分布(正态分布):
fμ,Σ(x)=(2π)D/21∣Σ∣1/21exp{−21(x−μ)TΣ−1(x−μ)}
函数输入:向量x;输出:采样取到x的概率。函数形状由平均值μ和协方矩阵Σ决定。∣Σ∣表示Σ的行列式。
-
求解高斯分布,也就是找到μ和Σ,【协方差矩阵求解方法】。用到的方法就是:极大似然估计。
-
给出一对μ和Σ,能够计算出高斯分布的79个样本的可能性。这个可能性就是高斯分布的Likelihood,使用公式表示为:
L(μ,Σ)=fμ,Σ(x1)fμ,Σ(x2)fμ,Σ(x3)...fμ,Σ(x79)
-
根据极大似然(Maximum Likelihood)的计算,我们需要计算:
L(μ,Σ)=fμ,Σ(x1)fμ,Σ(x2)fμ,Σ(x3)...fμ,Σ(x79)fμ,Σ(x)=(2π)D/21∣Σ∣1/21exp{−21(x−μ)TΣ−1(x−μ)}μ∗,Σ∗=argμ,ΣmaxL(μ,Σ)μ∗=791n=1∑79xnΣ∗=791n=1∑79(xn−μ∗)(xn−μ∗)T
-
根据上述公式,计算79只水系的宝可梦和61只一般宝可梦的μ和Σ:
μ1=[75.071.3],Σ1=[874327327929]μ2=[55.659.8],Σ2=[847422422685]
-
现在可以开始求解分类问题,根据贝叶斯公式:
P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)
其中,有以下几项:
P(C1)=79/(79+61)=0.56P(C2)=61/(79+61)=0.44P(x∣C1)=fμ1,Σ1(x)P(x∣C2)=fμ2,Σ2(x)
经过计算,如果P(C1∣x)>0.5,那么x是属于水系宝可梦的;否则x属于一般属性宝可梦。
-
接下来,看老师做出的结果:
从结果可以看出,考虑宝可梦两个属性(Defence & SP Defence),训练之后,在测试数据上准确率只有47%。考虑所有7个特征属性,准确率也就在54%,结果依旧不理想。
3、改进模型
-
不同的Class(Class1 Class2)可以使用同一个协方差矩阵Σ,协方差矩阵和输入特征的平方成正比的。
-
因此,两个高斯分布fμ1,Σ1(x)和fμ2,Σ2(x)使用不同的协方差矩阵Σ1Σ2,会导致参数过多,容易过拟合。改进方法就是使用同一个协方差矩阵,就能够表示这个模型。
-
经过改进,对于Class1,需要找到μ1和Σ;对于Class2需要找到μ2,三个参数需要使得极大似然值L(μ1,μ2,Σ)最大:
L(μ1,μ2,Σ)=fμ1,Σ(x1)fμ1,Σ(x2)...fμ1,Σ(x79)×fμ2,Σ(x80)...fμ2,Σ(x140)
其中,x1−79是属于Class1的,x80−140是属于Class2的。
-
重新设计之后的共用的协方差矩阵Σ=14079Σ1+14061Σ2
-
结果如下图所示:
从结果看出,共用协方差矩阵之后,分界线变成线性的,分类准确率有所提高。
-
三部曲:
- 设计模型,贝叶斯公式,根据概率得到结果。
- 评价模型的好坏,使用某对μ和Σ得出的训练数据的可能性。
- 找到最佳函数,就是找到使训练数据可能性最大的那组μ和Σ。
4、选择概率分布模型
-
概率分布不一定要选高斯分布,还可以根据实际情况选择适合的模型。例如,对于二元特征的输入值(0或1),它们服从的是伯努利分布。
-
朴素贝叶斯分类器(Naive Bayes Classifier):假设输入数据的所有特征维度是相互独立的,就可以用朴素贝叶斯分类器。朴素贝叶斯公式:
P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)=1+P(x∣C2)P(C2)P(x∣C1)P(C1)1=1+e−z1=σ(z)z=lnP(x∣C2)P(C2)P(x∣C1)P(C1)
5、数学理论
1. 先验概率
- 定义:直观理解,所谓“先”,就是在事情之前,即在事情发生之前事情发生的概率。是根据以往经验和分析得到的概率。
- 例子:比如抛硬币,我们都认为正面朝上的概率是0.5,这就是一种先验概率,在抛硬币前,我们只有常识。这个时候事情还没发生,我们进行概率判断。所谓的先验概率是对事情发生可能性猜测的数学表示。
2. 后验概率
-
定义:事情已经发生了,事情发生可能有很多原因,判断事情发生时由哪个原因引起的概率。
-
例子: 比如今天你没去学校,原因有两个,可能是生病了,也可能是自行车坏了。然后上课时老师发现你没来。这里是一个结果,你没来学校这件事情已经发生了。老师叫学霸计算一下概率,分别是因为生病了没来学校的概率,自行车坏了没来学校的概率。很显然,后验概率就是在事情发生后判断由哪一个原因引起的概率。这里的事情是你上学迟到,原因有生病了和自行车坏了。
-
数学表达:
P(生病∣迟到)=P(迟到)P(生病且迟到)=P(迟到)P(迟到∣生病)P(生病)P(自行车坏了∣迟到)=P(迟到)P(自行车坏了且迟到)=P(迟到)P(迟到∣自行车坏了)P(自行车坏了)
用A表示生病,B表示自行车坏了,C表示迟到,一般表示如下:
P(A∣B)=P(B)P(AB)=P(B)P(B∣A)P(A)
-
下面是与课程内容相关的后验概率的推导:
-
经过计算,化简: