Lecture 1_Extra Classification Probabilistic Generative Model

本文探讨了分类问题的数学概念,通过 Pokemon 属性预测为例,解释了为何不能简单地将分类视为回归问题。引入了概率模型,特别是高斯分布和最大似然估计,用于构建分类模型。讨论了朴素贝叶斯分类器的思想,并展示了模型优化后的效果,强调了概率在分类边界确定中的作用。
摘要由CSDN通过智能技术生成

Lecture 1_Extra Classification: Probabilistic Generative Model

Classification: Probabilistic Generative Model

分类的概念

image-20220818105228843

分类要找一个 f u n c t i o n function function 函数,输入对象 x x x 特征, 输出是该对象属于 n n n 个类别中是属于哪一个。

  • 例子1:信用评分【二分类问题】
    • 输入:收入,储蓄,行业,年龄,金融史…
    • 输出:是否拒绝拒绝贷款
  • 例子2:医疗诊断【多分类问题】
    • 输入:当前症状,年龄,性别,医疗史…
    • 输出:患了哪种疾病
  • 例子3:手写文字辨识【多分类问题】
    • 输入:手写的文字
    • 输出:约9353个汉字中输入哪一个
image-20220818105345828
  • 例子4:人脸识别【多分类问题】
    • 输入:不同人脸的图片
    • 输出:人名

Pokemon 属性预测

image-20220818105913930

需要找到一个函数 f u n c t i o n function function 能够预测出 Pokemon 的属性(电🌩、水💧、草🌿,等等)

首先需要量化 Pokemon:

  • Total:整体强度;
  • HP:生命值;
  • Attack:攻击力;
  • Defense:防御力;
  • SP Atk:特殊攻击力;
  • SP Def:特殊防御力;
  • Speed:速度;

所以,一只 Pokemon 能够用上述 7 7 7 个属性来度量,用这 7 7 7 个数值组成的向量来表示一只 Pokemon。

为什么需要预测 Pokemon 的属性呢?—— 不同属性的 Pokemon 间存在克制关系(🤣):

image-20220818111519013

如何做分类

训练数据

image-20220818111939501

Classification as Regression?

假设还不了解怎么做,但之前已经学过了 r e g r e s s i o n regression regression。就把分类当作回归硬解。
举一个二分类的例子,假设输入神奇宝贝的特征 x x x,判断属于类别 1 1 1 或者类别 2 2 2,把这个当作回归问题。

  • 类别 1 1 1:相当于target是 1 1 1
  • 类别 2 2 2:相当于target是 − 1 -1 1

然后训练模型:因为是个数值,如果数值比较接近 1 1 1,就当作类别 1 1 1,如果数值接近 − 1 -1 1,就当做类别 2 2 2。这样做遇到什么问题?

image-20220818112647543

这样用回归的方式硬训练可能会得到右图中紫色的这条。直观上就是将绿色的线偏移一点到紫色的时候,就能让右下角的那部分的值不是那么大了。但实际是绿色的才是比较好的,用回归硬训练并不会得到好结果。此时可以得出用回归的方式定义,对于分类问题来说是不适用的。

还有另外一个问题:比如多分类。类别 1 1 1 当作target1,类别 2 2 2 当作target2,类别 3 3 3 当作target3…如果这样做的话,就会认为类别 2 2 2 和类别 3 3 3 是比较接近的,认为它们是有某种关系的;认为类别 1 1 1 和类别 2 2 2 也是有某种关系的,比较接近的。但是实际上这种关系不存在,它们之间并不存在某种特殊的关系。这样是没有办法得到好的结果。

理想模型
image-20220818113507421
  • 先看二分类,将 f u n c t i o n function function 中内嵌一个函数 g ( x ) g(x) g(x),如果大于 0 0 0,就认为是类别 1 1 1,否则认为是类别 2 2 2
  • 损失函数的定义就是,如果选中某个 f u n c i t o n   f ( x ) funciton \ f(x) funciton f(x),在训练集上预测错误的次数。当然希望错误次数越小越好。但是这样的损失函数没办法解,这种 Loss 的定义没办法微分;
  • 是有解决方法的,比如 Perceptron 和 SVM。本节先考虑一种概率模型。

一些简单的概率

image-20220818152642779

说明:假设两个盒子,各装了 5 5 5 个球,还得知随机抽一个球,抽到盒子 1 1 1 的球的概率是 2 / 3 2/3 2/3,抽到盒子 2 2 2 的球的概率是 1 / 3 1/3 1/3。从盒子中蓝色球和绿色球的分配可以得到:

  • 在盒子 1 1 1 中随机抽一个球,是蓝色的概率为 4 / 5 4/5 4/5,绿的的概率为 1 / 5 1/5 1/5
  • 在盒子 2 2 2 中随机抽一个球,是蓝色的概率为 2 / 5 2/5 2/5,绿的的概率为 3 / 5 3/5 3/5

现在求随机从两个盒子中抽一个球,抽到的是盒子 1 1 1 中蓝色球的概率是多少?
P ( B 1 ∣ B l u e ) = P ( B l u e ∣ B 1 ) P ( B 1 ) P ( B l u e ∣ B 1 ) P ( B 1 ) + P ( B l u e ∣ B 2 ) P ( B 2 ) = 4 5 ∗ 2 3 4 5 ∗ 2 3 + 2 5 ∗ 1 3 = 4 5 \begin{aligned} P(B_1|Blue) &= \frac{P(Blue|B_1)P(B_1)}{P(Blue|B_1)P(B_1)+P(Blue|B_2)P(B_2) } \\ & = \frac{\frac{4}{5}*\frac{2}{3}}{\frac{4}{5} * \frac{2}{3}+\frac{2}{5}*\frac{1}{3}} \\ & = \frac{4}{5} \end{aligned} P(B1Blue)=P(BlueB1)P(B1)+P(BlueB2)P(B2)P(BlueB1)P(B1)=5432+52315432=54

概率与分类的关系

image-20220818155328718

那么,两个盒子中抽一个球,抽到的是盒子 1 1 1 中蓝色球的概率是多少?相当于从两个类别 c l a s s class class 中抽一个 x x x,抽到的是类别 1 1 1 x x x 的概率是多少?可以转化成,随机给出一个 x x x,那么它属于哪一个类别(属于概率相对比较大的类别)?

同理知道红色方框的值,就可以计算出给一个 x x x,它是属于哪个类型的。 P ( C 1 ∣ x ) P(C_1|x) P(C1x) P ( C 2 ∣ x ) P(C_ 2 | x) P(C2x),哪个类别的概率大就属于哪个类别。接下来就需要从训练集中估测红色方框中的值。这一套想法叫做生成模型(Generative Model)。因为有了这个模型,就可以生成一个 x x x,可以计算某个 x x x 出现的概率,知道了 x x x 的分布,就可以自己产生 x x x

先验概率(Prior)

image-20220818160811796

先考虑简单的二分类,水属性或者一般属性,通过训练集的数据可以计算出 P ( C 1 ) P(C_1) P(C1) P ( C 2 ) P(C_2) P(C2),如图所示:

  • 水属性占比: P ( C 1 ) = 0.56 P(C_1) = 0.56 P(C1)=0.56
  • 普通属性占比: P ( C 2 ) = 0.44 P(C_2) = 0.44 P(C2)=0.44
image-20220818161927511

下面想计算 Pokemon 原盖海龟是水属性的概率,即 P ( x ∣ C 1 ) P(x|C_1) P(xC1)。虽然知道这是一只原盖海龟,一看就是水属性的,但是在模型中,我们输入的是一个特征向量(vector)。

也就是在水系的神奇宝贝中随机选一只,是原盖海龟的概率。下面将训练集中 79 79 79 个水系的神奇宝贝,属性DefenseSP Defense进行可视化:

image-20220818163008924

这里假设这 79 79 79 点是从高斯分布(Gaussian distribution)中采样的,现在需要从这 79 79 79 个点找出符合的那个高斯分布。

高斯分布(Gaussian distribution)
image-20220818163335394

简单点可以把高斯分布当作一个 f u n c t i o n function function,输入就是一个向量 x x x ,输出就是选中 x x x 的概率(实际上高斯分布不等于概率,只是和概率成正比,这里简单说成概率)。 f u n c t i o n function function由期望 μ \mu μ 和协方差矩阵 Σ \varSigma Σ 决定。

上图的例子是说同样的 Σ \varSigma Σ,不同的 μ \mu μ,概率分布的最高点的位置是不同的。下图的例子是同样的 μ \mu μ,不同的 Σ \varSigma Σ,概率分布的最高点是一样的,但是离散度是不一样的。

image-20220818163757483 image-20220818164441628

假设通过 79 79 79 个点估测出了期望 μ \mu μ 和协方差矩阵 Σ \varSigma Σ。期望是上图中的黄色点,协方差矩阵是红色的范围。现在给一个不在 79 79 79 个点之内的新点,用刚才估测出的期望和协方差矩阵写出高斯分布的 f u n c t i o n   f μ , Σ ( x ) function \ f_{μ,Σ}(x) function fμ,Σ(x),然后把 x x x 带进去,计算出被挑选出来的概率。

极大似然估计(Maximum Likelihood)
image-20220818165156696

首先对于这 79 79 79 个点,任意期望和协方差矩阵构成的高斯分布,都可以生成这些点。当然,像上图中左边的高斯分布生成这些点,比右边高斯分布生成这些点的几率要大。那给一个 μ \mu μ Σ \varSigma Σ,它生成这 79 79 79 个点的概率为图中的 L ( μ , Σ ) L(\mu,\varSigma) L(μ,Σ) L ( μ , Σ ) L(\mu,\varSigma) L(μ,Σ) 也称为样本的似然函数。

使得 L ( μ , Σ ) L(\mu,\varSigma) L(μ,Σ) 最大的 ( μ , Σ ) (\mu,\varSigma) (μ,Σ) 记做 ( μ ∗ , Σ ∗ ) (\mu^∗,\varSigma^∗) (μ,Σ)

image-20220818165904832

算出之前水属性和一般属性 Pokemon 高斯分布的期望和协方差矩阵的最大似然估计值 μ ∗ ,   Σ ∗ \mu^*,\ \varSigma^* μ, Σ

image-20220818170327669

分类模型

image-20220818194116811

接下来,进行分类,分类结果如下:

image-20220818195438101

结果不是很理想。

模型优化

image-20220818200012819

通常来说,不会给每个高斯分布都计算出一套不同的最大似然估计,协方差矩阵是和输入 feature 大小的平方成正比,所以当 feature 很大的时候,协方差矩阵是可以增长很快的。此时考虑到 model 参数过多,容易Overfitting,为了有效减少参数,给描述这两个类别的高斯分布相同的协方差矩阵。

image-20220818200352899

此时修改似然函数为 L ( μ 1 , μ 2 , Σ ) L(μ_1,μ_2,Σ) L(μ1,μ2,Σ) μ 1 , μ 2 μ_1,μ_2 μ1,μ2 计算方法和上面相同,分别加起来平均即可;而 Σ Σ Σ 的计算有所不同。

这里详细的理论支持可以查看《Pattern Recognition and Machine Learning》Christopher M. Bishop 著,chapter4.2.2

image-20220818200631735

右图新的结果,分类的 boundary 是线性的,所以也将这种分类叫做 linear model。如果考虑所有的属性,发现正确率提高到了 73 % 73\% 73%

概率生成模型建模步骤

将上述问题简化为前几个系列说过的三大步:

image-20220818201023081

为什么选择高斯分布?

image-20220818201633009
  • 假设每一个维度用概率分布模型产生出来的几率是相互独立的,所以可以将 P ( x ∣ C 1 ) P(x|C_1) P(xC1) 拆解。可以认为每个 P ( x k ∣ C 1 ) P(x_k|C_1) P(xkC1) 产生的概率都符合一维的高斯分布,也就是此时 P ( x ∣ C 1 ) P(x|C_1) P(xC1) 的高斯分布的协方差是对角型的(不是对角线的地方值都是0),这样就可以减少参数的量。但是试一下这种做法会坏掉。
  • 对于二元分类来说,此时用通常不会用高斯分布,可以假设是符合 Bernoulli distribution(伯努利分布);
  • 假设所有的 feature 都是相互独立产生的,这种分类叫做 Naive Bayes Classifier(朴素贝叶斯分类器)。

后验概率 Posterior Probability

image-20220818202130592

如上图所示,将 P ( C 1 ∣ x ) P(C_1|x) P(C1x) 整理,得到一个 σ ( z ) σ(z) σ(z),这叫做 Sigmoid function。

接下来,求解 z z z

image-20220818202457576 image-20220818202653091 image-20220818203103698

如上图所示,已经求得了 z z z。在实际应用中协方差矩阵是同一个矩阵,因此:

image-20220818203833527

P ( C 1 ∣ x ) = σ ( w ⋅ x + b ) P(C_1|x)=σ(w⋅x+b) P(C1x)=σ(wx+b),从这个式子也可以看出上述当共用协方差矩阵的时候,为什么分界线是线性的。

中协方差矩阵是同一个矩阵,因此:

image-20220818203833527

P ( C 1 ∣ x ) = σ ( w ⋅ x + b ) P(C_1|x)=σ(w⋅x+b) P(C1x)=σ(wx+b),从这个式子也可以看出上述当共用协方差矩阵的时候,为什么分界线是线性的。

既然这里已经化简为上述的式子,直观感受就是可以直接估测 w ,   b w,\ b w, b 就可以直接得到结果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值