贝叶斯
贝叶斯学习的背景
- 发现两件事情之间的关系 (往往最想要的是因果分析, 先决条件 &结论) • 在我们的日常生活中,医生的疾病诊断可以被认为是一个贝叶斯学习过程
-
A
→
B
A \rightarrow B
A→B
- e.g. 肺炎 → \rightarrow → 肺癌?
- 很难直接判断(比如血液化验中一项指标阳性,来判断肺癌,其实是很难直接判断的)
- 而且得肺炎的人要比得肺癌的人要多很多,比较难收集
- 反向思考
- e.g.比如医生一直看病的过程中,积累了很多经验, 有多少肺癌患者曾经得过肺炎?这样的数据更容易收集,可以通过既往病史得到(执果溯因)
- e.g.比如医生一直看病的过程中,积累了很多经验, 有多少肺癌患者曾经得过肺炎?这样的数据更容易收集,可以通过既往病史得到(执果溯因)
贝叶斯定理
P ( h ∣ D ) = P ( D ∣ h ) P ( h ) P ( D ) P(h|D) = \frac{P(D|h)P(h)}{P(D)} P(h∣D)=P(D)P(D∣h)P(h)
举例: 某项化验测试结果与癌症诊断
- P(h|D) 称为h的后验概率(posterior probability)
在D条件下,假设h发生的概率
P(h|D) : 已知测试结果是‘+’(就是D), 那么得了这种癌症(就是h)的概率- P(h) 称作h的先验概率(prior probability)
P(h) : 得这种癌症的概率- P(D) 称为D的先验概率
P(D):测试结果 = ‘+’的概率- P(D|h) :给定 h 假设情况下 D出现的概率
P(D|h):已知一个人得了这种癌症(h),那么测试结果为‘+’(D)的概率
P ( D ∣ h ) + P ( D ‾ ∣ h ) = 1 P(D|h)+P(\overline D|h) = 1 P(D∣h)+P(D∣h)=1
贝叶斯定理的条件
- P(h)
- 假设(h): 满足互相排斥的
- H假设空间: 完全详尽
∑
P
(
h
i
)
=
1
\sum P(h_i)=1
∑P(hi)=1
(比如,h1得了癌症,h2没得癌症,如果还有h3,在观察期,可能得可能没得,虽然h1+h2+h3=1满足条件2,但不满足条件1)
- P(D)
- D:所有可能数据中的一个采样集合
- 与h相互独立
(比如做一个血液化验的测试P(+),P(+)=5,不能在肿瘤医院取结果,因为这个已经和假设相关了,是在一部分有强的相关的情况下取的数据)
比如收集一些发病率数据时,不能在一个收集,可能某个城市就是发病率高,也不能只收集老年人或者大部分是青少年
写任何一片论文,说一个模型效果好的时候,特别是在experiment set的说明部分,如果data set是公开的数据集,一般容易得到认证,因为收集的时候就考虑到随机性和能反映问题本身,如果是自己收集,要特别说明,不能一言带过,要说明数据怎么取的,有没有和问题相关的数据,比如在一个班级收集的,要特别说明,因为这样的数据可能有一些自带的局限性;要注意数据是不是足够的随机,不能针对假设挑数据 - 在比较不同假设时可以忽略(P(D)和h没有关系,因为和h没有关系,因此很多时候比较不同假设的时候可以不用计算)
- P(D|h) (似然度 likelihood)
-
- log likelihood log(P(D|h)), (通常是对似然度取一个log使用),在给定假设h下,数据D出现的概率(比如癌症中化验为阳性的概率)
likelihood与probability
probability是说的未来发生某事的可能性或概率,比如今天会不会下午,今天降雨概率80%
likelihood是指已经发生的,比如过去一个月的降水率为10%,在中文里可能没有那么明确区分
举例
- 化验测试结果: +,患有某种癌症?
P ( c a n c e r ∣ + ) = ? P(cancer|+)=? P(cancer∣+)=?
我们已知:
- 正确的阳性样本: 98% (患有该癌症, 测试结果为 +)
- 正确的阴性样本: 97% (未患该癌症, 测试结果为 -)
- 在整个人群中,只有0.008 的人患这种癌症
P ( c a n c e r ) = 0.008 P ( ¬ c a n c e r ) = 0.992 P ( + ∣ c a n c e r ) = 0.98 P ( − ∣ c a n c e r ) = 0.02 P ( + ∣ ¬ c a n c e r ) = 0.03 P ( − ∣ ¬ c a n c e r ) = 0.97 P ( c a n c e r ∣ + ) = P ( + ∣ c a n c e r ) P ( c a n c e r ) / P ( + ) = 0.98 ∗ 0.008 / ( 0.98 ∗ 0.008 + 0.03 ∗ 0.992 ) = 0.21 \begin{align*} &P(cancer) = 0.008\ \ \ \ \ \ &P(\neg cancer) = 0.992 \\ &P(+|cancer)=0.98\ \ \ \ \ \ \ &P(-|cancer)=0.02 \\ &P(+|\neg cancer)=0.03\ \ \ \ \ \ \ &P(-|\neg cancer)=0.97 \\ P(cancer | + ) &= P(+| cancer) P(cancer) / P(+) \\ &= 0.98*0.008/(0.98*0.008+0.03*0.992) \\ &= 0.21 \end{align*} P(cancer∣+)P(cancer)=0.008 P(+∣cancer)=0.98 P(+∣¬cancer)=0.03 =P(+∣cancer)P(cancer)/P(+)=0.98∗0.008/(0.98∗0.008+0.03∗0.992)=0.21P(¬cancer)=0.992P(−∣cancer)=0.02P(−∣¬cancer)=0.97
P(+)的计算用到全概率公式 P ( + ) = ∑ i P ( + ∣ h i ) P ( h i ) P(+)=\sum_{i}P(+|h_i)P(h_i) P(+)=i∑P(+∣hi)P(hi)
概览
- 贝叶斯定理
- 用先验概率来推断后验概率
虽然公式简单,但是计算P(D)涉及到全概率公式,枚举所有可能,并计算概率,而且也可以发现P(D)和h没有关系,它只是数据的先验概率
- 用先验概率来推断后验概率
- M a x A P o s t e r i o r , M A P , h M A P ,极大后验假设 Max\ A\ Posterior, MAP, h_{MAP} ,极大后验假设 Max A Posterior,MAP,hMAP,极大后验假设
-
M
a
x
i
m
u
m
L
i
k
e
l
i
h
o
o
d
,
M
L
,
h
M
L
,
极大似然假设
Maximum Likelihood, ML, h_{ML}, 极大似然假设
MaximumLikelihood,ML,hML,极大似然假设
- • ML vs. LSE (最小二乘,Least Square Error)
从数学角度上证明满足极大似然的估计就是满足最小二乘的(即平方误差最小的)
- • ML vs. LSE (最小二乘,Least Square Error)
- Naïve Bayes, NB, 朴素贝叶斯
- 独立属性/特征假设
- NB vs. MAP
- Maximum description length, MDL (最小描述长度)
- 权衡: 假设复杂度 vs. 假设带来的错误
- MDL vs. MAP
选择假设— MAP
P ( h ∣ D ) = P ( D ∣ h ) P ( h ) P ( D ) P(h|D) = \frac{P(D|h)P(h)}{P(D)} P(h∣D)=P(D)P(D∣h)P(h)
- 一般我们需要的是在给定训练集上最有可能的假设
(一般不需要知道概率是多少、比别的假设概率高多少,也就是说,只要知道它肯定比别的概率高就可以了,而且一般我们不太想知道其它的信息) - Maximum A Posteriori (MAP): (极大后验假设)
h
M
A
P
h_{MAP}
hMAP
也就是找到后验值(即P(h|D)值)最大的那个假设h,
H: 假设空间
h ∈ H : 假设空间中的一个假设 {h \in H}:假设空间中的一个假设 h∈H:假设空间中的一个假设
a r g m a x h ∈ H P ( h ∣ D ) P ( h ) \underset{h \in H}{argmax}P(h|D)P(h) h∈HargmaxP(h∣D)P(h) 表示使P(h|D)取到最大值的一个参数h
h M A P = a r g m a x h ∈ H P ( h ∣ D ) P ( h ) = a r g m a x h ∈ H P ( D ∣ h ) P ( h ) P ( D ) = a r g m a x h ∈ H P ( D ∣ h ) P ( h ) \begin{align*} h_{MAP} &= \underset{h \in H}{argmax}P(h|D)P(h) \\ &= \underset{h \in H}{argmax} \frac{P(D|h)P(h)}{P(D)} \\ &= \underset{h \in H}{argmax}P(D|h)P(h) \end{align*} hMAP=h∈HargmaxP(h∣D)P(h)=h∈HargmaxP(D)P(D∣h)P(h)=h∈HargmaxP(D∣h)P(h)
比如对比 P ( D ∣ h 1 ) P ( h 1 ) P ( D ) \frac{P(D|h_1)P(h_1)}{P(D)} P(D)P(D∣h1)P(h1)和 P ( D ∣ h 2 ) P ( h 2 ) P ( D ) \frac{P(D|h_2)P(h_2)}{P(D)} P(D)P(D∣h2)P(h2),对比时,发现P(D),所以计算极大后验假设时不用考虑P(D),所以 P ( D ∣ h ) P ( h ) P ( D ) \frac{P(D|h)P(h)}{P(D)} P(D)P(D∣h)P(h)取到最大值的参数值就是 P ( D ∣ h ) P ( h ) P(D|h)P(h) P(D∣h)P(h)取到最大值的参数
MAP举例
-
实验室测试结果: +,患有某种特定癌症?
-
当我们已知:
- 正确的阳性: 98% (患癌, 检测结果 +)
- 正确的阴性: 97% (不患癌, 检测结果 -)
- 在整个人群中,只有 0.008 患有癌症
极大后验假设是求最可能的假设,是比较不同的假设,因此计算极大后验假设就不用计算P(D), 只需要计算 a r g m a x h ∈ H P ( D ∣ h ) P ( h ) \underset{h \in H}{argmax}P(D|h)P(h) h∈HargmaxP(D∣h)P(h)
P ( + ∣ c a n c e r ) P ( c a n c e r ) = 0.0078 , P ( + ∣ ¬ c a n c e r ) P ( ¬ c a n c e r ) = 0.0298 P(+|cancer)P(cancer) =0.0078, P(+|\neg cancer)P(\neg cancer) = 0.0298 P(+∣cancer)P(cancer)=0.0078,P(+∣¬cancer)P(¬cancer)=0.0298
h M A P = ¬ c a n c e r h_{MAP}= \neg cancer hMAP=¬cancer
P ( c a n c e r ) = 0.008 P ( ¬ c a n c e r ) = 0.992 P ( + ∣ c a n c e r ) = 0.98 P ( − ∣ c a n c e r ) = 0.02 P ( + ∣ ¬ c a n c e r ) = 0.03 P ( − ∣ ¬ c a n c e r ) = 0.97 \begin{align*} P(cancer) = 0.008 \ \ \ \ &P(\neg cancer)=0.992 \\ P(+|cancer) = 0.98 \ \ \ \ &P(-|cancer) = 0.02 \\ P(+|\neg cancer) = 0.03 \ \ \ \ &P(-|\neg cancer) = 0.97 \\ \end{align*} P(cancer)=0.008 P(+∣cancer)=0.98 P(+∣¬cancer)=0.03 P(¬cancer)=0.992P(−∣cancer)=0.02P(−∣¬cancer)=0.97经验:
在实验或研究中,不用求出实际值,而是用约减公式的相关项来对比用得比较多,
比如线性加和, δ = A − B \delta = A-B δ=A−B描述的比较多,如果问题用的是乘积比较多,一般A/B用的比较多,看它是否大于1,来看哪个更可能,比如argmax就可以将共同项忽略掉,然而求max的时候就只能说正比于…得关系选择假设 — 极大似然 ML
h M A P = a r g m a x h ∈ H P ( D ∣ h ) P ( h ) h_{MAP} = \underset {h \in H}{argmax}P(D|h)P(h) hMAP=h∈HargmaxP(D∣h)P(h)
如果知道P(h),聪明的人总是能最大限度地从经验中学习(经验就是P(D|h),知道假设中数据D出现的概率) -
如果我们完全不知道假设的概率分布,或者我们知道所有的假设发生的概率相同,那么MAP 等价于 Maximum Likelihood (hML 极大似然假设)
在极大后验假设中没有引入假设,约去P(D),的确是因为与P(D)无关, 但是这里引入了假设,P(hi)是一个常数而且是相等的,引入后计算简单
h M L = a r g m a x h i i n H P ( D ∣ h i ) h_{ML} = \underset{h_i in H}{argmax}P(D|h_i) hML=hiinHargmaxP(D∣hi)
数学上 P ( h ∣ D ) ≠ P ( D ∣ h ) P(h|D)\neq P(D|h) P(h∣D)=P(D∣h),但是这里相等,是因为:
- h是使P(D|hi)最大的参数hi
- 假设所有的P(hi)是相等的
ML 举例: 抛硬币问题
- 2 个硬币: P1(H) = p(第一枚硬币朝上的概率为p),P2(H) = q (第二枚硬币朝上的概率为q)
- 抛1号硬币的概率是 a ,那抛2号硬币的概率为1-a
- 但是 a, p, q 未知的
- 观察到一些产生序列(做四组实验,每次拿了一枚硬币,抛4次):
- 2HHHT,1HTHT, 2HHHT, 2HTTH
- 2HHHT,是拿第二枚硬币抛的,分别是正正正反
- 1HTHT,是拿第一枚硬币抛的,分别是正反正反
- 估计 a, p, q 最有可能的值
直观感觉a是1/4, p是2/4, q是(3+3+2)/(3*4) = 8/12
- “简单” 估计: ML (maximum likelihood,极大似然)
- 抛一个(p,1-p)硬币 m 次,得到k 次 H 和 m-k 次 T
l o g L ( D ∣ p ) = l o g P ( D ∣ p ) = l o g ( p k ( 1 − p ) m − k ) = k l o g p + ( m − k ) l o g ( 1 − p ) \begin{align*} logL(D|p) &= logP(D|p) \\ &=log(p^k(1-p)^{m-k} )\\ &=klogp+(m-k)log(1-p) \\ \end{align*} logL(D∣p)=logP(D∣p)=log(pk(1−p)m−k)=klogp+(m−k)log(1−p)
L就是Likelihood,似然度;D就是已知的数据,即所有m次data,
P ( D ∣ p ) = p k ( 1 − p ) m − k P(D|p) = p^k(1-p)^{m-k} P(D∣p)=pk(1−p)m−k有个假定–每次抛硬币是独立的;因为和顺序无关所以= p k ( 1 − p ) m − k p^k(1-p)^{m-k} pk(1−p)m−k- 要想Likelihood最大,就是求最大值,对 p 求导令导数为 0: d ( l o g L ( D ∣ p ) ) d p = k p − m − k 1 − p = 0 \frac{d(logL(D|p))}{dp} = \frac{k}{p} - \frac{m-k}{1-p} = 0 dpd(logL(D∣p))=pk−1−pm−k=0
- 求解 p,得到: p = k / m p=k/m p=k/m
• 估计 a, p, q 最有可能的值
a = 1/4(四次有一次取到第一枚硬币), p = 2/4(抛第一枚硬币,四次有两次正面朝上), q = 8/12
在实际中的使用,在数数时,根据历史经验,进行n次随机试验中,某个数出现r次,我们就说这个数出现概率就是r/n, 这里其实就用到了极大似然估计
极大似然 & 最小二乘
- 训练数据: < x i , d i > <x_i,d_i> <xi,di>(xi是自变量,输入,di是label,就是输出)
-
d
i
=
f
(
x
i
)
+
e
i
d_i = f(x_i) + e_i
di=f(xi)+ei
- di : di是独立的样本.
- f(xi): 没有噪声的目标函数值
- ei: 噪声(残差),独立随机变量,符合正态分布
N
(
0
,
σ
2
)
N(0, σ^2)
N(0,σ2)
阐述为什么使用正态分布,因为和正态分布相关的中心极限定理有很强的优势,
根据中心极限定理,如果样本符合独立同分布,如果足够多,那样本均值符合正态分布;
噪声也是类似的,噪声都是独立的,而且同分布,虽然噪声分布很复杂,而且不知道是什么分布,但是是同分布的,噪声很多时,可以发现噪声的均值符合正态分布
而且正态分布性质,任意正态分布都可以转化到标准正态分布
比如白噪声:就是噪声很稳定,就像走在立交桥上听到的噪声,只要没有突然变化的声音(喇叭声之类的),其实噪声就像波浪一样很稳定,这样的噪声均值符合正态分布,是可以通过手段去除的
-
→
\rightarrow
→ di : 正态分布
N
(
f
(
x
i
)
,
σ
2
)
N(f(x_i),\sigma ^2)
N(f(xi),σ2)
因为噪声是 N ( 0 , σ 2 ) N(0, σ^2) N(0,σ2) ,叠加到 f ( x i ) f(x_i) f(xi)上就是 N ( f ( x i ) , σ 2 ) N(f(x_i),\sigma ^2) N(f(xi),σ2),这是正态分布的性质决定的,可以查看下正态分布的性质
其实D是由( d 1 , d 2 , . . . d m d_1,d_2,...d_m d1,d2,...dm)这m个样本组成的, p ( D ∣ h ) = p ( d 1 , d 2 , . . . d m ∣ h ) p(D|h)=p(d_1,d_2,...d_m|h) p(D∣h)=p(d1,d2,...dm∣h),每个样本都是独立的,有概率性质得, p ( D ∣ h ) = ∏ i = 1 m p ( d i ∣ h ) p(D|h)=\prod_{i=1}^{m}p(d_i|h) p(D∣h)=i=1∏mp(di∣h)
由于数据服从正态 N ( h ( x i ) , σ 2 ) N(h(x_i),\sigma ^2) N(h(xi),σ2)(这里 h ( x i ) 和上面的 f ( x i ) 一样 h(x_i)和上面的f(x_i)一样 h(xi)和上面的f(xi)一样,利用正态分布密度函数得 p ( D ∣ h ) = ∏ i = 1 m p ( d i ∣ h ) = ∏ i = 1 m 1 2 π σ 2 e − 1 2 ( d i − h ( x i ) σ ) 2 p(D|h)=\prod_{i=1}^{m}p(d_i|h)=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}(\frac{d_i-h(x_i)}{\sigma})^2} p(D∣h)=i=1∏mp(di∣h)=i=1∏m2πσ21e−21(σdi−h(xi))2
由于求的是参数h,所以可以对 ∏ i = 1 m 1 2 π σ 2 e − 1 2 ( d i − h ( x i ) σ ) 2 \prod_{i=1}^{m}\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{1}{2}(\frac{d_i-h(x_i)}{\sigma})^2} ∏i=1m2πσ21e−21(σdi−h(xi))2取log(因为log单调的,而且计算简单,不会影响比较取最大的h)
上面由于求式子最大,所以一些函数可以去掉,得KaTeX parse error: Expected 'EOF', got '}' at position 30: …_i)}{\sigma})^2}̲,有负号,去掉负号就成为求式子最小的参数h
最后就是求残差平方和最小的参数h, - 独立随机变量,可以认为是正态分布噪声
N
(
0
,
σ
2
)
,
h
M
L
=
h
L
S
E
N(0, \sigma^2), h_{ML} =h_{LSE}
N(0,σ2),hML=hLSE,极大似然的假设就是服从最小二乘法(最小平方误差)的假设
(因此我们日常生活中经常用到极大似然估计,就比如上面的数数,因为这样是最小平方误差最小的)
Naïve Bayesian Classifier (朴素贝叶斯分类器)
-
假设目标函数 f : X → V X \rightarrow V X→V,其中每个样本 x = (a1, a2, …, an). (ai是属性,不是样本)
那么最有可能的 f(x) 的值是:
v M A P = a r g m a x v j ∈ V P ( x ∣ v j ) P ( v j ) v_{MAP} = \underset {v_j \in V}{argmax}P(x|v_j)P(v_j) vMAP=vj∈VargmaxP(x∣vj)P(vj) -
朴素贝叶斯假设:
P ( x ∣ v j ) = P ( a 1 , a 2 . . . a n ∣ v j ) = ∏ i P ( a i ∣ v j ) P(x|v_j)=P(a_1,a_2...a_n|v_j)=\prod_iP(a_i|v_j) P(x∣vj)=P(a1,a2...an∣vj)=i∏P(ai∣vj)
每个属性 a 1 , a 2 . . . a n 独立 每个属性a_1,a_2...a_n独立 每个属性a1,a2...an独立比如之前的例子,要不要去游泳,就有温度、风、湿度等属性
经常在文本上使用独立性的假设,每个字都是独立,虽然语法上可能不独立,但是实际往往这样使用,看后面示例 -
朴素贝叶斯分类器:
v N B = a r g m a x v j ∈ V P ( v j ) ∏ i P ( a i ∣ v j ) = a r g m a x v j ∈ V { l o g P ( v j ) + ∑ i l o g P ( a i ∣ v j ) } \begin{align*} v_{NB} &= \underset{v_j \in V}{argmax}P(v_j)\prod_iP(a_i|v_j) \\ &=\underset{v_j \in V}{argmax}\{logP(v_j) + \sum_ilogP(a_i|v_j)\} \\ \end{align*} vNB=vj∈VargmaxP(vj)i∏P(ai∣vj)=vj∈Vargmax{logP(vj)+i∑logP(ai∣vj)}
如果满足属性之间的独立性,那么 v M A P = v N B v_{MAP} = v_{NB} vMAP=vNB
举例1:词义消歧 (Word Sense Disambiguation)
- e.g. fly =? bank = ?(fly有苍蝇和飞的意思,bank 有河岸和银行的意思)
- 对于单词 w,使用上下文 c 进行词义消歧(就是明确单词在上下文的意思,让机器知道该使用哪个意思)
- e.g. A fly flies into the kitchen while he fry the chicken. (他在炸鸡时一只苍蝇飞进了厨房)
- 上下文 c: 在词 w 周围的一组词wi(即:特征 / 属性)
- si: 词 w 的第 ith 个含义(即:输出标签)
在上下文中取几个次,并没有明确说法,
比如前后各取两个,对于fly就是 Na a files into 或H a files into,h:head对于flies就是 a fly into kitchen
比如fly的含义s1就是苍蝇,s2就是飞
- 朴素贝叶斯假设:
P
(
c
∣
s
k
)
=
∏
w
i
∈
c
P
(
w
i
∣
s
k
)
P(c|s_k)=\prod_{w_i \in c}P(w_i|s_k)
P(c∣sk)=wi∈c∏P(wi∣sk)
朴素贝叶斯假设其实就是P(D|h),D就是这里的c,上下文
根据 M a p = a r g m a x P ( D ∣ h ) P ( h ) Map=argmax P(D|h)P(h) Map=argmaxP(D∣h)P(h),D在这里就是c,是由独立性的, P ( D ∣ h ) = P ( c ∣ h ) = ∏ w i P ( w i ∣ h ) P(D|h)=P(c|h)=\prod_{w_i}P(w_i|h) P(D∣h)=P(c∣h)=∏wiP(wi∣h)
文本里往往有独立性假设,一个次往往就是就是独立出现的,和它前面和后面没有关系,虽然经常在语言上不成立,比如语言是有语法结构的,我们称独立性假设不完全成立(uni),但简化计算经常使用,
如果觉得觉得语言是临近两个词相关,可以取两个词作为一个特征,比如Na a作为一个特征, files into作为一个特征,into the, 有时候用3个词作为特征等等, - 朴素贝叶斯选择:
s
=
a
r
g
m
a
x
s
k
{
l
o
g
P
(
s
k
)
+
∑
w
i
∈
c
l
o
g
P
(
w
i
∣
s
k
)
}
s=\underset{s_k}{argmax}\{logP(s_k) + \sum_{w_i \in c}logP(w_i|s_k)\}
s=skargmax{logP(sk)+wi∈c∑logP(wi∣sk)} (s其实就是hNB)
其中: P ( s k ) = C ( s k ) C ( w ) P ( w i ∣ s k ) = C ( w i , s k ) C ( s k ) P(s_k) = \frac{C(s_k)}{C(w)}\ \ \ \ \ P(w_i|s_k) = \frac{C(w_i,s_k)}{C(s_k)} P(sk)=C(w)C(sk) P(wi∣sk)=C(sk)C(wi,sk)
C(w)就是fly词出现的次数 C(sk)就是训练样本中有多少次是苍蝇的意思,
P(wi|sk)就是(a,fly作为苍蝇)出现的次数/fly作为苍蝇出现的次数
把fly作为苍蝇的特征带入公式求值{(into,苍蝇),(a 苍蝇)等}和fly作为飞的特征值带入,看那种式子值最大那fly就是哪种意思
计算 P ( w i ∣ s k ) = C ( w i , s k ) C ( s k ) P(w_i|s_k) = \frac{C(w_i,s_k)}{C(s_k)} P(wi∣sk)=C(sk)C(wi,sk)经常是\frac{C(w_i,s_k)+1}{C(s_k)+N},因为使用log,log不能使用0,使用0就没有意思
举例 2: 垃圾邮件过滤
- 垃圾邮件量: 900亿/天,80% 来自 <200 发送者
- 第四季度主要垃圾邮件来源 (数据来自 Sophos)
- 美国 (21.3% 垃圾信息来源,较28.4%有所下降)
- 俄罗斯 (8.3%, 较 4.4% 有上升)
- 中国 (4.2%, 较 4.9% 有下降)
- 巴西 (4.0%, 较 3.7% 有上升)
垃圾邮件过滤问题中人们学到的经验:
- 不要武断地忽略任何信息
- E.g. 邮件头信息
- 不同的代价: 假阳性 v.s. 假阴性
假阳性:本来是垃圾邮件,识别为正常邮件,影响比较大,容易错漏重要信息
假阴性:本来是正常邮件,识别为垃圾邮件 - 一个非常好的参考报告: http://www.paulgraham.com/better.html
从垃圾邮件过滤中学到的经验
(根据报告:)
早期关于贝叶斯垃圾邮件过滤的论文有两篇,于1998年发表在同一个会议
1) 作者是 Pantel 和 Lin; 2) Microsoft 研究院的一个小组
Pantel 和 Lin的过滤方法效果更好
但它只能捕捉92%的垃圾邮件,且有1.16% 假阳性错误
文章作者实现了一个贝叶斯垃圾邮件过滤器
它 能捕捉 99.5%的垃圾邮件 且 假阳性错误低于0.03%
- 文章作者提到,和前人们有5 处不同
- 他们训练过滤器的数据非常少:
- 160 垃圾邮件和466非垃圾邮件
2.最重要的一个不同可能是他们忽略了邮件头
3.Pantel 和 Lin **对词进行了stemming (词干化) **—— 做法有些草率了
stemming是文本操作经典的做法,但是用在邮件识别优点草率(如books就把s去掉,booked就把ing去掉,booking就把ing去掉,恢复到原型,这样做可以很大的节省空间//举例 Subject*FREE 0.9999 // Subject上出现大写FREE,垃圾邮件识别率0.9999 Subject*free 0.9782, // Subject上出现小写free,垃圾邮件识别率0.9782 free 0.6546 //正文上出现free,垃圾邮件识别率0.6546 free!! 0.9999 //正文上出现free!!,垃圾邮件识别率0.9999
4.计算概率的方式不同。他们使用了全部的词,但作者只用了最显著的15个词
5.他们没有对假阳性做偏置。而作者考虑了:对非垃圾邮件中出现的词频翻倍
非垃圾中的词加重权重,比如accout在垃圾邮件出现概率10次,非垃圾邮件出现10次,那现在就是有20/30次概率是非垃圾邮件 - 160 垃圾邮件和466非垃圾邮件
机器学习不等于算法,机器学习特征很重要,机器学习算法用法很重要
MDL (最小描述长度,Minimum Description Length)
- 奥卡姆剃刀:
- 偏向于最短的假设
- MDL:
- 偏向假设 h 使得最小化:
h
M
D
L
=
a
r
g
m
i
n
h
∈
H
{
L
C
1
(
h
)
+
L
C
2
(
D
∣
h
)
}
h_{MDL}=\underset{h \in H}{argmin}\{L_{C_1}(h) + L_{C_2}(D|h)\}
hMDL=h∈Hargmin{LC1(h)+LC2(D∣h)}
其中 L C ( x ) L_C(x) LC(x)是 x在编码C下的 描述长度 (x就是h或(D|h))
- 偏向假设 h 使得最小化:
h
M
D
L
=
a
r
g
m
i
n
h
∈
H
{
L
C
1
(
h
)
+
L
C
2
(
D
∣
h
)
}
h_{MDL}=\underset{h \in H}{argmin}\{L_{C_1}(h) + L_{C_2}(D|h)\}
hMDL=h∈Hargmin{LC1(h)+LC2(D∣h)}
MDL解释(基于信息理论)
- 为随机发送的信息所设计的编码(比如abccde,比如a用一个编码表示,d用一个编码表示等,把一个字符串编码,加入用发报机发送,另一边解码,就可以知道这个代表什么)
- 遇到消息 i 的概率是 pi
- 所需的最短编码(最小期望传输位数)是什么?
- 为可能性较大的消息赋予较短的编码(要没有歧义)
- 为可能性较大的消息赋予较短的编码(要没有歧义)
- 最优编码对消息i 的编码长度为 -log2 p 比特 [Shannon & Weaver 1949]
MDL 和 MAP
-log2 p (h): 假设空间H最优编码下,h 的长度
-log2 p (D|h): 最优编码下,给定h 时D 的描述长度
hMAP=hMDL,因此符合极大后验假设的那个就设就是符合MDL的那个假设
对MDL的另一个解释
h M D L = a r g m i n h ∈ H { L C 1 ( h ) + L C 2 ( D ∣ h ) } h_{MDL} = \underset {h \in H}{argmin}\{L_{C_1}(h) + L_{C_2}(D|h)\} hMDL=h∈Hargmin{LC1(h)+LC2(D∣h)}
- h的长度 和 给定h编码数据的代价
- 假设实例的序列以及编码规则对发送者和接收者来说都是已知的
- 没有分类错误: 除h外不需要传输额外的信息
- 如果 h 错误分类了某些样本,则需要传输:
-
- **哪个实例出错了? **(比如,在一长串的01000100111里第6个错了)
– 最多 log2m (m: 实例的个数)
- **哪个实例出错了? **(比如,在一长串的01000100111里第6个错了)
-
- **正确的分类结果是什么? **(比如,在一长串的012012里错的应该是012中的哪个)
– 最多 log2k (k: 类别的个数)
这是给错误的修正
- **正确的分类结果是什么? **(比如,在一长串的012012里错的应该是012中的哪个)
-
- 权衡: 假设的复杂程度 vs. 由假设造成的错误数
- 更偏好 一个短的且错误更少的假设
而不是一个长的但完美分类训练数据的假设 ← \leftarrow ←应对过拟合问题
- 更偏好 一个短的且错误更少的假设
总结
- 贝叶斯定理
- 用先验概率来推断后验概率
- M a x A P o s t e r i o r , M A P , h M A P ,极大后验假设 Max\ A\ Posterior, MAP, h_{MAP} ,极大后验假设 Max A Posterior,MAP,hMAP,极大后验假设
-
M
a
x
i
m
u
m
L
i
k
e
l
i
h
o
o
d
,
M
L
,
h
M
L
,
极大似然假设
Maximum Likelihood, ML, h_{ML}, 极大似然假设
MaximumLikelihood,ML,hML,极大似然假设
- • ML vs. LSE (最小二乘,Least Square Error)
- Naïve Bayes, NB, 朴素贝叶斯
- 独立属性/特征假设
- NB vs. MAP
- Maximum description length, MDL (最小描述长度)
- 权衡: 假设复杂度 vs. 假设带来的错误
- MDL vs. MAP