Classification(分类)
本章节通过建立概率生成模型解决分类问题,输入对象 x x x ,输出它属于的类别
应用:信用评估、医疗诊断、手写识别、面部识别
如何进行分类
分类问题中的线性回归
我们考虑一个二元分类问题,一类标记为
C
l
a
s
s
1
Class 1
Class1,一类标记为
C
l
a
s
s
2
Class 2
Class2。如果对于左图中的数据利用回归模型可以很好的区分,但是如果数据分布不是聚集分布,如右图,有部分
C
l
a
s
s
1
Class1
Class1 的数据远离拟合的直线,根据线性回归此时拟合的直线变为紫色直线,出现误判的情况。
此外,对于多分类问题如果说类别1指目标值为1,类别2指目标值为2,类别3指目标值为3…则会带来问题:会让人理解为类别1和类别2靠近,他们之间存在关系;类别2和类别3靠近,他们之间也存在关系。这些地方都会存在一些问题。
较为理想的替代方法是:
对于二分类问题,定义一个函数,当函数值大于0就划分为类别1,否则就为类别2.损失函数定义为在测试数据上误分类的次数。
这样问题的关键就在于如何找到满足的函数。
概率生成模型
贝叶斯
贝叶斯公式
有两个盒子,都有蓝色球和绿色球,现在随机从两个盒子中抽出一个蓝色的球,根据贝叶斯公式可以计算。
假设两个盒子,各装了5个球,还得知随机抽一个球,抽到的是盒子1的球的概率是三分之二,是盒子2的球的概率是三分之一。从盒子中蓝色球和绿色球的分配可以得到:在盒子1中随机抽一个球,是蓝色的概率为五分之四,绿的的概率为五分之一,同理得到盒子2的信息。
现在求随机从两个盒子中抽一个球,抽到的是盒子1中蓝色球的概率是多少?(高中数学得:)
P
(
B
1
∣
B
l
u
e
)
=
P
(
B
l
u
e
∣
B
1
)
P
(
B
1
)
P
(
B
l
u
e
∣
B
1
)
P
(
B
1
)
+
P
(
B
l
u
e
∣
B
2
)
P
(
B
2
)
P(B_1|Blue)=\frac{P(Blue|B_1)P(B_1)}{P(Blue|B_1)P(B_1)+P(Blue|B_2)P(B_2)}
P(B1∣Blue)=P(Blue∣B1)P(B1)+P(Blue∣B2)P(B2)P(Blue∣B1)P(B1)
如果将上面例子中的盒子换成
C
l
a
s
s
1
Class1
Class1 和
C
l
a
s
s
2
Class2
Class2
我们可以得出,如果得到上图红色方框的数值,就可以在给定
x
x
x 的情况下,判断出
x
x
x 是属于
C
l
a
s
s
1
Class1
Class1 还是
C
l
a
s
s
2
Class2
Class2,
P
(
C
1
∣
x
)
P(C_1|x)
P(C1∣x) 和
P
(
C
2
∣
x
)
P(C_2|x)
P(C2∣x),那个值比较大就属于哪个类别。
生成概率模型其实是先假设数据的概率分布(正太、伯努利、泊松),然后用概率公式去计算 x x x 所属于的类型 p ( C 1 ∣ x ) p(C_1∣x) p(C1∣x)
如果需要自己生成
x
x
x,可以计算
x
x
x 的出现几率,这个几率的计算如下:
P
(
x
)
=
P
(
x
∣
C
1
)
P
(
C
1
)
+
P
(
x
∣
C
2
)
P
(
C
2
)
P(x)=P(x|C_1)P(C_1)+P(x|C_2)P(C_2)
P(x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)
先验概率
比如说,Pokemon分两类,
C
l
a
s
s
1
Class1
Class1 的标签是 Water,
C
l
a
s
s
2
Class2
Class2的标签是Normal。训练集中有79只Water Pokemon和61只Normal Pokemon。
根据公式需要得到先验概率和某类Pokemon的分布概率密度函数。其先验概率为:
P
(
C
1
)
=
79
79
+
61
=
0.56
P(C_1)=\frac{79}{79+61}=0.56
P(C1)=79+6179=0.56
P
(
C
1
)
=
61
79
+
61
=
0.44
P(C_1)=\frac{61}{79+61}=0.44
P(C1)=79+6161=0.44
其次,我们需要求得某个类别的分布概率密度函数
用一个列向量表示一只Pokemon的特征参数
我们设置两个属性值:Defense 和 SP Defense
因为输入参数是2*1的列向量,所以采样点符合二元高斯分布的概率密度函数,概率密度函数是这样子的:
f
μ
,
∑
(
x
)
=
1
(
2
π
)
D
/
2
1
∣
∑
∣
1
/
2
e
x
p
{
−
1
2
(
x
−
μ
)
T
∑
−
1
(
x
−
μ
)
}
f_{\mu,\sum}(x)=\frac{1}{(2\pi)^{D/2}}\frac{1}{|\sum|^{1/2}}exp\{-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu)\}
fμ,∑(x)=(2π)D/21∣∑∣1/21exp{−21(x−μ)T∑−1(x−μ)}
这样,输入一个
x
x
x 向量,我们能得到它的抽样概率。
并且我们可以知道,上面的概率密度函数形状取决于
μ
\mu
μ 的值和协方差矩阵
∑
\sum
∑
利用最大似然估计求出概率密度函数中的参数
μ
∗
\mu^*
μ∗ 和
∑
∗
\sum^*
∑∗
步骤如下图(假设有79个数据点)
从上图步骤中求出两个概率密度的均值和协方差矩阵
这样,把两组均值向量和协方差矩阵代入模型,就建立起来一个分类器。
我们可以通过分类器对某个对象
x
x
x 进行分类
对模型进行优化
把两个不同类别的分布概率密度函数中的协方差矩阵统一
在我们进行优化后,调整最大似然函数,把参数带回模型中,发现模型的准确率有了一定的提高,从54%的准确率提高到了73%的准确率。
总结—分类模型的建立
选择模型—>判断函数的好坏—>确定最优函数
朴素贝叶斯
如果假设所有的feature都是相互独立的,也就是说 P(C|x) = P(C|x1)*P(C|x2)…P(C|xn),协方差除了对角线其余位置都是0,这种情况下的 Generative model 就是朴素贝叶斯了。只是简化了分布假设,其它都一样。