(P4笔记)Classification分类问题——机器学习:李宏毅

Classification(分类)

  • 分类也是找一个function,只不过他的输入输出不同,它输出的是用来表明输入是属于那一个类别。
  • 应用:银行根据用户信息确定是否贷款、医疗、文字辨识、人脸识别。

引例

  • 还是以宝可梦为例,需要找到一个function,输入是一个宝可梦的某种数值,输出则是宝可梦属于十八种属性的哪一种。用宝可梦的一些自身属性(数值化)来当做function的输入,

    在这里插入图片描述

如何做?

理想做法

  • 找一个function,输出为一个类别。在我们找的这个function里,内建一个function:g(x),把f(x)这个function的输入x代入到g中,就成了g(x),如果当g(x)的值>0时,g(x)输出就是第一类class 1,否则就是输出为第二类class 2

    在这里插入图片描述

  • 而我们的Loss function损失函数应该定义成如下图所示

    在这里插入图片描述在这里插入图片描述

    我们把在training data上的错误次数越少,代表Loss越小,所以就可以写成如上所示的Loss式子,这个Loss式子的解释就是,如果我们找的function的output与训练数据的真实数据进行判断,如果不相等就是分类错误,式子成立为1,如果分类正确就是0,然后对所有的错误结果的次数进行累加求和。

  • 求解方式,找出最好的function

    显然不能再用梯度下降的方法,因为Loss函数无法进行微分,所以提供两种其他的方法例如:Perceptron(感知器)、SVM(支持向量机)

引例

​ 从两个盒子的取球概率问题进行引入。看图可知,由概率论知识能得出最后一个式子,也就是蓝色球在第一个盒子的概率的计算。

在这里插入图片描述

​ 由盒子的例子,引入到分类问题中,将两个盒子变换成两个类别。看图可知,其中用红色框的式子是可以用训练数据估计概率的,P(C1)的意思是第一个类别有多少种,P(X|C1)的意思是在C1类中x的概率,然后可以计算出输入的input:x在C1类中的概率。

在这里插入图片描述

​ 举例:将第一个盒子比喻成宝可梦的水属性类别,第二个盒子比喻成Normal一般属性类别,然后在训练数据中有79个属于Water,61属于Normal,即可计算出P(C1)和 P(C2)。那P(X|C1)或者P(X|C2)如何计算呢?

比如我输入宝可梦为海龟,那如何知道Water类中存在海龟的概率呢?

在这里插入图片描述

我们将训练数据中79种水系宝可梦的防御力与特殊防御力(暂时考虑这一方面)画在一个二维平面内,每个点代表一个宝可梦都由其属性表示为一个向量(考虑防御力与特殊防御力)。如果给我一只没有在训练数据中的宝可梦,比如海龟,那从水系里挑出这个海龟的几率P(x|Water)是多少呢?

​ 其实这79只宝可梦其实只是冰山一角,我们假设它只是从一个高斯分布器采样得来的,我们只是抽取了79个点,得到的分布是图中画圈那样,但我们的海龟不在这个分布内,但并不意味着他的概率就是0,那如果给我这79个点,我们怎么找到每个点的高斯分布?

在这里插入图片描述

高斯分布

如果不懂高斯分布,可以直接想向成一个function,它的input是一个向量x,在本节课程代表某一只宝可梦的数值(防御力攻击力之类的),它的output就是x在这个分布内抽取出来的机率,这个几率主要有均值μ和协方差矩阵∑决定的,把μ和∑代入这个function,则它的output就会有不同的结果。如下图所示,同样的∑,不同的μ代入function,它的分布的最高点是不一样的。

在这里插入图片描述

同样的μ和不同的∑代入function,则它分布的离散程度是不一样的。

在这里插入图片描述

  • 那接下来的问题就是,我们假设有一个高斯分布存在,在这个高斯分布里我们抽取79次后,得到79个点,那么到底这个高斯分布长什么样呢?假设我们可以根据这79个点估测出高斯分布的μ和∑,那么我们如果输入一个新的点x(代表海龟的数值:防御力和特殊防御力),那么我们就可以把高斯分布的function给写出来,如下图所示。

    在这里插入图片描述

    然后进行复杂计算之后,我们就可以得到x在这个分布内抽取出来的机率,当点X越接近中心点,那么被抽取出来的几率也是越大的,反正则越小。那么问题来了:怎么找出这个μ和∑呢?

最大似然

首先我们要知道,每个高斯分布都有可能抽取出这79个点,只是点离分布的中心点越远几率就越低但不代表几率为0。具有任意均值u和协方差矩阵的高斯矩阵可以生成这些点,只是他们具有不同的可能性(Likelihood)。如果给我一个高斯分布的μ和∑,我们就可以算出这个高斯分布抽取出这79个点的几率。这个Likelihood可能性我们用一个式子L来进行表示,这个L的input就是μ和∑,输出就是抽取出这79个点的可能性,如下图所示。具有均值u和协方差矩阵∑的高斯分布的似然值=高斯分布样本x1, x2, x3…x79的概率。在这里插入图片描述

找到最大的可能性(Maximum Likelihood)

接下来我们要做的事情就是要找到这个具有最大可能性的高斯分布,也就是穷举所有的μ和∑,来找到这个最大的likelihood。按照下面的计算公式,μ取平均值即可。

在这里插入图片描述

  • 得到结果再去做分类

    然后我们通过计算就得出了结果

    在这里插入图片描述

计算结果(回到分类问题)

我们之前说过,我们要做分类只要算出如下图式即可。在这里插入图片描述

如果这个值大于0.5那么就属于第一类。在这里插入图片描述

整体计算与代入项如下所示:

在这里插入图片描述

分析结果

将二维平面坐标系绘制出来,平面铺满了79个宝可梦所对应的防御值与特殊防御值,然后计算出P(C1|X)的值,如右上图,红色部分区域代表大于0.5为第一类Water,蓝色部分区域代表第二类。然后右下角的图是我的测试数据testing data,可知正确率只有百分之四十七。那我们使用七维的空间(宝可梦的七种参数)进行测试,发现结果也差不多。

在这里插入图片描述

如何改进

修改模型

我们可以强制对∑进行统一,这样我们可以使用比较少的参数来修改模型。

在这里插入图片描述

例如我们现在有79只水系宝可梦,61只一般性的宝可梦,他们的μ不同,但∑相同,那他们的likelihood计算就只要三个参数:μ1、μ2、∑再全部相乘。那怎么算μ1和μ2呢,他们和单独算μ1是一样的,都是取平均值,但∑的式子是不一样的如下式所示,需要相加。

在这里插入图片描述

查看结果

不共用均方差矩阵∑就是如左图,使用相同的均方差矩阵后就是如右图,我们发现右图是一根直线,也就是说Model是一个Linear Model线性的。如果我们考虑所有的七项宝可梦指标,它的正确率从54%提高到了73%。

在这里插入图片描述

回顾几率模型

我们说机器学习分为三个步骤,这个几率模型也是三个步骤。

  • 1.首先也是定Model

    这个function set里的function都长如下图式中的样子。我们input输入一个x,里面的求概率的一些式子例如P(X|C1)、P(C1)等,就是Model的参数,选择不同的概率分布就会得到不同的function,把这些不同的概率分布,例如高斯分布中选不同的μ和∑,就得到不同的分布,把这些不同的分布集合起来,就是一个Model,如果所求值大于0.5就是第一类,否则就是第二类。

  • 2.第二步就是衡量一个function的好坏

    在几率模型中,假设使用高斯分布,我们要衡量的就是高斯分布内的参数也就是μ和∑

  • 3.找到最好的function

    使likelihood最大化的均值u和协方差∑就找到了最好的function

在这里插入图片描述

概率分布(Probability Distribution)

  • 之前选用的式高斯分布,那为什么呢?

    答案是不统一的,想用啥用啥。

  • 概率分布式我们自行决定选择的

在这里插入图片描述

后验概率

将原来的概率式子分子分母同乘
在这里插入图片描述
分之一,得到新的式子,令Z等于如下图式,得到一个新的式子
在这里插入图片描述

那我们接下来做的事就是把Z计算一下,看到底长什么样,具体数学推导看课件,最终结果如下图:

在这里插入图片描述

资料下载

课程所有资料下载我已经上传了,请参考https://download.csdn.net/download/qq_42263553/12574125
包含所有的资料、课后作业代码

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值