gpt4 book ai didi

apache-spark - 了解 Spark RandomForest 特征重要性结果

转载 作者:行者123 更新时间:2023-12-03 09:24:03 25 4
gpt4 key购买 nike

我正在使用 RandomForest.featureImportances但我不明白输出结果。

我有 12 个功能,这是我得到的输出。

我知道这可能不是 apache-spark 特定的问题,但我找不到任何解释输出的地方。

// org.apache.spark.mllib.linalg.Vector = (12,[0,1,2,3,4,5,6,7,8,9,10,11],
[0.1956128039688559,0.06863606797951556,0.11302128590305296,0.091986700351889,0.03430651625283274,0.05975817050022879,0.06929766152519388,0.052654922125615934,0.06437052114945474,0.1601713590349946,0.0324327322375338,0.057751258970832206])

最佳答案

给定一个树集成模型,RandomForest.featureImportances计算每个特征的重要性。

根据 Leo Breiman 和 Adele Cutler 的“随机森林”文档中对 Gini 重要性的解释,并遵循 scikit-learn 的实现,这将“基尼”重要性的想法推广到其他损失。

对于树的集合,包括 boosting 和 bagging,Hastie 等人。建议使用整体中所有树的单棵树重要性的平均值。

这个特征的重要性计算如下:

  • 树上的平均值:
  • 重要性(特征 j) = 增益的总和(在特征 j 上 split 的节点上),其中增益由通过节点的实例数量缩放
  • 将树的重要性归一化为 1。
  • 将特征重要性向量归一化为总和为 1。

  • 引用文献: Hastie, Tibshirani, Friedman. "The Elements of Statistical Learning, 2nd Edition." 2001. - 15.3.2 变量重要性第 593 页。

    让我们回到你的重要性向量:

    val importanceVector = Vectors.sparse(12,Array(0,1,2,3,4,5,6,7,8,9,10,11), Array(0.1956128039688559,0.06863606797951556,0.11302128590305296,0.091986700351889,0.03430651625283274,0.05975817050022879,0.06929766152519388,0.052654922125615934,0.06437052114945474,0.1601713590349946,0.0324327322375338,0.057751258970832206))

    首先,让我们按重要性对这些特征进行排序:

    importanceVector.toArray.zipWithIndex
    .map(_.swap)
    .sortBy(-_._2)
    .foreach(x => println(x._1 + " -> " + x._2))
    // 0 -> 0.1956128039688559
    // 9 -> 0.1601713590349946
    // 2 -> 0.11302128590305296
    // 3 -> 0.091986700351889
    // 6 -> 0.06929766152519388
    // 1 -> 0.06863606797951556
    // 8 -> 0.06437052114945474
    // 5 -> 0.05975817050022879
    // 11 -> 0.057751258970832206
    // 7 -> 0.052654922125615934
    // 4 -> 0.03430651625283274
    // 10 -> 0.0324327322375338

    那么这是什么意思 ?

    这意味着您的第一个特征(索引 0)是最重要的特征,权重约为 0.19,而您的第 11 个(索引 10)特征在您的模型中最不重要。

    关于apache-spark - 了解 Spark RandomForest 特征重要性结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878519/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com