改进神经网络以区分红色和蓝色的方法?

数据挖掘 机器学习 Python 神经网络 深度学习 张量流
2022-03-11 07:33:47

我有很多数据,我试图将红色数据与蓝色数据区分开来,但所有特征基本上都是这样的(参见 imgur)。

https://i.stack.imgur.com/zsYVc.png

它们重叠很多,我只能得到 0.65 的 roc auc 分数。

到目前为止,在数据处理方面,我只使用类权重来平衡它。我尝试了不同类型的密集/辍学网络,具有不同的功能,但只有 0.65 是我能得到的最好的,大多数徘徊在 0.63-0.65 左右,无论我添加多少层或时代。

例如一个简单的 DNN/dropout 产生 0.65:""" Dense(512, activation='relu'), Dropout(0.3), Dense(512, activation='relu'), Dropout(0.3), Dense(512, activation ='relu'), Dropout(0.3), Dense(512, activation='relu'), Dropout(0.3), Dense(512, activation='relu'), Dense(1, activation="sigmoid") "" "

我在网上找到的一些resnet修改也只提供了0.65。

所以到目前为止,我只尝试了 CNN 和密集层网络。

我可以做些什么来获得更好的 AUC 分数?

1个回答

我认为关于改进特征工程和分享更多关于您的问题陈述的其他评论是正确的。

在思考这类问题时,我只想补充一个有用的提示,那就是您作为专家如何手动对这些点进行分类。如果您无法手动分离这两个类(您所展示的分布会让我们相信),那么几乎任何 ML 模型都会遇到同样的问题。

在不了解更多信息的情况下,我会说这可能与贝叶斯错误率的概念有关(通过更好的建模无法进一步减少的内在错误量)。如果你掷一枚公平的硬币,有时你会得到正面,有时你会得到反面。没有更好的功能可以帮助您决定如何将该动作(抛硬币)映射到一个值(正面/反面),因为过程本身是随机的,所以总会存在一些内在错误。

如果您有兴趣:https ://en.wikipedia.org/wiki/Bayes_error_rate