Final Project: Credit Card Fraud Detection
Due on June 5, 22:00pm
It is important that credit card companies are able to recognize fraudulent credit card transactions so that customers are not charged for items that they did not purchase.
The credit_train.csv dataset contains transactions made by credit cards in September 2013 by European cardholders. This dataset presents transactions that occurred in two days, where we have 369 frauds out of 213606 transactions. The dataset is highly imbalanced, the positive class (frauds)
account for a small proportion of all transactions.
It contains only numerical input variables which are the result of a PCA transformation. Unfortunately, due to confidentiality issues, we cannot provide the original features and more background information about the data. Features V1, V2, . . . V28 are the principal components obtained with PCA. Feature ‘Time’ contains the seconds elapsed between each transaction and the first transaction in the dataset. The feature ‘Amount’ is the transaction Amount. However, we have standardized the data. Feature ‘Class’ is the response variable and it takes one in case of fraud and zero otherwise.
Given the class imbalance ratio, we recommend measuring the accuracy using the Area Under the Precision-Recall Curve (AUPRC) first. Confusion matrix accuracy is not meaningful for unbalanced classification.
Another metric for accuracy is from business practice.
• Suppose the cost of False Negative is 145.61 pounds, which include average cost of fraud refund + long investigation;
• the cost of False Positive is 2.6 pounds for short investigations.
We therefore end up at the costs seen below:
• cost(FN) = false_negative_cost
• cost(FP) = false_positive_cost
We want to minimize overall costs to the business, i.e. minimize the following function:
Cost = count(FP) · cost(FP) + count(FN) · cost(FN)
You can use any algorithms written in R. I suggest caret package