4. Classification - Probabilistic Generative Model
4.1 概率生成模型
对于二分类问题,在数据比较合适的时候,可以使用线性函数,y>0为一类,y<0为一类,但多数情况用线性函数是做不到的。
我们思考一个新的未知的类别时一般会根据历史数据来考虑属于哪个类别的可能性大一些,所以,考虑能不能用模型计算未知样本属于类别的概率,将它分类为概率最大的那个类。
这里主要用到的就是贝叶斯公式:

类别的概率分布很容易根据训练集中样本已标记的类别得到,而样本在不同类别中的概率分布就比较难计算。
-
我们假设在类别中样本服从高斯分布。注:也可以假设服从其他的分布。
Gaussian Distribution
-
对每个样本则可以计算出其出现的概率,假设样本是独立的,那么其联合概率密度为

- 求使得联合概率密度最大时的均值μ和协方差Σ
根据求得的类别概率分布,再利用贝叶斯公式计算所得的模型分类正确率并不高。增加特征数量,准确率有所提高,但是结果不够好;调整模型,认为不同类别的高斯密度函数其方差是一样的(方差和训练样本的数量相关,当数量增多,方差会增大,通常情况下会认为不同类别下的密度函数share同一个方差),准确率进一步提升。
注:概率密度函数是自己选择的。对于取值只有两种的特征,可以选择伯努利分布,你也可以使用朴素贝叶斯分类,认为特征之间是相互独立的。
4.2 概率生成模型与sigmod函数

以概率密度是高斯分布继续推导可以得到:

所以,sigmoid函数实际上就是求样本属于某类别的概率。那我们可以简化这求密度函数参数的过程,直接去求参数w,b以得到概率大小而判断类别的,这就是Logistic回归的方法。可以想见,这样子求出的概率应该不是局限于设定为高斯分布的情形了。

5. Classification - Logistic Regression
5.1 Logistic 回归模型
在第5节推导了类别概率密度假设是高斯分布时,条件概率可以表示成sigmoid函数,事实上,大部分的概率分布最后都可以推导为sigmoid函数,因此,我们可以直接利用sigmoid函数来表示条件概率,这就是Logistic回归的方法。

根据极大似然的思想,我们希望出现如训练集这样结果的概率是最大的,所以我们要求w和b使得L(w,b)最大。

有趣的是,在二类别分类问题中,当我们假设class1对应y=1,class2对应y=0时,对数似然函数最后可化简为交叉熵代价函数,如下图:


Cross entropy 交叉熵
用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小cross entropy.png
最后得到的迭代公式为:

注:在Logistic回归中使用极大似然函数而不使用二次代价函数,主要是因为sigmoid函数的特殊性,求微分后,当远离目标点时,微分值是0,靠近目标点时微分值也是0。
5.2 Genarative v.s. Discriminative 生成模型和判别模型比较
- 生成模型:由训练数据学习联合概率分布,然后求出条件概率分布。典型的生成模型有 朴素贝叶斯、隐马尔可夫模型。
- 判别模型:由训练数据直接学习出决策函数或者条件概率分布作为预测模型。典型的判别模型有 k近邻、感知机、决策树、逻辑斯蒂回归、SVM、Adaboost、最大熵、条件随机场等。
注:即便是相同的可选函数集合,在使用相同的训练数据情况下,这两种方法得到的模型也很大可能是不一样的。
优缺点:
- 通常来说,一般认为判别模型会比生成模型的效果好
- 但是判别模型也有一些优势:
- 在概率分布的假设下,只需要比较少的训练数据,并且对于噪音更加稳健
- 先验概率和依赖类别的概率可以从不同数据来源进行训练
5.3 多分类问题
多分类问题中将sigmoid函数改用softmax函数(用类似之前的方法可以推导得到softmax函数表示的就是该类别的条件概率),k类别的softmax函数如下:

以3类别分类为例:

5.4 Logistic回归函数的局限
从根本上讲,Logistic函数解决的还是线性可分的数据,对于线性不可分的情形就无能为力。
为了让线性不可分的数据也能用logistic回归,我们可以使用特征转换。但是特征转换并不总是容易实现的,如果有领域知识会更容易一些。
特征转换也可以作为神经网络的一层一起训练。

网友评论