我的情况是:我能够使用random forest
来进行二元分类问题;请注意,给定一个特征向量,一个典型的random forest
模型可以预测它是属于1
组还是0
组,从而进行二元分类。
然而,由于多种原因,对于每个特征向量,我希望得到一个从0到1的分数,而不是0/1
标签。理想情况下,分数越高,我对该特征向量应归入1
组的信心就越大;否则,它应该属于0
组。
所以这仍然是一个0/1
分类,但这次,我希望得到一个从0到1的分数,而不是0
或1
的标签。
我被告知,一些统计分类方法,例如naive Bayes
,可以生成可能性分数,表示给定的特征向量是否应归入0
组或1
组。然而,我在我的数据集上使用naive Bayes
进行了快速的10折验证,并与random forest
进行了比较,其表现看起来非常差。
精确度 召回率 random forest 0.901 0.907naive Bayes 0.752 0.653
太差了…我想保持random forest
的高性能,同时获得一个score
..
我知道random forest
具有特殊的树状结构,作为机器学习的新手,我不知道如何操纵random forest
来生成分数。
所以我的问题是,如何操纵random forest
,给定一个特征向量样本,生成一个从0到1的分数,而不是0
或1
的标签?我表达得足够清楚了吗?谢谢你!
回答:
这是随机森林的一个常规功能。获取这个分数的最简单方法是:森林中的每一棵树都对0/1做出决策。计算这些决策的平均值。你现在将得到一个在[0,1]范围内的分数。
如果你的随机森林软件包不提供此功能,你应该寻找另一个提供此功能的实现(或者检查文档,你可能错过了)。
例如,在scikit-learn中,你可以调用predict_proba
方法来获取概率,而只调用predict
来获取决策。