《统计学习方法》—— 4.朴素贝叶斯(Python实现)

本文主要是在阅读过程中对本书的一些概念摘录,包括一些个人的理解,主要是思想理解不涉及到复杂的公式推导。若有不准确的地方,欢迎留言指正交流

本文完整代码见 github :https://github.com/anlongstory/awsome-ML-DL-leaning/lihang-reading_notes (欢迎 Star )

朴素贝叶斯法(naive_bayes.py

首先朴素贝叶斯法属于生成模型,其是基于特征条件独立假设学习输入/输出的联合概率分布,然后基于此模型,对给定输入 x 用贝叶斯定理求出后验概率最大的输出 y。

这里的“朴素”,是因为此方法对条件概率分布作了条件独立性的假设,这是一种很强的假设,所以是 朴素(naive) 。

使用训练数据学习的是 P(X|Y)P(Y)的估计,最后得到联合分布概率:P(X,Y)=P(X|Y)*P(Y)

这里假设P(X|Y)满足条件独立性:

于是可以得到:

最终学习目的是后验概率最大化:

后验概率最大化

0-1损失函数时对期望风险最小化等同于后验概率最大化:

参数估计

  • 极大似然估计

  • 贝叶斯估计
       用极大似然估计可能会出现所要估计的概率值为 0 的情况,这会影响到后验概率的计算结果,使分类产生偏差,解决方法就是采用贝叶斯估计。

代码实现

这部分主要实现模型 高斯朴素贝叶斯:

特征的可能性假设为高斯分布,其概率密度函数为:

# 数学期望
@staticmethod
def mean(x):
    return sum(x)/float(len(x))

# 标准差
def std(self,x):
    avg = self.mean(x)
    return math.sqrt(sum(math.pow(x_i-avg,2) for x_i in x)/float(len(x)))

# 概率密度函数
def gaussian_prob(self,x,mean,std):
    exp = math.pow(math.e, -1*(math.pow(x - mean,2))/(2*std))
    return (1/(math.sqrt(2*math.pi*std)))*exp

最后基于上面构建的模型进行贝斯斯方法的实现,并对数据做出预测。详情见完整代码 naive_bayes.py

相关阅读:

《统计学习方法》—— 1. 统计学习方法概论(Python实现)
《统计学习方法》—— 2. 感知器(Python实现)
《统计学习方法》—— 3. K近邻法(Python实现)
《统计学习方法》—— 5. 决策树(Python实现)
《统计学习方法》—— 6. 逻辑斯特回归与最大熵模型(Python实现)
《统计学习方法》—— 7. 支持向量机(Python实现)
《统计学习方法》—— 8. 提升方法 (Python实现)
《统计学习方法》—— 9. EM 算法(Python实现)
《统计学习方法》——10. 隐马尔可夫模型(Python实现)
《统计学习方法》—— 11. 条件随机场

你可能感兴趣的:(读书笔记)