Classification的目的是给输入的对象一个恰当的分类。
如:
还是前面P2的宝可梦例子。
一只宝可梦可以用很多属性来描述,如:
如上图,一只宝可梦可以用7个属性来描述它。
当两只宝可梦相遇时,它们之间会有属性相克:
如何完成这个分类任务?
首先收集一些training data。
假如是一个二分类,结果接近1认为是分类1,结果接近-1认为是分类2。
那么可能会遇到下面的问题:
有时候class1和class2的分布可能出现右图这样右下角有一堆离散的数据。
当我们使用regression模型训练时,为了减少误差,最后训练出的模型可能是紫色的直线。
那么我们应该怎么做呢?
如果是二分类问题:
回忆高中知识:
如果我们把盒子换成分类:
回到宝可梦的例子,我们把宝可梦分成水系的宝可梦和一般的宝可梦。
ID小于400的作为训练数据,大于400的作为测试数据。
如何计算水系宝可梦里挑出来一个是海龟的概率?
每只宝可梦用一个向量表示,又称之为feature。
我们先把其中两个属性画成一个图。
高斯分布:
假设我们能够根据上面的79个宝可梦的数据,来估计出高斯分布的μ和
将μ和代入高斯分布的表达式,这样我们就可以写出高斯分布的函数。
假如有多个不同参数的高斯分布函数,它们都可sample出这79个数据,但是sample出各个点的几率不同。
这时候我们要用最大似然估计来找出最有可能的高斯分布的参数。
计算后的结果是:
现在我们可以开始分类了。
图上每一个点都可以计算是C1的几率。显然蓝色点的部分是水系宝可梦的几率比较大。
常见的情况是不同的class用同样的。因为虽然分类不同,但他们的散步差不多。
这样只需要比较少的变量就可以描述模型了。
再计算likelihood。
共用之后,分界线变成了一条直线。
回顾一下这个模型:
为什么选择高斯分布作为几率的模型?
你也可以选择其他的模型,这是你自己决定的。
naive bayes classifier:朴素贝叶斯分类器。
使用这个分类器的前提是数据独立同分布假设成立。
上下同除分子,把左下角的项写成z,我们可以发现函数变成了sigmoid函数的形式。
把z变形一下。
继续计算,得到最终的z。
又,可继续化简,再把z写成wx+b的形式:
上面的方法中我们需要取得一些概率的样本,计算出μ和,才能计算出模型。那么我们能否有一个快捷的方法计算出w和b呢?
请看下一节。