spark mllib源码分析之随机森林(Random Forest)(五)

本文深入分析了Spark MLlib中随机森林的实现,包括构造随机森林的过程、TreeEnsembleModel和RandomForestModel的细节。重点讨论了模型的保存与加载机制,并指出在特征处理和模型应用中的注意事项,如特征ID的转换、离散特征的处理和maxBins的设定。通过对源码的解读,有助于读者更好地理解和应用随机森林算法。
摘要由CSDN通过智能技术生成

spark源码分析之随机森林(Random Forest)(一)
spark源码分析之随机森林(Random Forest)(二)
spark源码分析之随机森林(Random Forest)(三)
spark源码分析之随机森林(Random Forest)(四)

7. 构造随机森林

在上面的训练过程可以看到,从根节点topNode中不断向下分裂一直到触发截止条件就构造了一棵树所有的node,因此构造整个森林也是非常简单

//构造
val trees = topNodes.map(topNode => new DecisionTreeModel(topNode, strategy.algo))
//返回rf模型
new RandomForestModel(strategy.algo, trees)

8. 随机森林模型

8.1. TreeEnsembleModel

随机森林RandomForestModel继承自树集合模型TreeEnsembleModel

class TreeEnsembleModel(
    protected val algo: Algo,
    protected val trees: Array[DecisionTreeModel],
    protected val treeWeights: Array[Double],
    protected val combiningStrategy: EnsembleCombiningStrategy)
  • algo:Regression/Classification
  • trees:树数组
  • treeWeights:每棵树的权重,在RF中每棵树的权重是相同的,在Adaboost可能是不同的
  • combiningStrategy:树合并时的策略,Sum/Average/Vote,分类的话应该是Vote,RF应该是Average,GBDT应该是Sum。
  • sumWeights:成员变量,不在参数表中,是treeWeights的sum

预测函数

/**
   * Predicts for a single data point using the weighted sum of ensemble predictions.
   *
   * @param features array representing a single data point
   * @return predicted category from the trained model
   */
  private def predictBySumming(features: Vector): Double &#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值