二进制分类

数据挖掘 机器学习 分类 监督学习
2022-03-05 13:03:05


我想首先说这不是另一个问题的完全重复。我检查了它,它没有我急需的东西。
所以这就是问题所在。我有一个包含 30 个特征和 100000 行训练数据的数据集。我想建立一个二元分类模型来确定这个人是否有资格成为我们俱乐部的会员。我是一名新秀数据科学家,二进制分类对我来说是第一次。因此,请帮助我并告诉我哪种型号最适合此目的。另外,模型训练所花费的时间并不重要......非常感谢

更新:好的,我使用了逻辑回归,而不是给一些成员作为接受(1)它显示我所有成员都没有获得成员资格......所以我认为选择模型可能有错误,所以我寻找其他型号...

3个回答

在我看来,这是一个经典的不平衡二元分类问题(见上面的评论)。你用的是什么损失?看起来您的模型正在预测非会员类别,因为它正在最大限度地减少平均损失。以下是您可能想尝试解决此问题的一些技术:

  • 使用正则化
  • 过度抽样成员类别
  • 对非会员类进行抽样
  • 选择变量,与上面的正则化相关,带有 l1 和 l2 惩罚
  • 特征工程:你指定你有 30 个特征,但它们都有用吗?您如何对它们进行预处理以提供模型?它们是数字的还是分类的?

我希望这能给你一些关于如何解决这个问题的想法。更改模型不会奇迹般地解决您的问题。

由于您的数据高度不平衡,并且根据您的任务,这是一个异常检测的情况。

异常检测是一种情况,您的数据中的一种示例数量非常少,而另一种示例数量非常多,例如您的会员部门。其他示例就像检测汽车发动机中的缺陷——在 10000 个发动机中,只有 40 个发动机有缺陷。同样,会员与非会员相比也非常少。因此,将那些作为成员的人视为异常。

https://www.allerin.com/blog/machine-learning-for-anomaly-detection

正如您可以在上面的链接中查看的那样,有监督和无监督方法可用于此类任务。我建议你试试这些方法。您也可以查看此链接以获取更多解释-

https://www.datascience.com/blog/python-anomaly-detection

除了使用正则化之外,当您将数据划分为训练集和测试集以处理类不平衡问题时,我会使用分层随机分割。避免将准确度直接用作性能指标也很重要,而应使用 f1-score 来代替。如果你有类不平衡,准确性不是一个很好的性能指标。