在建模阶段处理我的ml项目时,我想首先尝试所有可能的模型,然后选择最好的模型并对该模型进行微调。最后,我想我会得到最好的数据库模型,但在此过程中,我发现了一个有趣的结果。
对于多模型训练阶段,为了节省时间,我想使用大约3500行,在我的整个70692中,这只是大约4.9%的数据。当训练最终完成时,这是我得到的所有模型的结果:
=================================== Accuracy ===================================
name accuracy
3 Support Vector Machines 0.752571
0 Logistic Regression 0.751429
9 Bagging Classifier 0.746857
1 Random Forest 0.742857
2 LightGBM 0.742857
6 Bernoulli Naive Bayes 0.726857
4 XGBoost 0.724571
5 Gaussian Naive Bayes 0.721143
7 KNN 0.674857
8 Decision Tree 0.661143
================================== Precision ===================================
name precision
0 Logistic Regression 0.761427
9 Bagging Classifier 0.747583
3 Support Vector Machines 0.745568
6 Bernoulli Naive Bayes 0.743151
1 Random Forest 0.743041
2 LightGBM 0.739451
5 Gaussian Naive Bayes 0.737986
4 XGBoost 0.728355
7 KNN 0.69409
8 Decision Tree 0.677714
============================== True Positive Rate ==============================
name true_positive_rate
3 Support Vector Machines 0.790929
2 LightGBM 0.775442
9 Bagging Classifier 0.769912
1 Random Forest 0.767699
0 Logistic Regression 0.755531
4 XGBoost 0.744469
6 Bernoulli Naive Bayes 0.720133
5 Gaussian Naive Bayes 0.713496
7 KNN 0.662611
8 Decision Tree 0.655973
================================= Specificity ==================================
name specificity
3 Support Vector Machines 0.790929
2 LightGBM 0.775442
9 Bagging Classifier 0.769912
1 Random Forest 0.767699
0 Logistic Regression 0.755531
4 XGBoost 0.744469
6 Bernoulli Naive Bayes 0.720133
5 Gaussian Naive Bayes 0.713496
7 KNN 0.662611
8 Decision Tree 0.655973
=================================== F1 Score ===================================
name score
3 Support Vector Machines 0.767579
9 Bagging Classifier 0.758583
0 Logistic Regression 0.758468
2 LightGBM 0.757019
1 Random Forest 0.755169
4 XGBoost 0.736324
6 Bernoulli Naive Bayes 0.731461
5 Gaussian Naive Bayes 0.725534
7 KNN 0.677985
8 Decision Tree 0.666667
现在,我不知道该使用什么模型,所以我决定尝试7000行几乎翻倍。起初,我教的结果将保持不变,只有准确性会增加,但你瞧,顺序发生了变化,这是我的结果与7000行:
=================================== Accuracy ===================================
name accuracy
9 Bagging Classifier 0.736571
2 LightGBM 0.735429
3 Support Vector Machines 0.734
0 Logistic Regression 0.732857
1 Random Forest 0.730571
4 XGBoost 0.721714
6 Bernoulli Naive Bayes 0.72
5 Gaussian Naive Bayes 0.711429
7 KNN 0.674
8 Decision Tree 0.625429
================================== Precision ===================================
name precision
0 Logistic Regression 0.727174
6 Bernoulli Naive Bayes 0.726908
5 Gaussian Naive Bayes 0.725281
9 Bagging Classifier 0.719153
1 Random Forest 0.717895
3 Support Vector Machines 0.716049
2 LightGBM 0.714576
4 XGBoost 0.712533
7 KNN 0.674612
8 Decision Tree 0.63009
============================== True Positive Rate ==============================
name true_positive_rate
2 LightGBM 0.794466
9 Bagging Classifier 0.786561
3 Support Vector Machines 0.785997
1 Random Forest 0.770186
0 Logistic Regression 0.755505
4 XGBoost 0.754376
6 Bernoulli Naive Bayes 0.715415
5 Gaussian Naive Bayes 0.6917
7 KNN 0.687182
8 Decision Tree 0.629023
================================= Specificity ==================================
name specificity
2 LightGBM 0.794466
9 Bagging Classifier 0.786561
3 Support Vector Machines 0.785997
1 Random Forest 0.770186
0 Logistic Regression 0.755505
4 XGBoost 0.754376
6 Bernoulli Naive Bayes 0.715415
5 Gaussian Naive Bayes 0.6917
7 KNN 0.687182
8 Decision Tree 0.629023
=================================== F1 Score ===================================
name score
2 LightGBM 0.752406
9 Bagging Classifier 0.751348
3 Support Vector Machines 0.749394
1 Random Forest 0.743122
0 Logistic Regression 0.741069
4 XGBoost 0.732858
6 Bernoulli Naive Bayes 0.721116
5 Gaussian Naive Bayes 0.708092
7 KNN 0.680839
8 Decision Tree 0.629556
顺序发生了变化,这令人惊讶,所以我的问题是,更多的训练数据是否会改变模型与其他模型的相对准确性?或者在我自己的理解中,为什么会发生上述模型排名的变化?
我还有一个问题是。有没有一种方法可以把所有这些数据都画出来,从而更容易找到一个全面的最佳模型?现在我把所有这些数据放在3个不同的panda Dataframe中进行绘图,我只是不知道该做什么/制作哪个绘图,甚至不知道如何制作绘图。
否则,就这样了,提前谢谢你。:)
请注意,当我说3500和7000时,我的意思是我使用的行总数,其中包括培训和测试。我将整体分成75%和25%的部分,其中75%用于培训,25%用于测试
数据的变化会导致模型相对于其他模型的准确性吗?
。有时候是,有时候不是
yes的可能性
- 如果数据变化很大,那么在模型性能指标顺序中改组的可能性更高,除非添加的数据没有随机性。
- 增加更多的数据意味着增加更多的异常值,包括具有更多随机独立值的样本,增加出现在第3和第4个标准差中的样本数量,以及数据分布的变化。
- 在此场景中,您已经将100%的数据添加到先前的数据中(3500是3500的100%),让我们假设它有100个异常值,并且还像您提到的那样将数据集加倍。并且模型还执行了额外的100%的数据。
前50%的数据可能适合支持向量机,逻辑回归,由于数据随机性的增加和数据分布变化的更高机会,数据可能最适合Bagging Classifier, LightGBM。
不的可能性
- 如果数据变化很小,则模型性能指标顺序变换的可能性较低,除非添加的数据有很大的随机性。
- 添加更少的数据意味着添加更少的异常值(100的5%(如上所述)是5),向现有数据添加更少的未知特征值。
- 如果您在之前的数据(3500个样本175个)中添加了5%的数据,可能包含(5个异常值)。并且只对5%的数据执行额外的模型。
- 前95%的数据可能适合支持向量机,逻辑回归,后5%可能适合任何其他模型,但平均而言,由于95%的数据最适合SVM, LR有更多的机会100%的数据也适合SVM和LR。
注意同样在你的情况下,在前50%的SVM, LR, BC和LightGBM的准确性没有太大差异,因此通过添加另外50%的数据,在排行榜上洗牌的机会更多。