机器学习笔记2 - 朴素贝叶斯法

1 概念

朴素贝叶斯法(Naive Bayes)是另一个简单直观的分类算法。顾名思义,它的核心是贝叶斯公式。
我们先看看最基本的贝叶斯公式:

P(y|x)=P(x|y)(y)P(x),(1)
对应到分类问题, x  是特征向量, y  是分类结果。 P(y|x)  的直观含义就是在给定特征 x 的情况下,实例的类别是 y  的概率。
接下来的事情就是要计算 P(x|y)  、 P(y)  和 P(x)  。
P(x|y)===P(X=x|Y=y)P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=Ck)j=1nP(X(l)=x(l)|Y=Ck),(2)
P(y)=P(Y=Ck),(3)
P(x)  可以用全概率公式展开,然后假设各个特征独立,计算联合概率得到:
P(x)===P(X=x)P(X(1)=x(1),X(2)=x(2),..,X(n)=x(n))kP(Y=Ck)j=1nP(X(j)=x(j)|Y=Ck),(4)
将(2)(3)(4)代入(1)得到:
P(Y=Ck|X=x)=P(Y=Ck)nj=1P(X(j)=x(j)|Y=Ck)kP(Y=Ck)nj=1P(X(j)=x(j)|Y=Ck),(5)
上面公式中,在一次分类任务中,对于所有地 Y=Ck  都是一样地,所以朴素贝叶斯分类器可以简化表示成:
y=f(x)=argmax(P(Y=Ck)j=1nP(X(j)=x(j)|Y=Ck)),(6)
接下来,需要计算得到 P(Y=Ck)  和  nj=1P(X(j)=x(j)|Y=Ck)  。这2个需要用参数估计的方法得到。我就把极大似然估计复习了一下。但是遇到了疑惑,使用极大似然估计需要知道样本的分布函数。但在实际应用中,怎么提前知道呢?后来一想,只要保证了标注样本的数量和质量,样本的分布就可以近似表示实际的分布了。那么 P(Y=Ck)  只需要统计它在样本中的概率即可。

2 已有工具

2.1 R: e1071

e1071提供朴素贝叶斯分类器。用法举例:1

## Categorical data only:
data(HouseVotes84, package = "mlbench")
model <- naiveBayes(Class ~ ., data = HouseVotes84)
predict(model, HouseVotes84[1:10,])
predict(model, HouseVotes84[1:10,], type = "raw")

pred <- predict(model, HouseVotes84)
table(pred, HouseVotes84$Class)

## using laplace smoothing:
model <- naiveBayes(Class ~ ., data = HouseVotes84, laplace = 3)
pred <- predict(model, HouseVotes84[,-1])
table(pred, HouseVotes84$Class)


## Example of using a contingency table:
data(Titanic)
m <- naiveBayes(Survived ~ ., data = Titanic)
m
predict(m, as.data.frame(Titanic))

## Example with metric predictors:
data(iris)
m <- naiveBayes(Species ~ ., data = iris)
## alternatively:
m <- naiveBayes(iris[,-5], iris[,5])
m
table(predict(m, iris), iris[,5])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值