This is a research project collaborated with Cardzone Sdn Bhd, which aims to investigate Data Mining and Machine Learning techniques and identifies potential solutions in detecting fraudulent transactions
As a result of the literature study and discussion, Naïve Bayesian, Decision Tree, Frequent Pattern-growth (FP-growth) and Classification using Frequent Patterns have been selected as Data Mining and Machine Learning algorithms for fraud detection.
The justification for selected algorithm also take into the account of the requirements by the company, such as:
- Decision Tree -- Able to provide fraud rules, which can be embedded into the rule engine
- Naïve Bayesian -- Able to provide probability, such as how probable is the transaction is a fraud
- FP-growth -- To mine frequent patterns out from the fraud dataset.
- Classification using Frequent Patterns -- From all of the fraud and non-fraud frequent patterns, generate Association Rules, which then use it as a rule classifier model to classify fraudulent transaction.
- Java -- Contains training and testing for all of the algorithms mentioned. Deployment of models also in this directory
- Python -- Contains Exploratory Data Analysis and Visualization for both benchmark and original dataset. A preprocessing script also available for the original dataset
- R -- Contains training and testing for all of the algorithms mentioned. R code is the primary code base for this research project
- creditcard.csv -- Taken from Kaggle as a benchmark dataset
- cz_authtxn.csv -- Original dataset that gotten from Cardzone Sdn Bhd
- preprocessed_dataset.csv -- Preprocessed dataset from the original dataset
- PyCharm - The IDE used
- Jupyter Notebook - For Data Visualization
- Python 3.6 with Sci-kit learn framework
- R programming language. Packages that used please see install_packages.R
- Java with Apache Spark framework and JRI (Java/R Interface)
IBM Watson was chosen as it allows building custom Machine Learning models from scratch and also provide APIs for calling the model to make on-demand online predictions. Once the model deployed as PMML on IBM watson, it will return a JSON result states its probability fraud value