朴素贝叶斯
分类算法
已知集合x,我们把这个集合称为特征集合,其中每一个元素是一个待分类项。
已知集合y,我们把这个集合称为类别集合,其中的每一个元素是一个类别。
我们现在要找到一个函数f,使得y=f(x),即x集合中的每一个待分类项,都能通过f函数找到对应的分类y。
分类算法的任务就是找到这个f函数。
朴素贝叶斯算法
朴素贝叶斯是根据贝叶斯公式得出的。
贝叶斯公式:
P(Ai|B) = P(B|Ai)P(Ai) /P(B)
根据分类算法可知:
我们的目的就是找到一个f函数(此时这个f函数就是朴素贝叶斯),使得任意x特征有对应的y类别。
即通过朴素贝叶斯找到“P(类别|特征)”,解释一下就是找到“当某某特征发生的情况下,某某类别也发生的概率”。
所以套用贝叶斯公式可得:
P(类别|特征) = P(特征|类别)P(类别) /P(特征)
朴素贝叶斯算法有一个大前提就是:所有特征条件都是相互独立的。
下面我们就来解释一下这个前提的意义。
假设现在小明要出去玩:
有特征集合x是表示当天的一些情况,有{天气,作业,心情}
有结果类别集合y代表最后到底去不去,有{去,不去}
那么天气可以细分为:好、中、差
作业可以细分为:多、少
心情可以细分为:好、坏
如果天气、作业、心情是相互“不独立”的,
那么特征就有3*2*2=12种组合情况。
就需要一一统计这12种情况的概率
即{天气好、作业多、心情好}、{天气好、作业多、心情坏}、{天气好、作业少、心情好}······一共12种。
在实际问题中特征往往要比这还多,很多组合特征可能根本没法得到。
如果假定天气、作业、心情相互独立。
那么就有P{天气,作业,心情} = P{天气}P{作业}P{心情}
由此,我们只需要找到各自的子特征即可,即{天气好},{天气中}、{天气差}······一共7种。
特征概率的获取难度大大降低。
如果只是普通贝叶斯,那么公式为:
P(去玩 | 天气中,作业多,心情好) = P(天气中,作业多,心情好 | 去玩)P(去玩) / P(天气中,作业多,心情好)
由上面这个公式可以看出来:
我们为了求“在天气中,作业多,心情好”这样的前提下,小明出去玩的概率。
需要知道P(天气中,作业多,心情好),即:同一天天气中,作业多,心情好的概率。
以及P(天气中,作业多,心情好 | 去玩)P(去玩),即:小明出去玩时,天气中,作业多,心情好的概率。
自然,要提前找到这些特征概率是十分困难的。
但如果用朴素贝叶斯算法解这个问题,那么作业、天气、心情就假定成相互独立的了。
公式变为:
P(去玩 | 天气中,作业多,心情好) = P(天气中|去玩)P(作业多|去玩)P(心情好|去玩)P(去玩) / P(天气中)P(作业多)P(心情好)
由公式我们可以看出我们找到前置概率的难度下降了很多。
变成了找到单一特征条件概率,如 P(天气中)、P(天气中|去玩)
所以朴素贝叶斯相比贝叶斯的最大区别就是,加上了个条件的独立性假设,大大减少了参数的假设数量。