《机器学习》学习笔记(三)-- classification

  1. 概念描述
  2. 如何去分类?
  3. Generative model
  4. Gaussian Distribution
  5. 开始分类
  6. 分类的3个步骤
  7. Probability Distribution

1.概念描述
分类问题是找一个function,input一个object,输出的则是判断该object属于哪一个class

就以宝可梦为例,宝可梦有18种属性,现需要解决的分类问题就是做一个宝可梦种类的分类器

在这里插入图片描述
输入数值化
对于宝可梦分类问题,首先就要将一只宠物当作function的input–也就是数值化

比如可以用一组数字来描述它的特性,比如:

  • 有多强(total strong)
  • 生命值(hp)
  • 攻击力(Attack)
  • 防御力(defense)
  • 特殊攻击力(Special Attack)
  • 特殊攻击的防御力(Special defend)
  • 速度(speed)

在这里插入图片描述

2.如何做分类?
Training data for Classification
···可以将编号400以下的宝可梦当作是training data,编号400以上的就做testing data,因为宝可梦的个数会不断更新,所以这样做可以去模拟已经发现已有的宝可梦情况下,如果看到新的宝可梦,能不能够预测其是那种属性?

可以将分类问题当作是回归问题吗?
以二值化分类为例,在Training时让输入为class1的输入为1,输入为class2的输出为-1;那么在testing的时候,regression的output是一个数值,它接近1则说明它是class1,接近-1则说明其是class2

这样做会遇到什么样的问题?
假设model是y=b+w1x1+w2x2,input是两个feature,x1,x2
在这里插入图片描述

有两个class,蓝色的是class1,红色的是class2,如果用Regression的做法,那么就希望蓝色的这些属于class 1的宝可梦,input到Regression的model,output越接近1越好,红色的属于class2的宝可梦,input到Regression的model,output越接近-1越好

假设真的找到了这个function,就像上图所示,绿色的线表示b+w1x1+w2x2=0 ,也就是class1 和 class2的分界线,在这种情况下,值接近-1的宝可梦都集中在绿线的左上方,接近1的宝可梦都集中在绿线的右下方。

但是上述现象只会出现在样本点比较集中的分布在output为-1和1的情况,如果如下上图有厕所是,我们已经知道绿线为最好的哪个model的分界线,它的左上角的值小于0,右下角的值大于0,越往右下方值越大,所以如果要考虑右下角的点,用路线对应的model,他们做regression时候的output会远大于1。这就与一开始做regression的时候,实际上已经给所有的点打上了-1或1的标签,会希望紫色点在model中的output都越接近1越好,所以这些output远大于1的点,他对于绿线对应的model来说时error,是不好的。所以如果用上图这样的样本点通过regression训练出来的model,会时紫色这条分界线对应的model,所以对于绿线,紫线反而减小了由右下角这些点所带来的error。

但是相应的,紫色的线如果用来做分类的话,确实错误的

Regression的output是连续性之的数值,而classification要求的output是离散性质的点,我们很难找到一个Regression的function使大部分样本点的output都集中在某几个离散点的附近
因此,Regression定义model好坏的定义方式对classification来说是不适用的

3.Generative model

Ideal Alternatives:
Function:

我们要找的function f(x)里面会有另外一个function g(x),当我们的input x 输入后,如果g(x)> 0,那fx的输出就是class1.如果gx<0,那fx的输出就是class2,这个方法保证了function的output都是离散的表示class的数值。
在这里插入图片描述
Loss function:
我们把loss function定义成L(f)= ∑n δ(fx != yn),即这个model在所有training data上predict预测错误的次数,也就是说费雷错误的次数越少,这个function表现得越好,但是这个loss function没有办法微分,是无法用gradient descent的方法去解的,当然有Preceptron,SVM这些方法可以用,但是先用另外一种方法来解决:Solution–Generative model

概率理论解释:
假设有一个二元分类的问题,我们拿到一个input x,想要知道这个x属于class 1或class 2的概率。实际上就是一个贝利也公式,x属于class的概率就等于class1自身发生的概率乘上在class1中取出x这种颜色球的概率,除以class1和class2里取出x这种颜色球的概率:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这一套想法叫做Generative model(生成模型),因为有这个model的话,就可以拿它来生成x(可以计算出每一个x出现的概率,就可以用这个分布来生成x)

Prior
P(c1)和P(c2)这两个概率被称为Prior。
假设考虑的是二元分类问题,编号小于400的data用来Training,编号大于400的data用来testing,如果想更严谨一点,可以在Training data里面分一部分balidation出来模拟testing的情况。

比如在Training data中,有79只水系宝可梦,61只一般系宝可梦,那么P(c1) = 79/(79+61)=0.56,P(c2)=61/(79+61)=0.44

接下来的问题就是如何得到P(x/c1)和P(x/c2)的值。

Probability from Class
假设x是一只新来的海龟,是水系的,但是在79只水系的宝可梦training data里根本没有海归,所以不可能挑出来一直海龟。
在这里插入图片描述
但是其实每一只宝可梦哦都是用一组特征值组成的向量来表示的,在这个乡里里面,一共有七种不同的属性,味蕾可视化,目前只考虑Defense和SP Denfence这两个属性。

假设海龟的vector是【103,45】,虽然每个店在已有的数据里并没有出现过,但是并不能认为它出现的概率为0,我们可以用已有的数据去估测海龟出现的可能性

可以想象已有的79只水系宝可梦的data只是冰山一角,假定水系宝可梦的Defense是从一个高斯分布(Gaussion Distribution–正态分布)里面产生的,下图只采样了79个点之后得到的分布,但是在高斯分布里采样出海龟点的概率并不是0,而从这79个已知的点中,有如何找到高斯分布的函数呢
在这里插入图片描述
4.Gaussion Distribution

高斯函数的概率密度函数:
在这里插入图片描述
在上式中,u表示均值,Σ表示方差,两者都是矩阵。
在下图中可以看出,同样的Σ,不同的u,概率分布最高点的地方也不一样
在这里插入图片描述
同理,如果是同样的u,不同的Σ,概率分布最亮点的地方是一样的,但是分布的密集程度是不一样的
在这里插入图片描述
那么如何找出Gaussian呢,其实只需要估测出Gaussian的均值u和协方差Σ即可

估测u和Σ的方法就是极大似然估计法,大致思路是:找出最特殊的那对Σ和u,从他们共同决定的高斯函数中,再次采样出79个点,是得到的分布情况和当前已知79点的分布情况相同的机率最大。
在这里插入图片描述
实际上任意一组u和Σ对应的高斯函数(u表示Gaussian的中心点,Σ表示分散程度)都有可能sample出跟当前分布一致的样本点,就像上图中两个红色圆圈所代表的高斯函数,但坑定存在着发生概率更大的Gaussian,也就是更接近的。而之歌函数就是我们要找的。

而极大似然函数L(u,Σ)= fuΣ(x1)·…·fuΣ(x79),实际上就是该事件发生的概率等于每个点都发生的概率之积,我们只需要把每一个点的data代进去,就可以得到一关于u和Σ的函数,分别求偏导,解出微分是0的点,既是L最大的那组参数,便是最终的估值值,通过微分得到的高斯函数的u和Σ的最优解如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同理,再用极大似然估计法再高斯函数的公式计算出class的两个参数,得到最终结果:
在这里插入图片描述
经过以上的计算,我们便得到了
P(C 1),P(x∣C 1),P(C 2),P(x∣C 2 )四个值,就可以做分类问题了

5.开始分类
在得到了4个值后,我们便有了以下数据和具体分布,只需要代入某一个input x,便可以通过公式计算出是否是class 1了。
在这里插入图片描述
得到的结果
通过可视化得到的结果如下:
在这里插入图片描述
左上角的图,横轴是Defense,综值是SP Defense,蓝色的点是水系的宝可梦分布,红色的点是一般系的宝可梦分布,对图中的每一个点都计算出它是class1的概率,该概率用颜色来表示,如果某点在红色区域,则表示它是水系宝可梦的概率更大,如果在其他颜色区域,则是一般系宝可梦的概率比较大。

因为是分类问题,因此令几率>0.5的点为类别1,几率小于0.5的点为类别2,也就是右上角图中的共色和蓝色区域。

但是从testing data上的道德结果可视化后,即右下角的图,发现分布的并不好,只有47的正确率

当然,我们之前用的只是Defense和SP defense这两个参数,在二维空间上的到的效果都不太好,而当我们将宝可梦的6个属性都算上,也就是在六维空间计算时,用6*6的矩阵计算,发现得到的准确率也只有64%,因此该分类器表现得并不好

Midifying Model(改进模型)
其实之前使用的model是不常见的,因为很少有每一个Gaussian都有自己的均值和方差,而比较常见的做法是,不同的class可以共享同一个方差矩阵

其实variance是跟input的feature size的平方成正比的,所以当feature的数量很大时,Σ大小的增长是可以非常快的,在这种i情况下,给不同的Gaussian做不同的协方差矩阵,会造成model的参数态度,而参数多就会导致model的variance过大,出现overfitting的现象,因此对不同的class使用同一个协方差矩阵,可以有效减少参数
在这里插入图片描述
此时就把u1,u2和共同的Σ一起去合成一个极大似然函数,此时可以发现,得到的u1和u2和原来的一样,还是各自的均值,而Σ则是原先Σ1和Σ2的加权
在这里插入图片描述
从结果可以考到,class1和class2在没有共用协方差矩阵前,他们的分界线是一条曲线,如果共用的话,它们之间的分界线就会变成一条直线,这样的model,我们也称之为linear model

如果考虑所有的feature,并公用协方差的话,原来的54正确率就会变成73正确率,显然是有提升的。

6.Three Steps of Classification

classification的三个步骤,实际上也是做machine learning的三个步骤

·Find a function set(model)
之前找到的P(c)和 P(x/c)就是model的参数,选择不同的分布函数或不同参数的高斯分布,救护得到不同的function,把这些不同参数的Gaussian distribution集合起来,就是一个model。

·Goodness of function
对于Gassian diatribution这个model来说,评价的是决定这个高斯函数形状的均值u和协方差Σ这两个参数的好坏,而极大似然函数L(u,Σ)的输出值,就评价了这组参数的好坏

·Find the best function
找到最好的function,就是使L(u,Σ)值最大的那组函数,实际上就是所有样本点的均值和协方差
在这里插入图片描述
7.Probability Distribution

Why Gaussian Distribution?
为什么要用Gaussian的model,而不选择其他的分布函数?其实并不是,高斯分布函数只是一个例子,当然也可以选择其他函数。如果选择简单的分布函数(参数较少),那么bias就大,variance就小;如果选择复杂的分布函数,那bias就小,variance就打。

Naive Bayses Classifier(朴素贝利叶分类法)
假设x=[x1,x2…xk…]中每一个dimension xk的分布都是互相独立的,它们之间的协方差都是0,那么我们可以把x产生的几率拆解成x1,x1…xk产生的几率之积
在这里插入图片描述
这里每一个dimension的分布函数都是一位的Gaussian distribution,如果这样假设的话,就是说,原来那多维度的Gaussian,他的协方差矩阵变成是对角的,在不是对角线的地方,值都是0,这样就可以更加减少需要的参数两,得到一个更简单的model

我们把上述这种方法叫做–朴素贝利叶分类法,如果真的明确了所有feature之间是相互独立的,是不相关的话,使用该方法时非常好的,如果该假设不成立,那么bias就会很大,不是一个好的分类法。

当然,在该例子上使用该model得到的结果也并不理想,因为各种属性之间的关联还是有必要的,比如战斗力和防御力之间就是正相关的。

Analysis Posterior Probability
分析一下后置概率的表达式,会发现一些有趣的现象。
表达式上下除以分子,得到σ(z)=1/(1+e^-z),这个function叫做sigmoid function(S函数)
在这里插入图片描述
S函数是一直逻辑函数,推导过程如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
虽然推导的过程比较复杂,但是最终结果还是比较好的(当Σ1和Σ2共用一个Σ时,经过化简相消z就变成了一个线性方程,x的系数是一个vector w,后面的一大串数字其实就是一个常数项b)
在这里插入图片描述
这个式子说明了,当class1和class2公用Σ时,它们之间的边界时现行的。

所以在Generative model里,需要做的就是找出N1,N2,u1,u2,Σ,找出以后便可以算出w和b,把它们带入式子,就可以计算概率。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值