【问题标题】:In the scikit learn implementation of LDA what is the difference between transform and decision_function?在 LDA 的 scikit learn 实现中,transform 和 decision_function 有什么区别?
【发布时间】:2021-05-07 21:36:44
【问题描述】:

我目前正在做一个项目,使用线性判别分析将一些高维特征集根据一些二进制标签转换为标量值。

所以我在数据和标签上训练 LDA,然后使用 transform(X)decision_function(X) 将数据投影到一维空间中。

我想了解这两个功能之间的区别。我的直觉是decision_function(X) 会是transform(X) + bias,但事实并非如此。

另外,我发现这两个函数给出了不同的 AUC 分数,因此表明它不是我想象的单调变换。

在文档中,它指出 transform(X) 投影数据以最大限度地分离类,但我希望 decision_function(X) 这样做。

我希望有人可以帮助我了解这两者之间的区别。

【问题讨论】:

    标签: scikit-learn


    【解决方案1】:

    LDA 将您的多元数据投影到一维空间中。投影基于所有属性(X 中的列)的线性组合。通过最大化类分离来确定每个属性的权重。随后,确定给出最佳分类结果的一维空间中的阈值。 transform(X) 为您提供此一维空间 x' = transform(X) 中每个观察值的值。 decision_function(X) 为您提供属性为正类 log(P(y=1|x')) 的对数似然。

    【讨论】:

    • 感谢您抽出宝贵时间回答问题。我剩下的唯一问题是,根据源代码,decision_function(X) 与到超平面的距离成正比,但如果transform(X) 描述了这个超平面,人们会期望这两个函数的 AUC 相同对吗?
    猜你喜欢
    • 2016-08-01
    • 2015-03-10
    • 2017-08-06
    • 2018-03-18
    • 2018-07-02
    • 2020-07-13
    • 2015-04-21
    • 2021-07-03
    • 1970-01-01
    相关资源
    最近更新 更多