仅优化数据子集的性能的分类器?

数据挖掘 机器学习 分类 损失函数 分类器
2021-10-10 23:38:27

我正在研究机器学习问题,我只对在我预测的可能性的窄带内获得高精度感兴趣。具体来说,我想要一种算法,当它预测高于特定阈值的可能性时,它会非常准确地得分。

一个励志的例子:

我收到了 100 万个封闭的盒子,其中 10% 包含一枚金币。包含金币的盒子的可能性与盒子的物理特性有关。我被允许打开随机选择的 50 万个盒子,看看里面装的是硬币。在此之后,我可以从剩余的 500K 盒子中选择 100 个,并保留我找到的任何黄金。

我正在寻找一个分类器来解决这个问题。具体来说,我正在寻找正确的方法来合并我只能在测试样本中打开 100 个盒子的约束。换句话说,我的性能度量仅限于测试数据的子样本,因此我需要一个在预测最高可能性时高度准确的分类器。这 100 个框之外的预测误差是零关注的。

我知道成本加权损失函数会以不同的方式惩罚误报/负数,但我不熟悉任何解决优化局部准确性的特定问题的方法。

具体来说,我试图回答两个问题:
1)是否有特定的分类算法非常适合这类问题?2) 我可以修改我的训练集上使用的损失函数,以在这 100 个特定的框内产生高本地化精度吗?

3个回答

我想澄清一下,你只能从测试数据集中挑选 100 个盒子这一事实不是限制(就像你描述的那样)。你只需要从这个角度来看它:

如何挑选最有可能含有黄金的 100 个盒子(从 500K 中取出)?

一个非常合适的算法是决策树分类器。通过使用信息增益(基于熵减少),它可以了解哪些特征可以更准确地将数据集分为两类,即包含黄金的一类和不包含黄金的一类,并忽略(修剪)最弱的属性。之后,您不仅将拥有一个训练有素的分类器,还将深入了解哪些特征对做出决定最重要(非常重要的信息)。

至少有两种方法:

  1. 训练数据的子样本。100 个正例,只有 100 个负例(从所有负例中随机抽取)。
  2. 创建一个 2 通系统。1st pass 使用高召回率算法,选择合理的选项(排除不合理的选项)。第二遍是一种高精度算法。它只查看可能的选项并选择最可能的选项。

很好的问题,是的,有可能(正如您在第 2 点中提到的那样)重新加权您的损失函数以实现您的目标。事实上,对子样本的训练是这种情况的一个特例。但是,我们首先必须假设您的损失函数是加法可分的(95% 的流行机器学习模型都是这种情况)。

假设您的损失函数是 f 你的模型参数是 x. 然后,得到你的最佳模型参数x, 你会解决问题

x=argminxf(x)

现在让我们说 f 是加法可分的

f(x)=infi(x)

在哪里 i索引数据集中的观察结果——线性回归、逻辑回归、SVM 等都是这种情况。嗯,自然是这样的

x=argminxf(x)=argminxinfi(x)=argminxinαifi(x)

在哪里 αi=1 对所有人 i. 你可以想到αi重要性_ith 观察:如 αi 变大,你本质上是在偏置参数 x朝着那个观察。事实上,如果你设置αi 否定,然后观察 i现在被视为模型的反例什么时候αi 设置为 0,就好像你在没有观察的情况下训练你的模型 i 包括 - 如其他答案中所述,从模型中扣留数据的特殊情况。

您可以操纵权重集 {αi}1n如果您有理由相信并非数据集中的所有观察结果都同等重要。一个真实世界的例子是设置αi与某些欺诈事件造成的金钱损失成正比。然后,该模型不仅试图准确预测欺诈,而且更准确地预测代价高昂的欺诈事件。