【问题标题】:What machine learning algorithm to train to use feature weights as output for a decision tree?训练什么机器学习算法来使用特征权重作为决策树的输出?
【发布时间】:2017-03-16 06:48:00
【问题描述】:

我有一个纯分类数据集,类别权重非常不平衡 (1:99)。

我想训练一个模型,该模型将为每个特征和所述特征的值计算它对预测的重要性。所以本质上是生成一个类似字典的对象:

vocabulary = {
'user=12345': 0,
'user=67890': 1,
'age=30': 2,
'age=40': 3,
'geo=UK': 4,
'geo=DE': 5,
'geo=US': 6,
'geo=BR': 7}

然后给它一个重要性权重:

weights = [.1, .2, .15, .25, .1, .1, .2, .2]

我应该使用什么基于 python 的机器学习库,以及库中允许我提取上述输出的算法的哪些建议。

我试过了; tensorflow 线性回归器,scikit 学习线性回归器和 graphlab 增强树。增强树似乎最有希望,但如果可能的话,我想使用开源库。

提前非常感谢大家!

更新:

GradientBoostingClassifier 产生 0.999137901985 分数,因为不平衡类。

【问题讨论】:

    标签: python machine-learning scikit-learn gradient-descent


    【解决方案1】:

    sklearn.ensemble.RandomForestClassifiersklearn.ensemble.GradientBoostingClassifier 在不了解您的潜在问题的情况下会生成特征重要性,并且应该很容易用于大多数用途。下面是一个关于 Iris 样本数据的简单示例:

    In [79]: from sklearn.datasets import load_iris
    
    In [80]: from sklearn.ensemble import GradientBoostingClassifier
    
    In [81]: gbm.fit(load_iris()["data"], load_iris()["target"])
    Out[81]:
    GradientBoostingClassifier(init=None, learning_rate=0.1, loss='deviance',
                  max_depth=3, max_features=None, max_leaf_nodes=None,
                  min_samples_leaf=1, min_samples_split=2,
                  min_weight_fraction_leaf=0.0, n_estimators=100,
                  presort='auto', random_state=None, subsample=1.0, verbose=0,
                  warm_start=False)
    
    In [82]: zip(load_iris()["feature_names"], gbm.feature_importances_)
    Out[82]:
    [('sepal length (cm)', 0.072135639528234),
     ('sepal width (cm)', 0.10858443031280439),
     ('petal length (cm)', 0.31074531613629014),
     ('petal width (cm)', 0.43520128068933822)]
    

    【讨论】:

    • 谢谢,正如@Randy C 问题中提到的那样,我已经尝试过这种方法 - 由于类标签的严重不平衡,我的模型预测为 99.99999%。有什么建议可以解决这个问题吗?我还提取了特征重要性,但如何将它们映射到我的特征名称?
    • 您提到了graphlab的GBM和sklearn的线性模型,但这是sklearn的GBM,根据您在问题中的要求,它是开源的。
    • 对于不平衡,您可能只需要设置不同的分数截止值,而不是默认的 50%。如果您的模型排序良好,ROC AUC 之类的东西会给您一个指示,然后您可以根据您对误报与误报的接受程度来选择评分阈值。
    • 特征名称部分显示在最后一行:只是zip 特征名称列表,按照它们传递给模型的顺序以及模型的特征重要性。
    • 嘿@Randy C 感谢您的帮助!我设法将数组压缩在一起。但是我不确定如何设置不同的分数截止?
    猜你喜欢
    • 2016-05-24
    • 2015-12-11
    • 1970-01-01
    • 2017-07-11
    • 2013-04-21
    • 2011-05-06
    • 2021-05-31
    • 2014-12-27
    • 2018-07-07
    相关资源
    最近更新 更多