This version is not peer-reviewed.
Submitted:
13 December 2023
Posted:
13 December 2023
You are already at the latest version
A peer-reviewed article of this preprint also exists.
Training Sample of SMOTE Dataset | ||||||
LR | KNN | RF | Bagging | Boosting | PM | |
Accuracy | 0.94443 | 0.999354 | 1 | 0.9993 | 1 | 0.99983 |
Testing Sample of SMOTE Dataset | ||||||
Accuracy | 0.944256 | 0.999173 | 0.99989 | 0.999 | 0.999092 | 0.9996 |
LR | KNN | RF | Bagging | Boosting | PM | |
Precision | 0.945938 | 0.999174 | 0.999891 | 0.999 | 0.999092 | 0.999601 |
Recall | 0.944256 | 0.999173 | 0.99989 | 0.999 | 0.999092 | 0.9996 |
F1-score | 0.944204 | 0.999173 | 0.99989 | 0.999 | 0.999092 | 0.9996 |
. | [17] | [28] |
PM (SMOTE) |
P_M_1 | P_M_2 |
Accuracy | 99.9455 | 83.83 | 99.9591 | 93.684 | 94.737 |
Precision | 99.947 | 94.5 | 99.9591 | 93.996 | 94.916 |
Recall | 99.9455 | 86.47 | 99.9591 | 93.684 | 94.737 |
F1-Score | 99.9462 | 90.31 | 99.9591 | 93.673 | 94.731 |
Year | Authors |
Ensemble ML Models |
Under-Sampling | SMOTE | Comprehensive Evaluation |
2019 | Naik Kanikar [25] | ✓ | ✓ | × | ✓ |
2019 | Jain Tiwari et al. [24] | ✓ | ✓ | × | ✓ |
2019 | Saputra Suharjito [23] | ✓ | × | ✓ | ✓ |
2019 | Raghavan Gayar [22] | ✓ | × | ✓ | × |
2019 | Sadgali Benabbou [21] | ✓ | × | ✓ | × |
2020 | Sailusha Gnaneswar et al. [20] | ✓ | × | ✓ | × |
2021 | Tanouz Subramanian et al. [19] | ✓ | ✓ | × | ✓ |
2022 | Qaddoura, Biltawi [18] | ✓ | ✓ | ✓ | ✓ |
2022 | Sahithi Roshmi et al. [17] | ✓ | ✓ | × | ✓ |
2023 | Prasad Chowdary et al. [16] | ✓ | ✓ | × | ✓ |
2023 | Our Proposed Model | ✓ | ✓ | ✓ | ✓ |
Algorithm | Credit Card Fraud Detection using Ensemble Machine Learning Models |
Input: | Credit_Card_Fraud_Dataset |
Output: | Trained_Machine_Learning_Models |
1. | dataset ← Load_CreditCard_Fraud_Dataset() |
2. | processed_data ← PreprocessedData(dataset) |
3. | labels ← (processed_data) |
4. | under_sampled_data ← (labels) |
5. | smote_data ← (labels) |
6. 7. 8. 9. 10. 11. |
for model_type in [‘SVM’, ‘RF’, ‘Bagging’, ‘Boosting’, ‘LR’, ‘P_M_1’, ‘P_M_2’]: training_data, testing_data ← TrainTestSplit(under_sampled_data) if model_type == model: model ← model_type elif model_type == ‘Proposed_model’ models.append(mode_type) |
12. 13. 14. 15. |
for model_type, model in models: testing_data_features ← tresting_data.drop(‘Class’) testing_data_labels ← testing_data[‘Class’] confusion_matrix ← Evaluate_model(model, testing_data_features, testing_data_labels) |
16. | endif |
17. | end for |
18. | return display_results ← (confusion_matrix, model_type) |
SVM | KNN | RF | Bagging | Boosting | P_M_1 | LR | P_M_2 | |
True Positive | 345 | 345 | 378 | 344 | 378 | 354 | 349 | 358 |
True Negative | 372 | 372 | 378 | 371 | 378 | 378 | 371 | 378 |
False Positive | 33 | 33 | 0 | 34 | 0 | 24 | 29 | 20 |
False Negative | 6 | 6 | 0 | 7 | 0 | 0 | 7 | 0 |
SVM | KNN | RF | Bagging | Boosting | P_M_1 | LR | P_M_2 | |
True Positive | 87 | 86 | 86 | 87 | 86 | 85 | 87 | 87 |
True Negative | 92 | 92 | 93 | 93 | 92 | 93 | 90 | 93 |
False Positive | 8 | 9 | 9 | 8 | 9 | 10 | 8 | 8 |
False Negative | 3 | 3 | 2 | 2 | 3 | 2 | 5 | 2 |
Training Sample of Under-Sample Dataset | ||||||||
SVM | KNN | RF | Bagging | Boosting | P_M_1 | LR | P_M_2 | |
Accuracy | 0.96 | 0.951 | 1 | 0.95 | 1 | 0.97 | 0.955 | 0.97 |
Testing Sample of Under-Sample Dataset | ||||||||
Accuracy | 0.9421 | 0.9368 | 0.937 | 0.9473 | 0.9368 | 0.9368 | 0.9315 | 0.9473 |
SVM | KNN | RF | Bagging | Boosting | P_M_1 | LR | P_M_2 | |
Precision | 0.961 | 0.955 | 1 | 0.953 | 1 | 0.971 | 0.957 | 0.971 |
Recall | 0.96 | 0.951 | 1 | 0.95 | 1 | 0.97 | 0.955 | 0.97 |
F1-score | 0.96 | 0.951 | 1 | 0.95 | 1 | 0.97 | 0.955 | 0.97 |
SVM | KNN | RF | Bagging | Boosting | P_M_1 | LR | PM2 | |
Precision | 0.942 | 0.945 | 0.939 | 0.939 | 0.945 | 0.945 | 0.948 | 0.949 |
Recall | 0.942 | 0.942 | 0.937 | 0.937 | 0.942 | 0.942 | 0.947 | 0.947 |
F1-score | 0.942 | 0.942 | 0.937 | 0.937 | 0.942 | 0.942 | 0.947 | 0.947 |
LR | KNN | RF | Bagging | Boosting | P_M | |
True Positive | 201231 | 220152 | 220152 | 220152 | 220152 | 220152 |
True Negative | 214606 | 219868 | 220152 | 219864 | 220152 | 220082 |
False Positive | 18921 | 0 | 0 | 0 | 0 | 0 |
False Negative | 5546 | 284 | 0 | 288 | 0 | 70 |
LR | KNN | RF | Bagging | Boosting | P_M | |
True Positive | 50280 | 55038 | 55038 | 55038 | 55038 | 55038 |
True Negative | 53660 | 54947 | 55028 | 54941 | 55028 | 54993 |
False Positive | 4758 | 0 | 0 | 0 | 0 | 0 |
False Negative | 1378 | 91 | 10 | 97 | 10 | 45 |
Prediction Results on Training Sample of SMOTE Dataset | ||||||
LR | KNN | RF | Bagging | Boosting | PM | |
Precision | 0.94607 | 0.999355 | 1 | 0.9993 | 1 | 0.99983 |
Recall | 0.94443 | 0.99954 | 1 | 0.9993 | 1 | 0.999831 |
F1-score | 0.94438 | 0.99954 | 1 | 0.9993 | 1 | 0.999831 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
Altmetrics
Downloads
310
Views
81
Comments
0
Subscription
Notify me about updates to this article or when a peer-reviewed version is published.
© 2025 MDPI (Basel, Switzerland) unless otherwise stated