The model will score accounts on a scale of 1000 and classify accounts according to thresholds of high risk, medium risk, and low risk are equivalent to the probability that virtual account of the business/point of sale. The input data expected to use:
The model will analyze to determine which data is important, and then combine a number of machine learning algorithms to divide the interval, put a weight on each input data. Score of customer will be a weighted composite score from the input data points.
a. UNDERSAMPLE
Take sample 1 amount of data label 0, the set of users with label 0 are those who have generated vtp transactions in June. Specifically, the label distribution ratio of the data is as follows
With this method, the current Xgboost model has the best results in terms of indicators With the Oversample method, label 1 data is generated by running the model GAN, WGAN or SMOTE, but the results are not significantly improved, even WGAN and SMOTE are worse.
b. OVERSAMPLE
b.1. SMOTE (Synthetic Minority Oversampling Technique) - Recall is high but precision is very low
b.2. Generative Adversarial Networks
CGAN differs from GAN in that it requires an additional column of labels as input. This label is extracted from a clustering algorithm like Kmeans, .. but the data is in the same cluster, so the result is not much different from the GAN version.
Label 1 data is generated by running the GAN model, or WGAN. After adding more data (about 100000 records generated from WGAN) for the best running model, XGboost, the results were not significantly increased. Using GAN gives even worse results.
=> The generated data is not matched with the original label 1 data, causing the model to learn nothing more and possibly causing noise to the model. Confusion matrix of Xgboost when training with data generated from WGAN
The figure below shows the contribution of each feature compared to each feature that generates the score output of the model of a cheat money subscriber. The base value is the average score of all samples. The value of not using sms_banking and account_age contributes a lot in detecting fraudulent subscribers.
Account age (account_age) has the biggest impact on the model. After training with lightgbm with only this feature, the model got auc ~ 0.92. The distribution of value between the two labels of this feature is very different, most of the accounts that violate electricity bills are newly created accounts.
This website showcases my research interest, past and current work, and experiences.