分类
x -> function -> Class n
分类问题就是要找到一个函数使得给定输入能输出它所属的类别。
又以宝可梦为例,宝可梦有十八种属性:电、火等

比如输入是皮卡丘输出就是电。
如何分类
首先要收集训练数据
在二元分类模型(只有两个类别)中:
输入x,g(x) > 0 则 class1 否则 class2
那么损失函数可以这样定义:
也就是它的错误次数,越小说明这个函数越好。
下面通过概率论的知识来解决找到最好的函数问题。

给定两个盒子,从这两个盒子中随机抽一个球出来,它是蓝色的。
那么这蓝色的球从盒子1和盒子2中抽出来的几率分别是多少?
假设从盒子1中抽球的概率 ,从盒子2中抽球的概率
并且盒子1里面蓝球的概率是,绿球的概率是
盒子2中蓝球的概率是,绿球的概率是
那么根据贝叶斯公式,可以计算出蓝球从盒子1中抽出来的概率是:
现在把盒子换成类别的话:

假设有两个类别Class1和Class2。
给定一个x,那么它属于哪个类别呢?
如果知道从Class1中抽x的概率和从Class2中抽x的概率
;
从Class1中抽到x的概率以及从Class2中抽到x的概率
那么可以计算x属于Class1的概率有多大:
这就叫做生成模型(Generative Mode)。顾名思义,有了这个模型,这可以用来生成x。
可以计算某一个x出现的几率,就可以知道x的分布,然后就可以用这个分布来生成x。
假设我们考虑水系(Water)和一般系(Normal)的神奇宝贝。

在训练数据中,共有79只水系的,61只一般系的。
那从Class1中取得一只宝可梦的几率是;
那从Class2中取得一只宝可梦的几率是;

那么从水系的神奇宝贝中挑出一只是海龟的几率()有多大?
也就是
我们知道每个神奇宝贝都是用特征(feature)向量来描述。
我们首先考虑防御力(Defense)和特殊防御力(SP Defense)这两个特征(因为没法画出7个特征的图像出来…)

每个点都代表一只宝可梦,如果给我们一个不在训练数据中的新的神奇宝贝,比如海龟。

那么从水系中挑出一只神奇宝贝是海龟的几率是多少?
可以想象这79只神奇宝贝是从某个高斯分布(正态分布)中取样出来,那么找到海龟代表的那个点的几率就不是0。
那给定这79个点,怎么找到这个高斯分布。
高斯分布常见的形式是:
视频中给出了另一个种形式:

可以把高斯分布想成一个函数,这个函数的输入就是向量x,代表某只宝可梦的数值;
输出就是这只宝可梦从这个分布中取样出来的几率。
这个几率由均值和协方差矩阵
组成。
把不同的和
代入这个函数,就能得到不同的图像,x的几率也不一样。

同样的不同的
得出来的图形中几率分布最高点的位置不一样;

同样的和不同的
的几率分布最高点位置一样,但是分布发散的程度不一样。
假设有一个高斯分布存在,从这个分布中取样79次后,取出这79个点。
那么这个高斯分布到底是什么样的呢?
假设我们可以根据这个79个点估测出高斯分布的和
。

接着给一个新的点x,它不在我们过去所见过的79个点里面,我们已经知道了和
,我们就可以写出高斯函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PGlK5jBU-1574262013387)(_v_images/20191119222340393_28360.png)] 李宏毅机器学习——概率分类模型_Sigmoid函数_44](https://s2.51cto.com/images/blog/202207/13165232_62ce87d08465327031.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
然后把x代进去,就可以算出这个x从这个分布出取样出来的几率,如果x越接近中心点,那么取样出来的概率就越大。
那么现在的问题就是如何找到这个和
,用的方法是极大似然。
极大似然
可以想象这个79个点能从任何 和
从高斯分布中生成能生成任何一个点,不过几率有高低之别。

如上图,左下角那个分布生成这个79个点的可能性(Likelihood)比右上角的分布要高。
所以给定和
,就可以算出生成这些点的可能性 就是取样出每个点的几率之积:
上面的不是代表损失函数,而是取Likelihood中的首字母。
所以,接下来要做的事情是找到生成这个79个点可能性最大(maximum likelihood)的高斯分布()。
我们可以穷举所有的和
,找到使上面式子结果最大。
平均就是
而是
然后根据上面的公式算出来两个类别的和
:

现在我们就可以进行分类了!
我们只要算出的几率,根据下式:
如果,那么x就属于类别1(水系)。
我们已知了和
,然后代入
和
得出
的值,同理可得出
的值,整个式子的结果就可以计算出来了。
那结果怎样?

蓝色的点是水系的神奇宝贝的分布,红点时一般系的分布。

红色区域几率大于0.5是类别1;蓝色区间几率小于0.5,是类别2。
然后把这个模型用于测试数据,发现正确率只有47%,但此时我们只考虑了两个特征。
我们把所有特征都考虑进来(共7个),结果准确率也只有54%。
上面得出的分类结果不太好,我们优化一下模型,让两个类别共用同一个。

假设水系79个神奇宝贝是从的高斯分布生成出来的,同时另外61只(编号从80开始)神奇宝贝从
的高斯分布生成出来,这两个分布的协方差矩阵是同一个。
那该怎么计算最大似然呢?
用产生
到
,用
产生
到
和
的计算方法和前面的相同。
而的取值为
然后再看一下结果,看有什么改进没

在考虑了所有特征的情况下,准确率到了73%,右边的模型也称为线性模型。
总结一下上面的步骤

如果所有特征(维度)都是独立的,那么你可以尝试使用朴素贝叶斯分类器。
Sigmoid 函数
我们来整理下这个式子,上下同除分子,得到:
令
因为 以及
所以就有上式等于:
这个函数叫做Sigmoid函数,它的图形为:

接下来算一下应该是怎样的
把相乘的部分变成相加得
而
代表Class1在训练数据集中出现的次数,
代表Class2在训练集中出现的次数。
而
接下来把展开
展开:
所以可以写成:
而我们上面说过,如果共用的话,那么就有
那么上式有:
假设 ,后面这一项其实就是一个常数,另
因为
而
也就有
它解释了为什么共用时界线是线性的。
在生成模型中,我们找出就可以代入上式,然后就能算出几率
但是为什么要这么麻烦呢?最终要找到一个向量和一个常量
,如果我们能否直接找出
和
就好了。
















