当对商品评论的文本进行情感分析时,一般假设参与分类的正类样本和负类样本一样多,而假设和实际情况并不相符,在实际收集的产品评论语料中,我们发现正类样本和负类样本差距很大,即类别之间的语料数目相差很大。
类别之间的语料数目不平衡是制约很多分类算法准确率的一个因素。很多分类器分类的时候都会倾向于将语料分为大类,因此造成分类的准确率降低。然而很多时候哪些少数类才是值得我们关注的。例如,网络攻击,信用卡非法交易等,信用卡非法交易属于少类,现实生活中少数类往往是比多数类有价值的。
针对不平衡数据,我们往往从数据和算法两个层面来进行处理:
1.数据层面:
a) 上采样。增加少类的样本数,可以直接随机重复已有样本,也可以按照一定规则合成少数类数据。
b) 下采样。随机减少多数类样本的数量。
2.算法层面:
Weighted loss function,一个处理非平衡数据常用的方法就是设置损失函数的权重,使得少数类判别错误的损失大于多数类判别错误的损失。在python的sk-learn中我们可以使用class_weight参数来设置权重,提高少数类权重,例如设置为多数类的10倍。
正负样本不均衡处理方法:
1) 当正样本>>负样本,且量都挺大==》下采样(对正样本采样)
2) 当正样本>>负样本 ,量不大==》
a) 采集更多的数据
b) 上采样
c) 修改损失函数(负样本前给权重,照顾负样本)。