如何预测表示目标类概率的连续因变量?

Posted

技术标签:

【中文标题】如何预测表示目标类概率的连续因变量?【英文标题】:How to predict a continuous dependent variable that expresses target class probabilities? 【发布时间】:2014-12-23 14:41:40 【问题描述】:

我的样本可以属于 0 类或 1 类,但对于我的一些样本,我只有它们属于 1 类的概率。到目前为止,我已经通过应用阈值来离散化我的目标变量,即所有 y >= t 我分配给第 1 类,并且我丢弃了所有属于第 1 类的概率非零的样本。然后我使用 scitkit-learn 将线性 SVM 拟合到数据中。

当然,通过这种方式,我通过了相当多的训练数据。我的一个想法是省略离散化并改用回归,但通常通过回归进行分类并不是一个好主意,例如它不能保证预测值在区间 [0,1] 内。

顺便说一下,我的特征 x 的性质与其中一些相似,我也只有相应特征出现的概率。如果我以与离散因变量相同的方式离散我的特征,那么对于这个错误并没有太大的区别。

【问题讨论】:

【参考方案1】:

您也许可以使用样本加权来近似这一点 - 将样本分配给概率最高的类别,但根据样本实际属于的概率对该样本进行加权。许多 scikit-learn 估计器都允许这样做。

例子:

X = [1, 2, 3, 4] -> 0 类概率为 0.7 将变为 X = [1, 2, 3, 4] y = [0] 样本权重为 0.7 。您也可以进行标准化,使样本权重介于 0 和 1 之间(因为在此方案中,您的概率和样本权重只会从 0.5 到 1)。您还可以结合非线性惩罚来“加强”高概率样本的影响。

【讨论】:

我总是复制训练集,然后用概率作为正例的样本权重,(1 - 概率)作为负例的样本权重。 这与用概率而不是硬 0/1 目标写出交叉熵函数有多接近? (我现在没有一张纸可以写出来,但我会尽快尝试) @larsmans 如果我没有完全产生幻觉,复制训练集,将第一个副本的目标变量设置为 1,将第二个副本的目标变量设置为 -1,然后按照您指示的方式对样本加权,导致正是为了优化两个目标和软分配的交叉熵。 我认为这可行。直观地说,使用样本特定权重是有意义的。如果我们只是将样本添加到正类中,我认为我们会丢弃这些样本属于负类的概率。如果这被证明可以最小化交叉熵,这将是该数据转换的一个很好的理由。 @Kyle:我查看了 scikit-learn 分类器,但似乎实际上只有少数支持样本特定权重,例如决策树和基于决策树的集成方法。 liblinear 仅通过 libsvm-tools 支持权重,而 scikit-learn 中没有。 @eickenberg 证明起来并不难 :) 但是它确实与正则化混淆了,所以应该重新调整。

以上是关于如何预测表示目标类概率的连续因变量?的主要内容,如果未能解决你的问题,请参考以下文章

具有概率目标的决策树

如何在Python中实现这五类强大的概率分布

如何在R语言中使用Logistic回归模型

解释多类逻辑回归中的预测概率

朴素贝叶斯

如何区别离散变量和连续变量?