没有朴素假设的朴素贝叶斯
Naive Bayes without Naive assumption
与没有朴素假设的相同想法相比,我试图理解为什么朴素贝叶斯分类器可以随特征数量线性扩展。我了解 how the classifier works and what's so "naive"。我不清楚为什么天真的假设给了我们线性缩放,而解除这个假设是指数级的。我正在寻找一个示例的演练,该示例显示了 "naive" 设置下具有线性复杂度的算法,以及没有该假设的相同示例将证明指数复杂度。
这里的问题在于以下数量
P(x1, x2, x3, ..., xn | y)
你必须估计。当您假设 "naiveness" (功能独立)时,您会得到
P(x1, x2, x3, ..., xn | y) = P(x1 | y)P(x2 | y) ... P(xn | y)
并且您可以独立估计每个 P(xi | y)
。以一种自然的方式,这种方法 线性扩展 ,因为如果你添加另一个 k
特征,你需要估计另一个 k
概率,每个概率都使用一些非常简单的技术(喜欢计算具有给定特征的对象)。
现在,如果没有天真,你就没有 任何 分解。因此,您必须跟踪形式
的所有概率
P(x1=v1, x2=v2, ..., xn=vn | y)
对于 vi
的每个可能值。在最简单的情况下,vi
只是 "true" 或 "false"(事件发生与否),这已经为您提供了 2^n
估计概率([=41 的每个可能分配=] 和 "false" 到一系列 n
布尔变量)。因此,您的算法复杂性呈指数增长。然而,这里最大的问题通常不是计算问题,而是 缺乏数据 。由于有 2^n
个估计概率,您需要超过 2^n
个数据点才能对所有可能事件进行 any 估计。在现实生活中,您永远不会遇到大小为 10,000,000,000,000 点的数据集......而这是采用这种方法的 40 个特征所需的(唯一的!)点数。
糖果选择
在孟买郊区,住着一位老奶奶,她的量化人生观为她赢得了“统计奶奶”的绰号。她独自住在一座巨大的豪宅里,在那里她练习 可靠的统计分析 ,免受大众媒体作为常识兜售的无可救药的错误偏见的攻击和 so-called 专家。
每年她生日的时候,全家人都会来看她,住在豪宅里。儿子,女儿,他们的配偶,她的孙子。这将是一个巨大的 bash 每年,大张旗鼓。但奶奶最喜欢的是见到她的孙子们并和他们一起玩。她一共有十个孙子,年龄都在十岁左右,她会亲切地称他们为“随机变量”。
每年,奶奶都会给每个孩子一个糖果。奶奶有一个大盒子,里面装满了十种不同的糖果。她会给每个孩子一颗糖,因为她不想破坏他们的牙齿。但是,由于她非常爱孩子们,所以她花了很大力气来决定将哪种糖果送给哪个孩子,这样可以最大限度地提高他们的总体幸福感(她称之为最大似然估计)。
但这对奶奶来说不是一件容易的事。她知道,每一种糖果都有一定的概率能让孩子开心。对于不同的糖果类型和不同的孩子,这种概率是不同的。 Rakesh 喜欢红色糖果胜过绿色糖果,而 Sheila 最喜欢橙色糖果。
10个孩子中的每一个对10种糖果的偏好各不相同。
此外,他们的偏好在很大程度上取决于外在因素(隐藏变量)对于奶奶来说是未知的。
如果 Sameer 在去豪宅的路上看到一座蓝色的建筑,他会想要一颗蓝色的糖果,而 Sandeep 总是想要那天与他衬衫颜色相配的糖果。但最大的挑战是他们的幸福取决于其他孩子得到的糖果!如果洛汗得到了一颗红糖,那么尼亚提也会想要一颗红糖,其他任何事情都会让她哭到妈妈的怀里(条件依赖)。 Sakshi 总是想要大多数孩子得到的东西(正相关),而 Tanmay 如果没有其他人得到他收到的那种糖果(负相关),那将是最快乐的。奶奶早就断定,孙子孙女是完全相依为命的。
对于奶奶来说,正确选择糖果在计算上是一项艰巨的任务。要考虑的条件太多,她无法简化计算。每年生日前,她都会花几天时间为所有孩子一起枚举糖果的所有配置,找出糖果的最佳分配(这是一项成本成倍增加的任务)。她年纪大了,任务也越来越艰巨。她曾经觉得,在想出让她的孩子们一下子最开心的最佳糖果选择之前,她会死去。
但是有趣的事情发生了。随着岁月的流逝,孩子们长大了,他们终于从十几岁的孩子变成了独立的成年人。他们的选择变得越来越不依赖于彼此,并且更容易弄清楚每个人最喜欢的糖果是什么(他们仍然喜欢糖果,还有奶奶)。
奶奶很快就意识到了这一点,她高兴地开始称它们为“独立随机变量”。对她来说,找出糖果的最佳选择要容易得多——她只需一次考虑一个孩子,然后为每个孩子分配 10 种糖果类型中每一种的幸福概率。然后她会为那个孩子挑选快乐概率最高的糖果,而不用担心她会分配给其他孩子的糖果。这是一件超级容易的事,奶奶终于做对了。
那一年,孩子们终于一下子变得最开心了,奶奶在百岁生日会上玩得很开心。那天几个月后,奶奶去世了,她脸上带着微笑,手里拿着一本谢尔顿罗斯。
要点:在统计建模中,具有相互依赖的随机变量使得很难找到每个值的最佳分配最大化集合的累积概率的变量。
您需要枚举所有可能的配置(变量数量呈指数增长)。但是,如果变量是独立的,则很容易挑选出使每个变量的概率最大化的单独分配,然后组合单独分配以获得整个集合的配置。
在朴素贝叶斯中,您假设变量是独立的(即使它们实际上不是)。这简化了您的计算,事实证明,在许多情况下,它实际上给出的估计值与您从考虑变量之间的条件依赖性的(计算上)更昂贵的模型中获得的估计值相当。
我没有在这个答案中包含任何数学,但希望这能让你更容易理解朴素贝叶斯背后的概念,并自信地处理数学。 (维基百科页面是一个好的开始:朴素贝叶斯)。
为什么是"naive"?
朴素贝叶斯分类器假定 X|YX|Y 呈正态分布,XX 的任何分量之间的协方差为零。由于这对于任何实际问题都是完全不可信的假设,我们称其为天真。
朴素贝叶斯会做出如下假设:
如果你喜欢 Pickles,并且你喜欢 Ice Cream,朴素的贝叶斯会假设独立并给你一个 Pickle Ice Cream,并认为你会喜欢它。
这可能根本不是真的。
有关数学示例,请参阅:https://www.analyticsvidhya.com/blog/2015/09/naive-bayes-explained/
与没有朴素假设的相同想法相比,我试图理解为什么朴素贝叶斯分类器可以随特征数量线性扩展。我了解 how the classifier works and what's so "naive"。我不清楚为什么天真的假设给了我们线性缩放,而解除这个假设是指数级的。我正在寻找一个示例的演练,该示例显示了 "naive" 设置下具有线性复杂度的算法,以及没有该假设的相同示例将证明指数复杂度。
这里的问题在于以下数量
P(x1, x2, x3, ..., xn | y)
你必须估计。当您假设 "naiveness" (功能独立)时,您会得到
P(x1, x2, x3, ..., xn | y) = P(x1 | y)P(x2 | y) ... P(xn | y)
并且您可以独立估计每个 P(xi | y)
。以一种自然的方式,这种方法 线性扩展 ,因为如果你添加另一个 k
特征,你需要估计另一个 k
概率,每个概率都使用一些非常简单的技术(喜欢计算具有给定特征的对象)。
现在,如果没有天真,你就没有 任何 分解。因此,您必须跟踪形式
的所有概率P(x1=v1, x2=v2, ..., xn=vn | y)
对于 vi
的每个可能值。在最简单的情况下,vi
只是 "true" 或 "false"(事件发生与否),这已经为您提供了 2^n
估计概率([=41 的每个可能分配=] 和 "false" 到一系列 n
布尔变量)。因此,您的算法复杂性呈指数增长。然而,这里最大的问题通常不是计算问题,而是 缺乏数据 。由于有 2^n
个估计概率,您需要超过 2^n
个数据点才能对所有可能事件进行 any 估计。在现实生活中,您永远不会遇到大小为 10,000,000,000,000 点的数据集......而这是采用这种方法的 40 个特征所需的(唯一的!)点数。
糖果选择
在孟买郊区,住着一位老奶奶,她的量化人生观为她赢得了“统计奶奶”的绰号。她独自住在一座巨大的豪宅里,在那里她练习 可靠的统计分析 ,免受大众媒体作为常识兜售的无可救药的错误偏见的攻击和 so-called 专家。
每年她生日的时候,全家人都会来看她,住在豪宅里。儿子,女儿,他们的配偶,她的孙子。这将是一个巨大的 bash 每年,大张旗鼓。但奶奶最喜欢的是见到她的孙子们并和他们一起玩。她一共有十个孙子,年龄都在十岁左右,她会亲切地称他们为“随机变量”。
每年,奶奶都会给每个孩子一个糖果。奶奶有一个大盒子,里面装满了十种不同的糖果。她会给每个孩子一颗糖,因为她不想破坏他们的牙齿。但是,由于她非常爱孩子们,所以她花了很大力气来决定将哪种糖果送给哪个孩子,这样可以最大限度地提高他们的总体幸福感(她称之为最大似然估计)。
但这对奶奶来说不是一件容易的事。她知道,每一种糖果都有一定的概率能让孩子开心。对于不同的糖果类型和不同的孩子,这种概率是不同的。 Rakesh 喜欢红色糖果胜过绿色糖果,而 Sheila 最喜欢橙色糖果。
10个孩子中的每一个对10种糖果的偏好各不相同。
此外,他们的偏好在很大程度上取决于外在因素(隐藏变量)对于奶奶来说是未知的。
如果 Sameer 在去豪宅的路上看到一座蓝色的建筑,他会想要一颗蓝色的糖果,而 Sandeep 总是想要那天与他衬衫颜色相配的糖果。但最大的挑战是他们的幸福取决于其他孩子得到的糖果!如果洛汗得到了一颗红糖,那么尼亚提也会想要一颗红糖,其他任何事情都会让她哭到妈妈的怀里(条件依赖)。 Sakshi 总是想要大多数孩子得到的东西(正相关),而 Tanmay 如果没有其他人得到他收到的那种糖果(负相关),那将是最快乐的。奶奶早就断定,孙子孙女是完全相依为命的。
对于奶奶来说,正确选择糖果在计算上是一项艰巨的任务。要考虑的条件太多,她无法简化计算。每年生日前,她都会花几天时间为所有孩子一起枚举糖果的所有配置,找出糖果的最佳分配(这是一项成本成倍增加的任务)。她年纪大了,任务也越来越艰巨。她曾经觉得,在想出让她的孩子们一下子最开心的最佳糖果选择之前,她会死去。
但是有趣的事情发生了。随着岁月的流逝,孩子们长大了,他们终于从十几岁的孩子变成了独立的成年人。他们的选择变得越来越不依赖于彼此,并且更容易弄清楚每个人最喜欢的糖果是什么(他们仍然喜欢糖果,还有奶奶)。
奶奶很快就意识到了这一点,她高兴地开始称它们为“独立随机变量”。对她来说,找出糖果的最佳选择要容易得多——她只需一次考虑一个孩子,然后为每个孩子分配 10 种糖果类型中每一种的幸福概率。然后她会为那个孩子挑选快乐概率最高的糖果,而不用担心她会分配给其他孩子的糖果。这是一件超级容易的事,奶奶终于做对了。
那一年,孩子们终于一下子变得最开心了,奶奶在百岁生日会上玩得很开心。那天几个月后,奶奶去世了,她脸上带着微笑,手里拿着一本谢尔顿罗斯。
要点:在统计建模中,具有相互依赖的随机变量使得很难找到每个值的最佳分配最大化集合的累积概率的变量。
您需要枚举所有可能的配置(变量数量呈指数增长)。但是,如果变量是独立的,则很容易挑选出使每个变量的概率最大化的单独分配,然后组合单独分配以获得整个集合的配置。
在朴素贝叶斯中,您假设变量是独立的(即使它们实际上不是)。这简化了您的计算,事实证明,在许多情况下,它实际上给出的估计值与您从考虑变量之间的条件依赖性的(计算上)更昂贵的模型中获得的估计值相当。
我没有在这个答案中包含任何数学,但希望这能让你更容易理解朴素贝叶斯背后的概念,并自信地处理数学。 (维基百科页面是一个好的开始:朴素贝叶斯)。
为什么是"naive"?
朴素贝叶斯分类器假定 X|YX|Y 呈正态分布,XX 的任何分量之间的协方差为零。由于这对于任何实际问题都是完全不可信的假设,我们称其为天真。
朴素贝叶斯会做出如下假设:
如果你喜欢 Pickles,并且你喜欢 Ice Cream,朴素的贝叶斯会假设独立并给你一个 Pickle Ice Cream,并认为你会喜欢它。
这可能根本不是真的。
有关数学示例,请参阅:https://www.analyticsvidhya.com/blog/2015/09/naive-bayes-explained/