python评估不平衡数据集_不平衡数据集的机器学习方法

一、不平衡数据集(unbalanced training set)

数据比算法重要

现实业务场景不像学术上的标准数据集,往往是脏的、不平衡的。比如信用卡欺诈检测,搜索引擎点击预测、网络入侵检测等。

以二分类为例,假如训练数据集正反样本数量比为$100:1$,这种情况称为unbalanced training set。这种情况下对模型学习是极其不利的。

二、解决方法

1.损失函数加惩罚项(加权)

以三分类(类别名可标为0, 1, 2)为例,假设训练集三种类别数量分别为$100000,1000, 100$,其比例为$1000:10:1$。则在其损失函数对每类别添加权重$weight = [1,10,1000]$(注意:是类别数量比重的倒序,即数据少的weight需要大一点),表示类别0权重为1,类别1权重为10,类别2权重为1000. 具体我们来看Pytorch中的torch.nn.CrossEntropyLoss是怎么实现weight的。

Python中无加权的CrossEntropyLoss:

$$

\begin{split}

loss(x, class) &= -log\left(\frac{e^{x[class]}}{\sum_je^{x[j]}}\right) \ &= -x[class] + log\left(\sum\nolimits_je^{x[j]}\right)

\end{split}

$$

其中,$x$为$[1.3,-0.4,0.7]$形状的向量,往往是line层的输出,未经过softmax处理。$class$为真实标签(0、1或2)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值