我发现很难理解Naive Bayes的过程,我想知道是否有人可以用英语简单的逐步过程来解释它。我知道它需要按发生的时间进行比较作为概率,但我不知道训练数据与实际数据集的关系如何。
请解释一下训练集的作用。我在这里给出一个非常简单的水果示例,例如香蕉
training set--- round-red round-orange oblong-yellow round-red dataset---- round-red round-orange round-red round-orange oblong-yellow round-red round-orange oblong-yellow oblong-yellow round-red
接受的答案有许多 k-NN 元素(k近邻),这是一种不同的算法。
k-NN 和 NaiveBayes 都是分类算法。从概念上讲,k-NN 使用“接近度”的概念对新实体进行分类。在 k-NN 中,“接近度”是用欧几里得距离或余弦距离等概念建模的。相比之下,在 NaiveBayes 中,“概率”的概念用于对新实体进行分类。
由于问题是关于NaiveBayes的,因此我将如何向某人描述这些想法和步骤。我会尽量用尽可能少的方程式和简单的英语来做这件事。
在人们理解和欣赏NaiveBayes的细微差别之前,他们需要先了解几个相关的概念,即条件概率的概念和NaiveBayes规则。(如果您熟悉这些概念,请跳到标题为“入门NaiveBayes”的部分)
简单英语中的条件概率:假设其他事情已经发生,某事将发生的概率是多少。
假设有一些结果 O 和一些证据 E。从定义这些概率的方式来看:同时具有结果O 和证据 E 的概率是:(O 发生的概率)乘以(E 的概率)哦发生了)
理解条件概率的一个例子:
假设我们有一群美国参议员。参议员可以是民主党人或共和党人。他们也是男性或女性。
如果我们完全随机选择一位参议员,这个人是女性民主党的概率是多少?条件概率可以帮助我们回答这个问题。
(民主党和女参议员)的概率= Prob(参议员是民主党人)乘以女性的条件概率,因为他们是民主党人。
P(Democrat & Female) = P(Democrat) * P(Female | Democrat)
我们可以计算完全相同的东西,相反的方式:
P(Democrat & Female) = P(Female) * P(Democrat | Female)
从概念上讲,这是从 P(Evidence|Known Outcome) 到 P(Outcome|Known Evidence) 的一种方式。通常,在已知结果的情况下,我们知道某些特定证据的观察频率。给定证据,我们必须使用这个已知事实来计算相反的结果,以计算该结果发生的机会。
P(假设我们知道一些证据的结果)= P(假设我们知道结果的证据)乘以概率(结果),由 P(证据)缩放
理解NaiveBayes法则的经典例子:
Probability of Disease D given Test-positive = P(Test is positive|Disease) * P(Disease) _______________________________________________________________ (scaled by) P(Testing Positive, with or without the disease)
现在,所有这一切都只是序言,以达到NaiveBayes。
到目前为止,我们只讨论了一个证据。实际上,我们必须根据多个证据来预测结果。在这种情况下,数学变得非常复杂。为了避免这种复杂性,一种方法是“解耦”多个证据,并将每个证据视为独立的。这种方法就是为什么这被称为朴素NaiveBayes。
P(Outcome|Multiple Evidence) = P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome) scaled by P(Multiple Evidence)
许多人选择记住这一点:
P(Likelihood of Evidence) * Prior prob of outcome P(outcome|evidence) = _________________________________________________ P(Evidence)
请注意有关此等式的一些事项:
base rates
只需为每个可能的结果运行上面的公式。由于我们正在尝试对进行分类,因此每个结果都称为 aclass并且它class label.有 同样,我们采用一种非常简单的方法:概率最高的类被宣布为“获胜者”,并且该类标签被分配给该证据组合。
class
class label.
让我们通过一个例子来增加我们的理解:OP要求一个“水果”识别例子。
假设我们有 1000 个水果的数据。它们恰好是香蕉、橙子或其他水果。我们知道每种水果的 3 个特征:
这是我们的“训练集”。我们将使用它来预测我们遇到的任何新水果的类型。
Type Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total ___________________________________________________________________ Banana | 400 | 100 || 350 | 150 || 450 | 50 | 500 Orange | 0 | 300 || 150 | 150 || 300 | 0 | 300 Other Fruit | 100 | 100 || 150 | 50 || 50 | 150 | 200 ____________________________________________________________________ Total | 500 | 500 || 650 | 350 || 800 | 200 | 1000 ___________________________________________________________________
我们可以预先计算很多关于我们的水果收藏的东西。
所谓的“先验”概率。(如果我们不知道任何水果属性,这将是我们的猜测。)这些是我们的base rates.
base rates.
P(Banana) = 0.5 (500/1000) P(Orange) = 0.3 P(Other Fruit) = 0.2
“证据”的概率
p(Long) = 0.5 P(Sweet) = 0.65 P(Yellow) = 0.8
“可能性”的概率
P(Long|Banana) = 0.8 P(Long|Orange) = 0 [Oranges are never long in all the fruit we have seen.] .... P(Yellow|Other Fruit) = 50/200 = 0.25 P(Not Yellow|Other Fruit) = 0.75
假设我们被赋予了一种未知水果的特性,并要求我们对其进行分类。我们被告知果实长、甜、黄。是香蕉吗?是橙子吗?还是其他水果?
我们可以简单地逐个计算 3 个结果中的每一个的数字。然后我们选择最高概率并将我们的未知水果“分类”为基于我们先前的证据(我们的 1000 个水果训练集)具有最高概率的类别:
P(Banana|Long, Sweet and Yellow) P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana) = _______________________________________________________________ P(Long) * P(Sweet) * P(Yellow) = 0.8 * 0.7 * 0.9 * 0.5 / P(evidence) = 0.252 / P(evidence) P(Orange|Long, Sweet and Yellow) = 0 P(Other Fruit|Long, Sweet and Yellow) P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit) = ____________________________________________________________________________________ P(evidence) = (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence) = 0.01875 / P(evidence)
我们以压倒性优势 ( 0.252 >> 0.01875) 将这种甜/长/黄色水果归类为可能是香蕉。
0.252 >> 0.01875
看看它最终归结为什么。只是一些计数和乘法。我们可以预先计算所有这些术语,因此分类变得简单、快速和高效。
Let z = 1 / P(evidence).现在我们快速计算以下三个量。
Let z = 1 / P(evidence).
P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ... P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ... P(Other|Evidence) = z * Prob(Other) * Prob(Evidence1|Other) * Prob(Evidence2|Other) ...
分配最大数字的类别标签,您就完成了。
尽管名称如此,NaiveBayes在某些应用程序中表现出色。文本分类是它真正大放异彩的一个领域。
希望这有助于理解NaiveBayes算法背后的概念。