系统学习NLP(二十六)--NBSVM
Posted Eason.wxd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统学习NLP(二十六)--NBSVM相关的知识,希望对你有一定的参考价值。
论文:Baselines and Bigrams: Simple, Good Sentiment and Topic Classification
参考:https://blog.csdn.net/leayc/article/details/80037757 跟原文有一定差异,理解不一致。
朴素贝叶斯(Naive Bayes, NB)和支持向量机(Support Vector Machines, SVM)的变体常被用作文本分类的基线方法,但它们的性能因模型变体、使用的特性和任务/数据集的不同而有很大差异。Sida Wang 和 Christopher D. Manning基于两种算法的特质,提出了NBSVM算法,实验证明,NBSVM在情绪分析数据集上优于大多数算法的结果,甚至有时能达到start-of-the-art,因此在文本分类中常被作为一个有用的baseline。
整体思想是把 NB 和 SVM 的长处综合一下,构造一个简单的线性模型。在几个情感分析的数据集上结合 bigram 得到的效果不错。
方法也很简单,就是用 NB 和 SVM 的思想来构造一个线性分类器:
具体可以拆解成四个部分:
1. 构造权重向量 r:
其中,,α是平滑系数,防止0的情况出现,是第 i个样本的特征向量的第 j个特征出现的次数。这样求出的向量 r称为 log-count ratio,其实就是类似WOE、
简单来说就是求正负样本上所有特征出现的频率的比值的对数。这就是模型中的 NB 部分,只不过对二分类问题用正负样本特征的频率比直接替代了分别求概率然后比较的步骤。
注意:把log里面的比例项,在贝叶斯理论里,叫做贝叶斯因子,衡量的一个理论优于另一个理论的相对确证性,也是似然概率的比值,所以,这里的log-count ratio计算出的权重向量,衡量的是整体的训练集上数据x支持正样本的概率是支持负样本的概率的倍数。这个比例取log后,就是评分卡里的WOE,即证据权重。
2. 多项式 NB
在 MNB 中,w = r, ,两个 N 分别是正样本和负样本的数量。作者补充说另一篇文献发现二值化的 f(k)效果更好,所以 f(k)可以做个二值化。多项式的意思的是似然函数中服从多项式分布。
3. SVM
把带 L2 约束的 SVM 的优化目标函数写出来:
经验证 L2-loss 比 L1-loss 表现好,而且稳定(这个哪里需要验证啊?理论就可以得到这个结论)。实现时使用了 LibLinear 库。
4. SVM + NB features
怎么把 NB 和 SVM 搓到一起的呢?
目标函数还是 SVM 的 L2-loss,但 x(k)这里变成了 r̂ ∘f^(k)。这个圈表示对应位置元素相乘,即所谓的 element-wise product,实际上就是二值化后的输入又加入了 NB 分类权重。其实就是MNB特征,即上面红色部分的NB权重跟原始特征做加权,得到MNB特征,这么做,有利于长文本分类,作者说还可以在 MNB 和 SVM 间做个均衡:
,这里意思是SVM得到的支持向量(用于区分正负的特征)在所有特征集上的比例,与上面似然比一样的道理,β 称为内插参数,可以理解为一种正则化:相信 NB 的判断,除非 SVM 置信度非常高。
以上是关于系统学习NLP(二十六)--NBSVM的主要内容,如果未能解决你的问题,请参考以下文章