提高二元分类模型的准确性

Posted

技术标签:

【中文标题】提高二元分类模型的准确性【英文标题】:Improving Accuracy for a Binary Classification Model [closed] 【发布时间】:2019-10-21 01:02:41 【问题描述】:

因此,作为一个更大项目的一部分,我正在研究一种基本的机器学习算法。对于本节,我试图教机器使用两组数据,一组较小的数据集只有一个特征,而较大的数据集使用六个特征。这两个都可以在下面看到。

“标志”是我试图预测的。标志 0 表示真实/正常数据,而标志 1 表示“异常”数据。那么,我的目标是允许预测“异常”数据输入。从照片中可以看出,用于这些目的的“异常”数据与之前的数据点相比发生了重大变化。问题是,计算机仅预测我插入数据的 450 个左右“假”数据中的大约 80 个。第二个问题是计算机对某些数据进行了错误分类,将某些真实数据称为假数据。

我现在一直在对小型数据集进行大部分测试,只是为了让一切正常工作。我正在使用 XGBoost 算法,n_estimators 等于 1000,学习率为 0.05。代码非常简单。

data = pd.read_csv('final_angles.csv')
data.dropna(axis=0, subset=['steering_angle'], inplace=True)
y = data.flag
X = data.drop(['flag', 'frame_id'], axis=1)
train_X, test_X, train_y, test_y = train_test_split(X.as_matrix(), y.as_matrix(), test_size=0.25, shuffle=False)

my_model = XGBRegressor(n_estimators=1000, learning_rate=0.05) 
my_model.fit(train_X, train_y, early_stopping_rounds=5, 
             eval_set=[(test_X, test_y)], verbose=False)

predictions = my_model.predict(test_X)

如果预测值超过 0.5,则任何事物都被视为“假”或“异常”。

例如,这是我制作的:

文件中有 457 段“假”数据。我们猜测有 108 个数据点是假的。其中只有 69 个实际上是假的。我们从 457 个中得到了 69 个(0.15098468271334792)。

我可以做些什么来改善结果吗?我可能考虑过改变算法,虽然我不知道它会有多大帮助。使用随机森林或其他东西是否有帮助,或者更多地调整参数?我愿意接受任何想法。

【问题讨论】:

我不会说改变算法可以做得更好。处理数据(特征工程)比选择算法/参数更有价值。 【参考方案1】:

我不会说更改算法/搜索超参数会显着提高分类性能。

在我看来,您应该处理您的数据

在您的数据中,机器看到的是行数据,但您说决定 flag 值的是 与前一个数据点相比的实质性变化

所以你应该考虑:

尝试使用适用于时间序列数据的算法 或尝试进行一些特征工程,以便在每一行/行机器能够查看更改是否实质性或与前一行/行相比没有

以下是一些有用的链接:

How to classify movement data (time series) in real time

Using time series data from a sensor for ML

How to train model to predict events 30 minutes prior, from multi-dimensionnal timeseries

【讨论】:

谢谢,我会调查的。您会推荐诸如时间序列特定算法之类的东西,还是更新我的算法以更好地处理此类数据?是的,我曾考虑尝试进行更多调整并进行特征工程,但问题在于,例如在短数据集中,我们只有一个“特征”。 刚刚编辑了答案【参考方案2】:

关于更改算法:

处理 ML 问题的一种常见方法是首先定义一个基线方法,您的解决方案应该优于该方法。 有时,使用不需要作为基线进行调整的简单方法(例如朴素贝叶斯)会有所帮助。

关于改善结果:

您如何为每组数据选择特征? 尽管我们可以调整算法以改变 n_estimators 和 learning_rate 值,但它的结果仍将取决于研究的特征工程阶段有多好。

参考: https://tech.olx.com/ranking-ads-with-machine-learning-ee03d7734bf4

【讨论】:

以上是关于提高二元分类模型的准确性的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 Python 中图像分类 keras 模型的准确性?

针对二元分类机器学习模型中的准确率(Precision)召回率(Recall)F值(F-Measure)的学习

DNN二元分类器的准确率没有增加

如何提高随机森林多类分类模型的准确率?

分类--准确率

TFJS 模型仅预测二元分类任务的相同值