首页 > 代码库 > ML—朴素贝叶斯

ML—朴素贝叶斯

华电北风吹
日期:2015/12/12

朴素贝叶斯算法和高斯判别分析一样同属于生成模型。但朴素贝叶斯算法须要特征条件独立性如果,即样本各个特征之间相互独立。

一、朴素贝叶斯模型
朴素贝叶斯算法通过训练数据集学习联合概率分布p(x,y),x=(x1,x2,...,xn)Rn,yR<script type="math/tex" id="MathJax-Element-1277">p(x,y),当中x=(x_1,x_2,...,x_n) \in R^n,y\in R</script>。详细的对于K分类问题就是须要学习一个类别的先验概率分布p(y=ck),k=1,2,...,K<script type="math/tex" id="MathJax-Element-1278">p(y=c_k),k=1,2,...,K</script>和每一个类别下的条件概率分布(如式1-1)
p(x|y)=p(x1,x2,...,xn|y)(1-1)<script type="math/tex" id="MathJax-Element-1279">p(x|y)=p(x_1,x_2,...,x_n|y) \tag{1-1}</script>
因为朴素贝叶斯算法没有如果特征的分布,因此须要将每一个特征量化为离散型变量,然后学习各个特征水平下的条件概率。

如果各个特征xi<script type="math/tex" id="MathJax-Element-1280">x_i</script>被分别量化为Si<script type="math/tex" id="MathJax-Element-1281">S_i</script>个水平,那么共同拥有K+Kni=1Si<script type="math/tex" id="MathJax-Element-1282">K+K\prod_{i=1}^{n}{S_i}</script>个须要学习的參数。
可是,为了使朴素贝叶斯算法变得简单点—主要是降低參数个数,就强加了一个条件概率分布的独立性如果(详细如式1-2)
p(x|y)=p(x1,x2,...,xn|y)=ni=1P(xi|y)(1-2)<script type="math/tex" id="MathJax-Element-1283">p(x|y)=p(x_1,x_2,...,x_n|y)=\prod_{i=1}^{n}{P(x_i|y)} \tag{1-2}</script>
这样须要学习的參数个数就变为K+Kni=1Si<script type="math/tex" id="MathJax-Element-1284">K+K\sum_{i=1}^{n}{S_i}</script>个,大大的简化了模型。

二、朴素贝叶斯參数预计
在条件独立性如果下,贝叶斯模型的參数学习就简化为类别先验概率p(y=ck)<script type="math/tex" id="MathJax-Element-1285">p(y=c_k)</script>和条件概率p(xi|y)<script type="math/tex" id="MathJax-Element-1286">p(x_i|y)</script>的学习。

1、极大似然预计
对于训练数据集(x(i),y(i)),x(i)Rn,y(i)R<script type="math/tex" id="MathJax-Element-1287">(x^{(i)},y^{(i)}),x^{(i)}\in R^n,y^{(i)}\in R</script>,似然函数例如以下,
L(?y,?x|y)=mi=1p(x(i),y(i))=mi=1p(y(i))nj=1p(x(i)j|y(i))(2-1)<script type="math/tex" id="MathJax-Element-1288">L(\phi_y,\phi_{x|y})=\prod_{i=1}^{m}{p(x^{(i)},y^{(i)})}=\prod_{i=1}^{m}{p(y^{(i)})\prod_{j=1}^{n}p(x_j^{(i)}|y^{(i)})} \tag{2-1}</script>
结合y?y=1<script type="math/tex" id="MathJax-Element-1289">\sum_{y}{\phi_y}=1</script>以及Sip(xi|y)=1<script type="math/tex" id="MathJax-Element-1290">\sum_{}^{S_i}p(x_{i}|y)=1</script>,能够easy得到下式(简单的求偏导就可以,两式均是):
?y=k=mi=11{y(i)=k}m(2-2)<script type="math/tex" id="MathJax-Element-1291">\phi_{y=k}=\frac{\sum_{i=1}^{m}1\{y^{(i)}=k\}}{m}\tag{2-2}</script>
?xi=j|y=k=mi=11{y(i)=k?xi=j}mi=11{y(i)=k}(2-3)<script type="math/tex" id="MathJax-Element-1292">\phi_{x_i=j|y=k}=\frac{\sum_{i=1}^{m}1\{y^{(i)}=k \bigcap x_i=j\}}{\sum_{i=1}^{m}1\{y^{(i)}=k\}}\tag{2-3}</script>

2、古德-图灵预计
主要用于解决统计样本不足的概率预计问题,主要思想是在统计中相信可靠的统计数据,而对不可信的统计数据打折扣的一种概率预计方法。同一时候将折扣出来的那一小部分概率给予为看见的事件。

3、贝叶斯预计(拉普拉斯光滑)
在公式2-2和2-3中。会出现分子分母同为0的情况。解决这样的情况的方案例如以下:
?y=k=mi=11{y(i)=k}+λm+Kλ(2-4)<script type="math/tex" id="MathJax-Element-1293">\phi_{y=k}=\frac{\sum_{i=1}^{m}1\{y^{(i)}=k\}+\lambda}{m+K\lambda}\tag{2-4}</script>
?xi=j|y=k=mi=11{y(i)=k?xi=j}+λmi=11{y(i)=k}+Sjλ(2-5)<script type="math/tex" id="MathJax-Element-1294">\phi_{x_i=j|y=k}=\frac{\sum_{i=1}^{m}1\{y^{(i)}=k \bigcap x_i=j\}+\lambda}{\sum_{i=1}^{m}1\{y^{(i)}=k\}+S_j\lambda}\tag{2-5}</script>
当中λ0<script type="math/tex" id="MathJax-Element-1295">\lambda\geq 0</script>.一般取λ=1<script type="math/tex" id="MathJax-Element-1296">\lambda=1</script>。

三、朴素贝叶斯决策方法—最大后验概率
对于測试数据xRn<script type="math/tex" id="MathJax-Element-1297">x\in R^n</script>,朴素贝叶斯模型採用贝叶斯规则决策。详细表述例如以下:
p(y|x)=argmaxkp(y=k)p(x|y=k)<script type="math/tex" id="MathJax-Element-1298">p(y|x)=arg\max_k p(y=k)p(x|y=k)</script>
採用后验概率最大的类别作为模型输出类别。

如今细致想想感觉朴素贝叶斯跟k-means逻辑上的思路还是比較接近的。

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

ML—朴素贝叶斯