Naive Bayes 朴素贝叶斯

Naive Bayesian 朴素贝叶斯

内容来自于CS229,浙江大学机器学习听课笔记以及百度百科,blog补充


We would use an example to show this algorithm, this examples is still using in practice now.

Spam email classifier
X X X is 1/0 vector correspond to dictionary and each dimension represents a word. If a word shows up in a email, then its corresponding value equals to 1.
We assume that X i X_i Xi are independently and identically distribution(IID), although it is obvious that they are not for the meaning of email.
We choose top 10,000 common used words as the dictionary.
P ( x 1 . . . x 10000 ∣ y ) = P ( x 1 ∣ y ) P ( x 2 ∣ x 1 , y ) . . . P ( x 10000 ∣ x 9999 , x 9998 . . . x 1 , y ) P(x_1...x_{10000}|y) = P(x_1|y)P(x_2|x_1,y)...P(x_{10000}|x_{9999},x_{9998}...x_1,y) P(x1...x10000y)=P(x1y)P(x2x1,y)...P(x10000x9999,x9998...x1,y)
P ( x 1 . . . x 10000 ∣ y ) = ∏ i = 1 10000 P ( x i ∣ y ) P(x_1...x_{10000}|y) = \prod\limits_{i=1}^{10000}P(x_i|y) P(x1...x10000y)=i=110000P(xiy)
Parameters:
ϕ j ∣ y = 1 = P ( x j = 1 ∣ y = 1 ) \phi_{j|y=1} = P(x_j=1|y=1) ϕjy=1=P(xj=1y=1)
ϕ j ∣ y = 0 = P ( x j = 1 ∣ y = 0 ) \phi_{j|y=0} = P(x_j=1|y=0) ϕjy=0=P(xj=1y=0)
ϕ y = P ( y = 1 ) \phi_y = P(y=1) ϕy=P(y=1)
y = 1 y=1 y=1 means the email is spam email.

Joint likelihood:
L ( ϕ y , ϕ j ∣ y ) = ∏ i = 1 m ( x ( i ) , y ( i ) ; ϕ y , ϕ j ∣ y ) L(\phi_y,\phi_{j|y}) = \prod\limits_{i=1}^m(x^{(i)},y^{(i)};\phi_y,\phi_{j|y}) L(ϕy,ϕjy)=i=1m(x(i),y(i);ϕy,ϕjy)
MLE:
ϕ y = ∑ i = 1 m 1 { y ( i ) = 1 } m \phi_y=\frac{\sum\limits_{i=1}^m1\{y^{(i)}=1\}}{m} ϕy=mi=1m1{y(i)=1}
ϕ j ∣ y = 1 = ∑ i = 1 m 1 { x ( i ) = 1 , y ( i ) = 1 } ∑ i = 1 m 1 { y ( i ) = 1 } \phi_{j|y=1} = \frac{\sum\limits_{i=1}^m1\{x^{(i)}=1,y^{(i)}=1\}}{\sum\limits_{i=1}^m1\{y^{(i)}=1\}} ϕjy=1=i=1m1{y(i)=1}i=1m1{x(i)=1,y(i)=1}
ϕ j ∣ y = 0 = ∑ i = 1 m 1 { x ( i ) = 1 , y ( i ) = 0 } ∑ i = 1 m 1 { y ( i ) = 0 } \phi_{j|y=0} = \frac{\sum\limits_{i=1}^m1\{x^{(i)}=1,y^{(i)}=0\}}{\sum\limits_{i=1}^m1\{y^{(i)}=0\}} ϕjy=0=i=1m1{y(i)=0}i=1m1{x(i)=1,y(i)=0}

Laplace moving
If a new word(not in the top 10000 common words) shows up in a email, ∑ i = 1 m 1 { x ( i ) = 1 , y ( i ) = 1 } = 0 \sum\limits_{i=1}^m1\{x^{(i)}=1,y^{(i)}=1\}=0 i=1m1{x(i)=1,y(i)=1}=0, then ϕ j ∣ j = 0 = 0 \phi_{j|j=0}=0 ϕjj=0=0. This seems not robust, so we use Laplace moving to optimize this equation.
ϕ j ∣ y = 1 = ∑ i = 1 m 1 { x ( i ) = 1 , y ( i ) = 1 } + 1 ∑ i = 1 m 1 { y ( i ) = 1 } + 10000 \phi_{j|y=1} = \frac{\sum\limits_{i=1}^m1\{x^{(i)}=1,y^{(i)}=1\}+1}{\sum\limits_{i=1}^m1\{y^{(i)}=1\}+10000} ϕjy=1=i=1m1{y(i)=1}+10000i=1m1{x(i)=1,y(i)=1}+1
ϕ j ∣ y = 0 = ∑ i = 1 m 1 { x ( i ) = 1 , y ( i ) = 0 } + 1 ∑ i = 1 m 1 { y ( i ) = 0 } + 10000 \phi_{j|y=0} = \frac{\sum\limits_{i=1}^m1\{x^{(i)}=1,y^{(i)}=0\}+1}{\sum\limits_{i=1}^m1\{y^{(i)}=0\}+10000} ϕjy=0=i=1m1{y(i)=0}+10000i=1m1{x(i)=1,y(i)=0}+1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个 Python 代码段,主要是定义了五个分类器:KNN Classifier、Logistic Regression Classifier、Random Forest Classifier、SVM Classifier 和 Naive Bayes。以下是对代码的解析: KNN Classifier 是 K 近邻算法的分类器,它的实现基于最近邻原则,根据最近的 k 个邻居进行分类。KNeighborsClassifier() 是 scikit-learn 库中实现 K 近邻算法的分类器,它可以设置不同的 k 值和距离度量方式。 Logistic Regression Classifier 是逻辑回归分类器,它是一种基于概率的分类方法,将输入特征和权重进行线性组合,然后通过 sigmoid 函数将结果映射到 0 到 1 之间的概率值,最终根据概率值进行分类。LogisticRegression() 是 scikit-learn 库中实现逻辑回归分类器的函数。 Random Forest Classifier 是随机森林分类器,它是一种基于决策树的集成学习方法,将多个决策树的结果进行投票或平均,得到最终的分类结果。RandomForestClassifier() 是 scikit-learn 库中实现随机森林分类器的函数,它可以设置决策树的数量、深度和特征采样等参数。 SVM Classifier 是支持向量机分类器,它是一种基于几何间隔最大化的分类方法,将输入特征映射到高维空间,在高维空间中找到最优的超平面进行分类。SGDClassifier() 是 scikit-learn 库中实现支持向量机分类器的函数,它可以设置不同的损失函数和正则化方式。 Naive Bayes朴素叶斯分类器,它是一种基于叶斯定理的分类方法,假设特征之间相互独立,然后根据叶斯定理计算后验概率,最终进行分类。MultinomialNB() 是 scikit-learn 库中实现朴素叶斯分类器的函数,它适用于特征是离散的情况。 这些分类器都是机器学习中常用的分类算法,可以根据具体的问题选择适合的分类器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值