[2] 样本不均衡问题及其解决办法

Posted 猿上加猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[2] 样本不均衡问题及其解决办法相关的知识,希望对你有一定的参考价值。

5 损失函数

在机器学习中,可以通过修改模型中的“class_weight”参数,从而调节不均衡样本的惩罚权重。

5.1 LogisticRegression(逻辑回归模型)

代码:

lr_l2 = LogisticRegression(penalty="l1",      #正则化,防止过拟合,包括l1和l2
						   C=0.5,             #正则化强度,C值越大,惩罚越重,正则化的效力越强
						   solver="liblinear",     #优化算法选择参数 
						   multi_class="auto",     #分类个数
						   class_weight='balanced' #类权重参数,控制类的惩罚权重
						   )

效果:

提升了一点,在测试集上的改进会更加显著。

5.2 SVC(支持向量回归模型)

代码:

svc2 = SVC(C=0.1,                   #边界点的惩罚系数,值越大,预测精度越高,但越容易过拟合
		   kernel='rbf',            #核函数类型
		   class_weight='balanced', #类权重参数
		   random_state=2)

效果:

精度同样有所提高,但是容易过拟合,只能调低参数C。

5.3 focal loss

focal loss由何凯明提出,用于解决数据不平衡对深度学习模型造成的模型性能问题

5.3.1 交叉熵函数

L o s s = L ( y , p ^ ) = − y l o g ( p ^ ) − ( 1 − y ) l o g ( 1 − p ^ ) Loss=L(y,\\hatp )=-ylog(\\hatp)-(1-y)log(1-\\hatp) Loss=L(y,p^)=ylog(p^)(1y)log(1p^)
其中 p ^ \\hat p p^为预测概率
在二分类下, L L L如下形式:
L c e ( y , p ^ ) = − l o g ( p ^ ) y = 1 − l o g ( 1 − p ^ ) y = 0 L_ce(y,\\hat p)=\\left\\\\beginmatrix -log(\\hat p) & y=1\\\\ -log(1-\\hat p) & y=0 \\endmatrix\\right. Lce(y,p^)=log(p^)log(1p^)y=1y=0
在交叉熵损失函数(CE)的基础上增加了类别的不同权重以及困难(高损失)样本的权重。

5.3.2 样本不均衡问题

L = 1 N ∑ N i = 1 l ( y i , P ^ i ) L=\\frac1N\\sum_N^i=1l(y_i,\\hat P_i) L=N1Ni=1l(yi,P^i)
在二分类中,L表示如下:
L = 1 N ( ∑ y i = 1 m − l o g ( p ^ ) + ∑ y i = 0 n − l o g ( 1 − p ^ ) ) L=\\frac1N(\\sum_y_i=1^m-log(\\hat p)+\\sum_y_i=0^n-log(1-\\hat p)) L=N1(yi=1mlog(p^)+yi=0nlog(1p^))
当样本分布失衡时,在损失函数L的分布也会发生倾斜,多数类样本就会在损失函数占据主导地位。由于损失函数的倾斜,模型训练过程中会倾向于样本多的类别,造成模型对少样本类别的性能较差。

5.3.3 平衡交叉熵问题

从样本分布角度对损失函数添加权重因子。
原理:基于样本非平衡造成的损失函数倾斜,一个直观的做法就是在损失函数中添加权重因子,提高少数类别在损失函数中的权重,平衡损失函数的分布。

在二分类下, L L L变为如下形式:
L = 1 N ( ∑ y i = 1 m − α l o g ( p ^ ) + ∑ y i = 0 n − ( 1 − α ) l o g ( 1 − p ^ ) ) L=\\frac1N(\\sum_y_i=1^m-\\alpha log(\\hat p)+\\sum_y_i=0^n-(1-\\alpha )log(1-\\hat p)) L=N1(yi=1mαlog(p^)+yi=0n(1α)log(1p^))
其中 α 1 − α = n m \\frac\\alpha1-\\alpha=\\fracnm 1αα=mn ,即权重的大小根据正负样本的分布进行设置。

5.3.4 focal loss

从样本分类难易程度解决问题
原理:从loss的另一角度的解决方法,就是针对样本难易程度进行权重的分配,对难分类的样本赋予更大的权重,对于易分类的样本赋予较小的权重。
具体形式如下:
L f l = − ( 1 − p ^ ) γ l o g ( p ^ ) y = 1 − p ^ γ l o g ( 1 − p ^ ) y = 0 L_fl=\\left\\\\beginmatrix -(1-\\hat p)^\\gammalog(\\hat p) & y=1\\\\ -\\hat p^\\gammalog(1-\\hat p) & y=0 \\endmatrix\\right. Lfl=(1p^)γlog(p^)p^γlog(1p^)y=1y=0
γ \\gamma γ的意义为可调节因子,其中 γ \\gamma γ均大于0,定义 p t p_t pt如下:
p t = p ^ y = 1 1 − p ^ y = 0 p_t=\\left\\\\beginmatrix \\hat p & y=1\\\\ 1-\\hat p & y=0 \\endmatrix\\right. pt=p^1p^y=1y=0
因此focalloos表达式变形如下:
L f l = − ( 1 − p t ) γ l o g ( p t ) L_fl=-(1-p_t)^\\gammalog(p_t) Lfl以上是关于[2] 样本不均衡问题及其解决办法的主要内容,如果未能解决你的问题,请参考以下文章

机器学习sklearn----支持向量机SVC中的样本不均衡问题

机器学习sklearn----支持向量机SVC中的样本不均衡问题

机器学习sklearn----支持向量机SVC中的样本不均衡问题

机器学习sklearn----支持向量机SVC中的样本不均衡问题

机器学习-样本不均衡问题处理

小白学AI八种应对样本不均衡的策略