美文网首页
【理论篇】贝叶斯算法应用

【理论篇】贝叶斯算法应用

作者: 山药鱼儿 | 来源:发表于2022-03-01 22:53 被阅读0次

    连载的上一篇文章,我们了解到了贝叶斯公式:P(A|B) = P(A) * P(B|A) / P(B) ,使用贝叶斯公式,可以帮助我们将难计算的逆概转换为计算正向概率。今天呢,我们以一个拼写纠正的例子,再来实际感受一下贝叶斯公式的巧妙应用~

    拼写纠正

    所谓拼写纠正是指,当我们发现某个用户输入了一个系统中不存在的单词时,我们需要去猜测用户可能要输入的单词是什么?并按照可能性从高到低列出可能性最高的几个单词来提示用户。比如用户输入单词 tlp ,这个词本身并不存在,那用户是想输入 top tip... ,最可能输入的是哪个呢?

    以上需求,就涉及到我们要比较在用户输入某个单词的情况下,每种猜测的可能性大小。也就是条件概率:

    P(猜测用户想输入的单词 | 用户实际输入的单词)

    接下来,小鱼使用字母 D 表示用户实际输入的单词,h1 h2 h3 ... 则表示各种猜测。则用户在输入单词 D 的情况下,他真正想输入的是 h1 h2 h3 ... 的概率就可以表示为:

    • 猜测 1:P(h1|D)
    • 猜测 2:P(h2|D)
    • 猜测 3:P(h3|D)
    • ...

    我们可以统一用 h 泛指 h1 h2 h3 ...,根据贝叶斯公式,那么我们需要求解的条件概率就可以表示为:P(h|D) = P(h) * P(D|h) / P(D)

    公式化简

    接下来,我们来化简使用贝叶斯公式转换后的条件概率。

    首先,我们并不是要求解等式的右半部分,因为我们只是想比较一下输入为 D 的情况下各种猜测的概率大小。P(D) 表示用户输入单词 D 的概率,对于不同的猜测 h1 h2 h3 ... ,P(D) 都是一样的,所以在比较时,可以忽略公式中的 P(D)

    那么,我们要比较的部分也就变为 P(h) * P(D|h) ,即 P(h|D) ∝ P(h) * P(D|h) ,也就是说 P(h|D) 正比于 P(h) * P(D|h) 。公式中 P(h) 为语料库中单词 h 出现的概率,是一个特定的先验概率;P(D|h) 表示单词 h 被误输成 D 的概率,比如 the 被错误地写成 thr 的概率,这个概率可以根据一些规则进行求解。

    注:公式 P(h | D) ∝ P(h) * P(D | h) 所表达的含义也就是说对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率)”和“这个猜测生成我们观测到的数据的可能性大小。

    举个例子:比如用户输入tlp ,那到底是 top 还是 tip

    两种猜测都只是中间一个字母不同,这个时候,当最大似然不能作出决定性的判断时,先验概率就可以插手进来给出指示——“既然你无法决定,那么我告诉你,一般来说 top 出现的程度要高许多,所以更可能他想打的是 top

    这就是特定猜测的先验概率。而上述提到的最大似然就是一种 P(D|h) 的比较理论,关于模型比较理论,我们下节见啦~

    (¦3[▓▓] 晚安

    相关文章

      网友评论

          本文标题:【理论篇】贝叶斯算法应用

          本文链接:https://www.haomeiwen.com/subject/tjvjrrtx.html