李宏毅机器学习之Classification
作者:互联网
一、例子
1.1 分类概念
- 分类要找一个function函数输入对象x特征,输出是该对象属于n个类别中是属于哪一个。
- 例子
- 信用评分(二分类问题)
- 医疗诊断(多分类问题)
- 手写文字识别(多分类问题)
1.2 神奇宝贝的属性(水、电、草)预测
- 神奇宝贝有很多的属性,比如电,火,水。要做的就是一个分类的问题:需要找到一个 functionfunction。
- 输入:一只神奇宝贝的特征(整体强度,生命值,攻击力,防御力,特殊攻击力,特殊防御力,速度等)
- 输出:属于哪一种类型的神奇宝贝
- 首先需要将神奇宝贝数值化:以皮卡丘为例
- Total:整体强度,大概的表述神奇宝贝有多强,比如皮卡丘是320
- HP:生命值,比如皮卡丘35
- Attack:攻击力,比如皮卡丘55
- Defense:防御力,比如皮卡丘40
- SP Atk:特殊攻击力,比如皮卡丘50
- SP Def:特殊防御力,比如皮卡丘50
- Speed:速度,比如皮卡丘90
- 所以一只 《神奇宝贝》可以用一个向量来表示,上述7个数字组成的向量。
二、回归模型VS概率模型
- 我们收集当前神奇宝贝的特征数据和属性数据,例如:皮卡丘电属性,杰尼龟水属性, ...
2.1 回归模型
- 假设还不了解怎么做,但之前已经学过了 regressionregression。就把分类当作回归硬解。 举一个二分类的例子,假设输入神奇宝贝的特征 xx,判断属于类别1或者类别2,把这个当作回归问题。
- 类别1:相当于target是1。
- 类别2:相当于target是−1。
- 然后训练模型:因为是个数值,如果数值比较接近1,就当作类别1,如果数值接近-1,就当作类别2,可以得到如下结果:
- 左图:绿色是分界线,红叉就是Class2的类别,蓝圈就是Class1的类别
- 右图:紫色是分界线,红色叉叉就是 Class2 的类别,蓝色圈圈就是 Class1 的类别。训练集添加有很多的距离远大于1的数据后,分界线从绿色偏移到紫色
- 存在的问题
- 这样用回归的方式硬训练可能会得到紫线,直观上就是将绿色的线偏移一点到紫色的时候,就能让右下角的那部分的值不是那么大了。但实际是绿色的才是比较好的,用回归硬训练并不会得到好结果。此时可以得出用回归的方式定义,对于分类问题来说是不适用的。
- 还有另外一个问题:比如多分类,类别1当作target1,类别2当作target2,类别3当作target3…如果这样做的话,就会认为类别2和类别3是比较接近的,认为它们是有某种关系的;认为类别1和类别2也是有某种关系的,比较接近的。但是实际上这种关系不存在,它们之间并不存在某种特殊的关系。这样是没有办法得到好的结果。
2.2 其他模型(理想代替品)
- 先看二分类,将 function中内嵌一个函数 g(x),如果大于0,就认识是类别1,否则认为是类别2。损失函数的定义就是,如果选中某个funciton f(x),在训练集上预测错误的次数。当然希望错误次数越小越好。但是这样的损失函数没办法解,这种定义没办法微分。这是有方法的,比如Perceptron(感知机),SVM等。下面介绍了一种概率模型。
三、概率模型实现原理
3.1 盒子抽球概率举例
- 说明:假设两个盒子,各装了5个球,还得知随机抽一个球,抽到的是盒子1的球的概率是 2/3,是盒子2的球的概率是1/3。从盒子中蓝色球和绿色球的分配可以得到:
- 在盒子1中随机抽一个球,是蓝色的概率为4/5,绿的的概率为1/5
- 在盒子2中随机抽一个球,是蓝色的概率为2/5,绿的的概率为3/5
- 现在随机从两个盒子种抽一个球,抽到的是盒子1种蓝色球的概率是:
3.2 概率与分类的关系
- 将上面两个盒子换成两个类别:
- 知道红色方框的值,就可以计算出给一个x,它是属于哪个类型的,和,哪个列别的概率大就属于哪个类别。接下来就需要从训练集中估测红色方框中的值。这一套想法叫做生成模型(Generative Model)。因为有了这个模型,就可以生成一个x,可以计算某个x出现的概率,知道了x的分布,就可以产生自己的x。
3.2.1 先验概率
- 先考虑简单的二分类,水属性或者一般属性,通过训练集的数据可以计算出和,如下图:
- 水属性占比:
- 普通属性占比:
- 下面我们要计算海龟是水属性的概率,我们向模型中输入的是一个特征向量,也就是在水洗神奇宝贝中随机选一只,是海龟的概率。下面将训练集中的79个水系的神奇宝贝,属性
Defense
和SP Defense
进行可视化,这里我们可以假设这79个点是从高斯分布(Gussian distribution)中采样的,现在需要从这79个点中找出符合的那个高斯分布。
3.2.2 高斯分布
- 我们可以把高斯分布看作一个函数,输入就是一个向量x,输出就是选中x的概率(实际上高斯分布不等于概率,只是和概率成正比)。函数是由期望和协方差矩阵决定。下图先后说明了同样的,不同的,概率分布的最高点的位置是不同的;同样的,不同的,概率分布的最高点是一样的,但是离散程度不同。
- 我们可以假设通过79个点估测出了期望和协方差矩阵。期望是图中的黄色点,协方差举证是红色的范围。现在给一个不在79个点之内的新点,用刚才估测出的期望和协方差矩阵写出高斯分布的函数,然后把x代入,计算被挑选出来的概率。
3.2.3 最大似然估计
- 首先对于这79个点,任意期望和协方差矩阵构成的高斯分布,都可以生成这些点。但是他们产生这些点的可能性不同。给定一个和,他们生成点的概率为,也称为样本的似然函数。将使得最大的记做,就是所有的Maximum Likelihood(最大似然估计)
3.2.4 应用最大似然估计计算期望和协方差
四、分类模型
4.1 分类
- 我们得到需要计算的值,就可以进行分类了,左上角的图中蓝色点是水属性的神奇宝贝,红色点是一般属性的神奇宝贝,图中的颜色:越偏向红色代表是水属性的可能性越高,越偏向蓝色代表是水属性的可能性越低。右上角在训练集上进行分类的结果,红色就是 大于0.5的部分,是属于类别1,相对蓝色属于类别2。右下角是放在测试集上进行分类的结果。结果是测试集上正确率只有 47% 。当然这里只处理了二维(两个属性)的情况,那在7维空间计算出最大释然估计值,此时μ是7维向量,Σ是7维矩阵。得到结果也只有54% 的正确率。
4.2 模型优化
- 通常来说,不会给每个高斯分布都计算出一套不同的最大似然估计,协方差矩阵是和输入feature大小的平方成正比,所以当feature很大的时候,协方差矩阵是可以增长很快的。此时考虑到model参数过多,容易Overfitting,为了有效减少参数,给描述这两个类别的高斯分布相同的协方差矩阵。
- 此时修改似然函数为。计算方法和之前相似。分别加起来取平均值即可。但是的计算有所不同,为每个的加权和。
五、概率模型-建模三部曲
- 上述问题我们可以简化为三步
- 实际我们要做的就是找到一个概率分布模型,可以最大化的产生data的likelihood。
六、后验概率
标签:概率,机器,Classification,李宏毅,分类,协方差,类别,皮卡丘,高斯分布 来源: https://blog.csdn.net/qq_38689352/article/details/114820223