机器学习 - 算法 - 贝叶斯算法概述 , 拼写检查器实现
作者:互联网
贝叶斯公式原理概述
贝叶斯要解决的问题
正向概率
逆向概率
公式推导 - 男女裤子问题
概率
求解
即显示意义就是 欲求解 B 条件下 A 发生的概率,
可以转换成 用 A 条件下 B 发生的概率 和 A , B 各自发生的概率 进行计算
这样可以通过已知的条件组合为想要求解的概率
现实实例 - 拼写纠错
P(h) 表示某一词在总数据库的出现占比即词频 - 先验概率 , 拿到此数据, 是可以得知他的频率的
P(D|h) 表示在 h 的情况下, 转换成 D 成功的概率 - 即猜测生成观测到数据的可能性大小
这个的变量也是存在一定的衡量标准, 也是一个可以考量出来的数据
比如 计划输入 the 结果输成了 thr , 是因为 r 和 e 键盘位置很近, 所以输错可能性很大
比如 计划输入 the 结果输成了 then, 是因为 then 顺手就打出来了, 输错的可能性也很大
再比如 计划输入 the 却输成了 there 这就比较不现实, 存在很大的编辑距离偏差, 所以这种可能性的衡量就会很小
P(D) 表示用户输入一个任意单词是 D 的概率 - 这个变量之后对于每个 h 的来说都是一样的因此可以约分掉了
模型比较理论
最大似然
比如现在投掷硬币, 只投掷一次, 结果为 正面
于是我们根据现有的测试结果统计投掷结果 正面 100%
因此我们有理由预测下一次的结果是 100% 的正面, 这就是最大似然的想法
奥卡姆剃刀
而奥卡姆剃刀的想法是 先验概率对结果有较大的权重
这里有这样的呀一个实例
空间中存在多个点, 近似的构成了一个直线, 但是不是精准的直线
我们想对这些点进行拟合
可以直接使用直线
也可以使用二阶多项式
或者三阶多项式或者更高阶多项式
当然如果使用了 N-1 阶多项式必然可以完美拟合 N 个数据点
但是这样的话到底哪个更好呢 ?
奥卡姆剃刀的想法是按照先验数据中 - 在生活中我们基本上很少简单那么复杂的高阶多项式
而且越是高阶的多项式就越小可能性
因此在选择的时候回优先选择低阶多项式比过高阶多项式
实例 - 垃圾优先过滤
P(D) 在正常邮件和垃圾邮件的判断中都有, 相同变量没有什么影响, 忽略即可
先验概率
P(h+) , P(h-) 表示先验概率, 大白话来说就是 一万封邮件中是正常和垃圾的概率, 这个是已知或者可求的概率
条件概率
P(D|h+) , P(D|h-) 表示, 当前是 正常 / 垃圾 邮件下, 这个邮件里面含有这些词的概率
条件概率优化
但是原始问题比较严苛, 不能将 D 完全作为考量, 因为按照这个判定是都含有情况下的判定, 实际情况不一定包含所有的词才算垃圾邮件
大致都有或者存在几个核心的都能算是垃圾邮件的, 因此对这个条件进行展开处理
展开的含义就是 在是正常 / 垃圾邮件的前提下, 包含 d1 的概率 * 在包含 d1 的情况下 又包含 d2 * 在包含 d1. d2 的情况下 又包含 d3 .....
很明显这个的拓展虽然合理但是瞬间麻烦了不少, 因此需要进行简化 - 朴素贝叶斯处理 (假设特征独立)
因此简化成了 P(d1|h+) * P(d2|h+) * P(d3|h+) ....
对于特定的 di 这个词出现在 正常 / 垃圾 邮件中的概率这个也是可以预先得到或者可求的 即 : 10000 个 正常 / 垃圾邮件出现 di 这个词的频率
最终
再回到这个最初的公式上, 可见所有的部分都是可以求出, 因此可以求解了
Ps:
这里使用了朴素贝叶斯消除了彼此特征的影响, 必然会是对最终结果造成一定的影响的
但是考虑到计算的程度以及对结果的影响, 也算是一定的妥协下最合理的选择而已
贝叶斯实例 - 拼写检查器
标签:概率,多项式,拼写,算法,垃圾邮件,先验概率,贝叶斯,d1 来源: https://www.cnblogs.com/shijieli/p/11813893.html