迁移学习应用—基于朴素贝叶斯的文本分类

今天的博客主要参考了戴文渊的2007年在AAAI上发表的论文《Transferring Naive Bayes Classifiers for Text Classification》。这篇paper遇到的任务场景是:source文本数据和task文本数据分布属于分布 D u D l (同时这里的 D l D u 并不满足独立同分布),而source文本是有标注的,task文本是没有标注的,任务是利用朴素贝叶斯算法,把在 D l 上学到的规律运用到 D u 上去。

下面首先来简要地介绍一下朴素贝叶斯分类算法,假设符号 d 代表了document, c 代表了class label, w 代表了word,那么文本分类的目标就是:
P ( c | d ) = P ( c ) Π w d P ( w | c )
一种对 P ( w | c ) 最好的估计方式是: P ( w | c ) = 1 + n ( w , c ) | W | + n ( c )
其中 n ( w , c ) 代表了 w 词在类别为 c 的语料中出现的次数, n ( c ) 代表了类别为 c 语料中出现的词数总和。
根据最大后验估计原理,整个模型在 D u D l 上的损失函数如下,h是模型参数:
l ( h | D l , D u ) => l o g P D u ( h ) + d D l l o g c C P D u ( d | c , h ) . P D u ( c | h ) + λ d D u l o g c C P D u ( d | c , h ) . P D u ( c | h )
当label data数量比较少的时候, λ 就可以设置的比较小。

接下来使用EM算法来对模型的参数进行估计,可以从公式看出所有的计算和估计都是在 D u 分布下进行的:
E_Step:
P D u ( c | d ) => P D u ( c ) Π w d P D u ( w | c )

M_Step:
P D u ( c ) => i { l , u } P D u ( D i ) . P D u ( c | D i ) => i { l , u } P D u ( D i ) . d D i P D u ( c | d ) . P D u ( d | D i )

D u ( w | c ) => i { l , u } P D u ( D i ) . P D u ( c | D i ) . P D u ( w | c , D i )
其中, P D u ( w | c , D i ) = 1 + n D u ( w , c , D i ) | w | + n D u ( c , D i )
n D u ( w , c , D i ) = d D i | d | . P D u ( w | d ) . P D u ( c | d )
n D u ( c , D i ) = d D i | d | . P D u ( c | d )
上述公式中, P D u ( w | d ) P D u ( d | D i ) 和分布 D u 没有关系,因此也可以表示为 P ( w | d ) P ( d | D i )
由于数据 D u 是从分布 D u 中采样生成的,故有 P D u ( D u ) > P D u ( D l ) ,但是它们之间具体的函数关系是多少,作者采用了一中实验方法来获得:
首先作者使用KL散度来衡量这种差异:
K L ( D l | | D u ) = w W P D l ( w ) l o g 2 P D l ( w ) P D u ( w ) = w W P ( w | D l ) l o g 2 P ( w | D l ) P ( w | D u )
接下来采用求解曲线拟合问题的方法来解决这个问题,即给两个变量(x,y)对应的一些取值,然后找出它们之间的映射关系 f ( x ) => y
在该场景下x值就是KL散度,y值是 P D u ( D l ) P D u ( D u ) ,在几个数据集上调节y的取值到最好的效果,然后把这个时候的x值记录下来,这样在几个数据集上操作就可以获得好几对(x,y)的组合,接下来就可以进行函数拟合了。

猜你喜欢

转载自blog.csdn.net/guoyuhaoaaa/article/details/80867841
今日推荐