当训练数据有分类标签但需要的任务是概率时怎么办?

Posted

技术标签:

【中文标题】当训练数据有分类标签但需要的任务是概率时怎么办?【英文标题】:What to do when the training data has classification labels but the required task is probabillities? 【发布时间】:2019-07-28 13:53:13 【问题描述】:

在一个机器学习项目中,我有一些关于一家公司客户的训练数据,其中包括 20 个输入特征和一个标签,该标签代表客户对营销活动的反馈,其形式为 Yes/No 答案:

c1 => f1_1,f2_1,...,f20_1 Yes

c2 => f1_2,f2_2,...,f20_2 No

要求是预测每个客户对广告系列的“接受概率”

因此,训练数据具有二元分类标签,而要求是回归预测

我能够提取每个特征 w.r.t 的相关性。分类标签。

根据与分类标签的相关性强度将所谓的重要性权重应用于特征并将这些权重应用于特征的值以产生类似 的结果是否有意义?每个客户的评分率并将其用作回归标签?

c1_score = w1(f1_1) + w2(f2_1) + ... + w20(f20_1)

c2_score = w1(f1_2) + w2(f2_2) + ... + w20(f20_2)

如果没有,还有其他建议吗?

【问题讨论】:

使用逻辑回归。它给了你概率。 【参考方案1】:

要求是预测每个的“接受概率” 客户加入广告系列。

因此,训练数据具有二进制分类标签,而 需求是一个回归预测。

当然不是

您的任务绝对是一个分类

大多数分类器实际上并没有产生“硬”标签0/1作为输出;它们默认产生的是概率,随后通过阈值操作将其转换为硬标签(例如,如果概率p > 0.5,则声明1,否则声明0)。 p>

现在,有时会发生业务问题,无论出于何种原因,都需要这些概率而不是硬标签(您的情况就是这样,Kaggle 中的绝大多数分类竞赛也是如此);这当然不会改变 方法 中的任何内容(它仍然是一个分类问题),除了取消对最终阈值操作的要求 - 在任何情况下都不是 统计的一部分 问题的一部分,正如this Cross Validated thread 的答案正确指出的那样:

当您输出一个 新样本的每个类别的概率。选择阈值 超出此范围,您将新观察分类为 1 与 0 不属于 统计数据了。它是 decision 组件的一部分。

因此,您只需使用常用的分类算法,如逻辑回归、随机森林等,只需使用相应的方法来获取概率而不是类标签(例如 predict_proba scikit-learn 中逻辑回归的方法,其他平台/算法类似)。

您可能还会发现我的以下答案(以及其中的链接)很有用:

Predict classes or class probabilities? High AUC but bad predictions with imbalanced data Getting a low ROC AUC score but a high accuracy

【讨论】:

很好的解释和很好的参考资料来了解更多信息,非常感谢。

以上是关于当训练数据有分类标签但需要的任务是概率时怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

多标签分类

当训练集包含监督分类中的一些错误数据时,我该怎么办?

如何在训练期间为 Scikit Learn SVM 中的每个标签分配概率?

SVM 模型不支持概率估计?

PU Learning简介:对无标签数据进行半监督分类

使用 Scikit Learn 和概率而不是简单标签的多标签分类