machine-learning - 分类平衡目标 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
解决方案
推荐阅读
- php - 如何避免 laravel 中的缓存猛击?
- c++ - 将二叉树的节点插入链表(C++)
- docker - 通过 kubernetes nodeport 我无法访问应用程序
- javascript - 如何在 markdown-it 中的 C++ 代码中正确显示尖括号?
- mysql - 使用spring boot,hibernate和mysql批量插入无法正常工作
- iis - 将主机名绑定到 IIS 上的网站时出现问题
- python - 如何在 python 中绘制箱形图(一个图中的多个箱形图)
- java - 如何在流式查询(Java)中使用 JSON 数组作为 Kafka 记录?
- python - 从 Python 中的 CSV 创建的数组的平均值
- python - 如何通过帧 python 再现音频信号?