降低FP率scikit-学习随机森林

时间:2015-06-29 15:36:18

标签: machine-learning scikit-learn random-forest

我正在使用scikit-learn随机森林分类器,我希望通过将成功投票所需的树木数量从大于50%增加到75%来降低FP率,在阅读文档后我不是确定如何做到这一点。有没有人有什么建议。 (我认为应该有办法做到这一点,因为根据文档,分类器的预测方法基于多数投票决定)。所有帮助表示感谢,谢谢!

1 个答案:

答案 0 :(得分:1)

假设您现在拥有一个分类器,在所有估算器中使用75%的协议。如果它得到一个新的样本,并且赔率为51%-49%,有利于一个班级,你希望它做什么?

使用50%规则的原因是因为您提出的决策规则可能会导致分类器所说的情况"我无法预测这些样本的标签"。

可以做什么,就是包装分类器的结果,并做你想做的任何计算 -

from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
import numpy as np

def my_decision_function(arr):
    diff = np.abs(arr[:,0]-arr[:,1])
    arr [ diff < 0.5 ] = [-1,-1] # if >0.5, one class has more than 0.75 prediction
    return arr


X, y = datasets.make_classification(n_samples=100000, n_features=20,
                                n_informative=2, n_redundant=2)
train_samples = 100  # Samples used for training the models

X_train = X[:train_samples]
X_test = X[train_samples:]
y_train = y[:train_samples]
y_test = y[train_samples:]

clf = RandomForestClassifier().fit(X_train,y_train)
print my_decision_function(clf.predict_proba(X_train))

现在,对于至少一个班级,每个小于0.75%的样本将具有[-1,-1]预测。如果你使用多标签分类,大多数调整都会进行,但我希望这个概念是明确的。