的在一个500条的数据样本中,标签只有两类,使用随机森林去训练该数据集,发现当正类1的比例越高,随机森林的准确率越高,当正类和负类接近于50%的时候,准确率也在50%左右,这是什么原因?按我的理解是,随机森林训练后的模型是可以正确预测到正负类,因此准确率是准确预测为正类或负类的概率,而不是预测为正类的概率。
2个回答
首先我们来看准确率评价指标的定义:
$ACC=\frac{TP+TN}{TP+TN+FP+FN}$
所以准确率的确就是被分对的样本数除以所有的样本数,不管是正类还是负类,但你忽略了一个问题就是你的模型可能预测正类样本的效果会远远好于负类样本,这样便会导致你说的正类比例越高,效果越好。
验证这个问题其实也很简单,计算一下Precision和Recall,你的Precision应该会低于Recall。
当自变量和因变量不相关时,模型可能只是在学习因变量的分布
下面的代码可以得到90%以上的准确率,但是当样本比例为1:1时,准确率为50%。具体要看混淆矩阵
x = np.random.normal(size = (500,2))
y = [1]*400+[0]*100
reg = se.RandomForestClassifier()
reg.fit(x,y)
reg.score(np.random.normal(size = (100,2)),[1]*100)
SofaSofa数据科学社区DS面试题库 DS面经