本文主要是在阅读过程中对本书的一些概念摘录,包括一些个人的理解,主要是思想理解不涉及到复杂的公式推导。若有不准确的地方,欢迎留言指正交流
本文完整代码见 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)
满足条件独立性:
于是可以得到:
最终学习目的是后验概率最大化:
![](https://i.imgur.com/4r4EJCM.png)
后验概率最大化
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. 条件随机场