斯坦福机器学习【5】生成学习算法(高斯判别与朴素贝叶斯)
生成模型与判别模型的区别:
生成模型:生出数据分布的模型, 在处理过程中得到数据的统计信息 p(x|y)
判别模型:判断数据分类的模型; 得到数据的分类, p(y|x)
高斯判别分析模型
http://blog.csdn.net/stdcoutzyx/article/details/9285001
朴素贝叶斯
https://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html
朴素贝叶斯是一个分类算法,输入一个X,X是一个向量包含多个特征,每一个特征包含多个特征值, 即X = (x1, x2, x3 ..., xn), 第一个特征x1可以包含大中小这样的三个特征值, 求出最后属于哪一个y;
首先这个问题可以写成一个概率公式,即 P(yi | X),最后选择最大的那个yi 的概率。
而现在直接求解P(yi | X)是不好求的,所以可以利用它贝叶斯定理: p(yi | X) = p(X | yi) P(yi) / p(X), 因为对于每个类别而言,我们预测的这个X是一样的,所以分母P(X)就没有意义了, 最后就是求 argmax P(X | yi) P(yi)
对于训练接的样本,我们可以很方便的求解 P(yi) , 而P(X | yi) = P( x1, x2, x3 ... , xn | yi) ,这个是不好求的,而朴素贝叶斯的核心思想就是解决这个问题,它大胆做出了一个假设,X中的所有特征值都是相互独立的,所以 P( x1, x2, x3 ... , xn | yi) = P(x1 | yi)P(x2 | yi) P(x3 | yi) ... P(xn | yi) ; 而P(x1 | yi)的求法就是在 yi 类中, 找所有x1的特征,对x1所有的特征值都要 求解出来;具体参考《学习统计方法》P51
计算多概率的乘积一伙的某个类别的概率,即计算p(w0|c1)p(w1|c1)p(w2|c1),如果其中一个概率值为0,那么最后的乘积也为0,解决方法就是为所有类别下的划分加1
朴素贝叶斯和逻辑回归区别
总结起来,有以下几点不同:
(1) Naive Bayes是一个生成模型,在计算P(y|x)之前,先要从训练数据中计算P(x|y)和P(y)的概率,从而利用贝叶斯公式计算P(y|x)。
Logistic Regression是一个判别模型,它通过在训练数据集上最大化判别函数P(y|x)学习得到,不需要知道P(x|y)和P(y)。
(2) Naive Bayes是建立在条件独立假设基础之上的,设特征X含有n个特征属性(X1,X2,...Xn),那么在给定Y的情况下,X1,X2,...Xn是条件独立的。
Logistic Regression的限制则要宽松很多,如果数据满徐条件独立假设,Logistic Regression能够取得非常好的效果;当数据不满度条件独立假设时,Logistic Regression仍然能够通过调整参数让模型最大化的符合数据的分布,从而训练得到在现有数据集下的一个最优模型。
(3) 当数据集比较小的时候,应该选用Naive Bayes,为了能够取得很好的效果,数据的需求量为O(log n)
当数据集比较大的时候,应该选用Logistic Regression,为了能够取得很好的效果,数据的需求量为O( n)
Naive Bayes运用了比较严格的条件独立假设,为了计算P(y|x),我们可以利用统计的方法统计数据集中P(x|y)和P(y)出现的次数,从而求得P(x|y)和P(y)。因而其所需的数据量要小一些,为O(log n).
Logistic Regression在计算时,是在整个参数空间进行线性搜索的,需要的数据集就更大,为O( n)
贝叶斯的三种模型:
https://blog.csdn.net/u012162613/article/details/48323777/
1、多项式模型
适用于 特征值 为离散的情况
2、高斯模型
当特征值为连续值时,会因为样本太少而不好统计每一个数字,所以利用高斯分布,假设每一个特征都服从高斯分布,然后求取该分布的 均值和方差
3、伯努利模型
仅用于 特征值为0,1两种情况