[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^)−(1−y)log(1−p^)
其中
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(1−p^)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=N1N∑i=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=1∑m−log(p^)+yi=0∑n−log(1−p^))
当样本分布失衡时,在损失函数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=1∑m−αlog(p^)+yi=0∑n−(1−α)log(1−p^))
其中
α
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=−(1−p^)γlog(p^)−p^γlog(1−p^)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^1−p^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中的样本不均衡问题