今天的博客主要参考了戴文渊的2007年在AAAI上发表的论文《Transferring Naive Bayes Classifiers for Text Classification》。这篇paper遇到的任务场景是:source文本数据和task文本数据分布属于分布
Du
和
Dl
(同时这里的
Dl
和
Du
并不满足独立同分布),而source文本是有标注的,task文本是没有标注的,任务是利用朴素贝叶斯算法,把在
Dl
上学到的规律运用到
Du
上去。
下面首先来简要地介绍一下朴素贝叶斯分类算法,假设符号
d
代表了document,
c
代表了class label,
w
代表了word,那么文本分类的目标就是:
P(c|d)=P(c)Πw∈dP(w|c)
一种对
P(w|c)
最好的估计方式是:
P(w|c)=1+n(w,c)|W|+n(c)
其中
n(w,c)
代表了
w
词在类别为
c
的语料中出现的次数,
n(c)
代表了类别为
c
语料中出现的词数总和。
根据最大后验估计原理,整个模型在
Du
和
Dl
上的损失函数如下,h是模型参数:
l(h|Dl,Du)=>logPDu(h)+∑d∈Dllog∑c∈CPDu(d|c,h).PDu(c|h)+λ∑d∈Dulog∑c∈CPDu(d|c,h).PDu(c|h)
当label data数量比较少的时候,
λ
就可以设置的比较小。
接下来使用EM算法来对模型的参数进行估计,可以从公式看出所有的计算和估计都是在
Du
分布下进行的:
E_Step:
PDu(c|d)=>PDu(c)Πw∈dPDu(w|c)
M_Step:
PDu(c)=>∑i∈{l,u}PDu(Di).PDu(c|Di)=>∑i∈{l,u}PDu(Di).∑d∈DiPDu(c|d).PDu(d|Di)
Du(w|c)=>∑i∈{l,u}PDu(Di).PDu(c|Di).PDu(w|c,Di)
其中,
PDu(w|c,Di)=1+nDu(w,c,Di)|w|+nDu(c,Di)
而
nDu(w,c,Di)=∑d∈Di|d|.PDu(w|d).PDu(c|d)
nDu(c,Di)=∑d∈Di|d|.PDu(c|d)
上述公式中,
PDu(w|d)
与
PDu(d|Di)
和分布
Du
没有关系,因此也可以表示为
P(w|d)
与
P(d|Di)
由于数据
Du
是从分布
Du
中采样生成的,故有
PDu(Du)>PDu(Dl)
,但是它们之间具体的函数关系是多少,作者采用了一中实验方法来获得:
首先作者使用KL散度来衡量这种差异:
KL(Dl||Du)=∑w∈WPDl(w)log2PDl(w)PDu(w)=∑w∈WP(w|Dl)log2P(w|Dl)P(w|Du)
接下来采用求解曲线拟合问题的方法来解决这个问题,即给两个变量(x,y)对应的一些取值,然后找出它们之间的映射关系
f(x)=>y
在该场景下x值就是KL散度,y值是
PDu(Dl)PDu(Du)
,在几个数据集上调节y的取值到最好的效果,然后把这个时候的x值记录下来,这样在几个数据集上操作就可以获得好几对(x,y)的组合,接下来就可以进行函数拟合了。