机器学习:Naive Bayes
Naive Bayes(朴素贝叶斯)可用于分类(监督、有训练数据的)。
应用场景:信用卡信用评级、垃圾邮件判别、化验结果推断患病情况……
举例。信用卡信用评级:高风险客户和低风险客户。
C=1:高风险客户(借钱不还), C=-1:低风险客户(信用评级良好)。
x为客户的一些特征,例如用2分量的向量x = (x1, x2) = (月收入, 月支出)来描述(representation)一个客户。
P(C): 客户风险等级的概率函数。
P(C=1):先验概率。这里表示:“客户是高风险客户”这一事件发生的概率。在这里它是一个数字,例如0.1。
P(C=1)=0.1,代表生活中,10%的人是借钱不还的人。
为什么叫先验概率(prior probability)?,因为它在现实生活中客观存在。在了解到任何关于客户的信息之前,它就客观存在了。
P(x|C):似然函数。例如,当客户是C=1高风险客户时,其特征(月收入,月支出)的概率情况。至于为什么叫似然函数,我是真的不知道了。
P(x):x的概率空间。(x取什么值,取各种值的概率,二者共同组成x的分布律)
根据历史数据,上述的P(C),P(x),P(x|C)都是可以获得的。用频率估计概率。
其实在后面发现,P(x)不知道也可以。
朴素贝叶斯最关键的2点假设
假设条件概率独立(非常简单的假设。尽管简单,但常常比较有效),P(x|C) = P(x1, x2|C) = P(x1|C) * P(x2|C)。
每个属性的重要性一致(在本例中,月收入和月支出的同样重要)。
找使得P(C|x)后验概率的那个Ci(分类),就是根据观察到的x,去猜测C的类别。
例。根据天气情况和是否打球的历史记录,问:如果是某种天气,会去打球吗?
注:因为只是找使得P(C|x)后验概率的那个Ci(分类),上式分母的P(x)对选哪个Ci并无影响,所以可以不用考虑。因此,两类情况(打球或不打球)的似然概率只需要正比于某个数即可。1/P(x)省去了。
再根据“在一次试验中,概率大的事件会发生”这种推断的信念,就可以推断在某种指定的天气情况下,是否会去打球了。
另外,一个非常常见的问题。
某个事件在观察的时候,一次都没有出现怎么办?
例如扔骰子,lambda越大,则暗含着我们越坚信这枚骰子是公平的。
概率之所以不好理解,可能是人进化得还不够完全,无法建立一些直观,很多是靠“信念”。
其他一些应用场景。
垃圾邮件判别。例如当出现“免费”的时候,计算该邮件1)是 2)不是垃圾邮件的概率。
事先需要准备的资料有:垃圾邮件本身占所有邮件的比例(先验概率),一份邮件是垃圾邮件的前提下,出现“免费”的概率(似然函数)。进而,可以计算后验概率:当一封邮件出现“免费”时,是不是垃圾邮件。通过设置一个阈值来限制一封邮件是否为垃圾邮件时后验概率的范围。此时,需要知道P(x),即“免费”出现的概率。
通过病人化验结果判断病人有病或者无病。做法类似。
Evaluation
召回率(Recall Rate)和准确率(Precision Rate)。
- | 实际为垃圾邮件 | 实际为正常邮件 |
---|---|---|
识别为垃圾邮件 | A | B |
识别为正常邮件 | C | D |
搜索—准确率更重要,疾病监测、反垃圾有限—召回率更重要一些。
R = A/(A+C), P = A/(A+B)
两者都要求高的情况下,用F1来衡量。
F1 = 2PR/(P+R)