首页 > 解决方案 > 分类平衡目标 y [0,1] 但不平衡特征 x [many 0 , few 1s] ,最大化精度

问题描述

我有一个简单的数据集,其中包含平衡目标 y(0 或 1)和不平衡特征(很多 0,少数 1)

我的目标是获得高精度(不关心召回)

如果我只分配 y=1 if x=1 但是当我训练 DecisionTree、xgboost、randomforest 时,我可以获得 0.53 的高精度,它们都生成模型,只为任何特征值输出 1,即他们找不到那个简单的规则(y =1 if x=1) (使用这些算法我得到的精度仅为 0.38)。

我应该使用什么算法以及如何让一些 ML 算法学习该简单规则以最大化精度,并且不会退化为始终输出 1。

请注意,实际问题将涉及许多功能,因此需要强大的 ML 算法。

# sample synthetic data,  DecisionTree fails to find the simple rule
df=pd.DataFrame({'x':np.random.choice([0, 1], size=10000, p=[.99, .01])})
df['y']=np.random.randint(0,2,10000)
df.loc[df.x==1,'y']=1

#precision by using rule  y=1 if x==1 else y=0
df.query('x==1')['y'].mean() # = 1.0 

标签: machine-learningkerasxgboost

解决方案


推荐阅读