This project leverages Machine Learning to identify fraudulent transactions.
Este projeto uses Machine Learning para identificar transações fraudulentas.
The main focus is balancing fraud detection with a seamless customer experience.
O foco principal é equilibrar a detecção de fraude com uma boa experiência para o cliente.
The objective is to analyze transactions: amount, time, location and classify:
Objetivo é analisar as transações: valor, hora, local e classificar:
✅ Legitimate / Not Fraud | Legítimo
🚩 Fraudulent | Fraude
🚀 Insight: the strategic reduction of the dataset revealed that variable V14 is important for distinguishing the transaction type.
🚀 Insight: A redução estratégica do dataset que revelou que a variável V14 é importante para distinguir o tipo de transação.
This enabled a lightweight, fast model with high recall, without compromising precision.
Isso permitiu um modelo leve, rápido e com alto Recall, sem perda de precisão.
The source file was the creditcard.csv from Kaggle.
O arquivo base foi o creditcard.csv do Kaggle.
a. Collection: downloaded the original dataset creditcard.csv from kaggle.
Coleta: download do dataset original no Kaggle creditcard.csv.
b. Adjustment: I created a script to reduce the size of the original file, name = creditcard_reduzido10mil.csv.
Ajustamente: criei um scrippt para diminuir o tamanho do original, nome = creditcard_reduzido10mil.csv.
Note: with this i had the insight to analyze both the original dataset and this reduced one, i got different results.
*Observação: com isso tive o insight de fazer análise tanto no dataset original quanto neste reduzido e obtive resultados diferentes.
*
c. Preparation: defined X= features and y= target.
Preparação: definir x= caracteristicas e y= alvo
d. Cleaning: data preprocessing and normalization of the amount values.
Limpeza: tratamento de dados e normalização de valores
e. Division: separated 80% of the data for training and 20% for testing to evaluate model learning.
Divisão: separar 80% dos dados para treino e 20% para modelo testar e ver se aprendeu
f. Training: fit the models using the fit() method on the training data.
Treino: ajuste dos modelos utilizando o comando fit() para treinar o modelo
g. Predictions: executed predictions on the test data using the predict() method.
Previsões: execução de predições com base nos dados de teste, comando predict()
h. Metrics: generated the classification report with results for precision, recall, f1-score, accuracy, macro avg.
Métricas: relatório de classificação com os resultados de precision, recall, f1-score, acurácia, macro avg
i. Visualization: confusion matrix, feature importance, precision-recall curve, decision tree and boxplot.
Visualização: matriz de confusão, feature importance, curva precision-recall, árvore de decisão e boxplot
To achieve the ideal model i tested the behavior of the Random Forest algorithm across three scenarios = 3 dataset sizes:
Para chegar ao modelo ideal, testei o comportamento do algoritmo Random Forest em três cenários = 3 tamanhos de dataset:
-
Scenario 1 = original dataset: 284,807 records (only 0,17% fraud). The extreme imbalance masks reality through high accuracy.
Cenário 1 = dataset Original: 284.807 registros (apenas 0,17% são fraudes). O desbalanceamento extremo mascara a realidade através da acurácia. -
Scenario 2 = proportional reduction : 10,000 records, keeping the original proportion which resulted in only 17 cases of fraud. The model did not have enough data to learn the pattern.
Cenário 2 = redução proporcional : 10.000 registros, mantendo a proporção original que eram apenas 17 casos de fraudes. O modelo não teve dados suficientes para aprender o padrão -
Scenario 3 = strategic reduction, Data Sampling : 10,000 records, but keeping all 492 original fraud cases . I used Random Undersampling, reducing the data by 96% while retaining all 492 fraud cases, proportion rose to 4,92%.
*Cenário 3 = redução estratégica Data Sampling : 10.000 registros, mas mantendo todos os 492 casos originais de fraude. O usei Random Undersampling, reduzi os dados em 96%, mantendo todos os 492 casos de fraude, proporção subiu para 4,92%.
| Scenario | Cenário | Description | Descrição | Result | Resultado |
|---|---|---|
| 1. Original | 1. Original | 284,807 records (0.17% fraud) | 284.807 registros (0,17% fraude) | Misleading accuracy; V17 appeared to be the most important feature. | Acurácia enganosa; V17 parecia mais importante. |
| 2. Proportional | 2. Proporcional | 10,000 records (17 frauds) | 10.000 registros (17 fraudes) | Insufficient data for the model to learn. | Dados insuficientes para o aprendizado. |
| 3. Strategic | 3. Estratégico | 10,000 records (492 frauds) | 10.000 registros (492 fraudes) | V14 revealed as a critical indicator. Ideal balance achieved. | V14 revelada como indicador crítico. Equilíbrio ideal. |
3rd Scenario this was the only approach that allowed the model to identify V14 as a critical feature for transaction classification, achieving the ideal balance between Precision and Recall measured by the Macro Avg.
3º cenário foi o único que permitiu ao modelo identificar a V14 como variável de importância para identificar o tipo de transação e alcançando o equilíbrio ideal entre Recall e Precision detectada através da Macro Avg. The other scenarios identified V17 as the most important feature.
Os outros cenários identificaram a V17 como variável de importância.
Supervised Classification Model | Modelo de Classificação.
I performed a comparative test betweem 2 algorithms Random Forest e Logistic Regression.
Realizei um teste comparativo entre os 2 algoritmos Random Forest e Logistic Regression.
The Random Forest model achieved the best performance.
O modelo Random Forest teve o melhor desempenho.
-
Random Forest: A model based on decision trees. This model shows which features were the most important when deciding whether a transaction was fraud or not.
*Random Forest: Modelo baseado em árvores de decisão. Este modelo mostra quais variáveis foram mais importantes para decidir se a transaçao é fraude ou não. * -
Logistic Regression: Linear model based on mathematical formulas and weights.
Logistic Regression: Modelo linear baseado em fórmulas matemáticas.
-
Precision=99% out of all the times the model predicted "fraud", it was right.
Precisão=99% de todas as vezes que o modelo disse é "Fraude", ele acertou.- Therefore the model is reliable in avoiding false positive which means blocking a case that is not fraud (honest customer).
Portanto o modelo é confiável para evitar o Falso Positivo que é bloquear um caso que não e fraude (cliente honesto).
- Therefore the model is reliable in avoiding false positive which means blocking a case that is not fraud (honest customer).
-
Recall=81% out of all the fraud cases that actually happened the model managed to cath 81%.
Revocação=81%* de todas as fraudes que realmente aconteceram o modelo conseguiu pegar 81%.*- Therefore the model is conservative it lets some frauds slip through but does not interrupt the honest customer.
Portanto o modelo é conservador, deixa passar algumas fraude mas não interrompe o cliente honesto. - Note: the challenge is to balance recall with precision to avoid blocking non freaud cases honest customer.
Observação: o desafio é equilibrar o Recall com a Precision para não bloquear casos de não fraude, cliente honesto.
- Therefore the model is conservative it lets some frauds slip through but does not interrupt the honest customer.
-
F1-Score=89% it is the harmonic mean between Precision and Recall. Since both were high, the F1 shows that the model is well-balanced. Therefore, looking at Macro AVG, will be decisive.
F1-Score=89% é a média harmônica entre a Precisão e o Recall. Como os dois estão altos, o F1 mostra que o modelo é equilibrado. Então olhar para o Macro AVG, será decisivo. -
Macro Avg=99% it is high, which means the model successfully learned and proved its effectiveness.
Macro Avg=99% ele está alto, significa que aprendeu e prova que o modelo é um sucesso. -
Accuracy=99% it is high and here lies the biggest danger of the model. It reached almost 100% accuracy, but on its own, it tells us nothing.
*Acurácia=99% alta e aqui está o maior perigo do modelo, tem 100% de acurácia, mas ela sozinha não diz nada. *
- Confusion Matrix-heatmap| mostra os acertos e erros
*Matriz de Confusão: mostra os acertos e erros Ela divide os resultados em quatro quadrantes:
** - ✅ Verdadeiro Positivo : = SUCESSO - Era fraude e o modelo acertou - Canto inferior direito.
** - ✅ Verdadeiro Negativo : = SUCESSO - Era compra normal e o modelo liberou - Canto superior esquerdo.
** - ❌ Falso Positivo : = ERRO - Era compra normal, mas o modelo bloqueou - Canto superior direito.
** - ❌ Falso Negativo : = ERRO - Era fraude, mas o modelo deixou passar - Canto inferior esquerdo.
**
- Feature Importance/Graphics: it displays variables in order of importance. In this project the variable V14 is at the top, meaning it is the most important variable for fraud detection.
*Importância das Variáveis/Gráfico: mostra as variáveis por ordem de importância. Neste projeto a variável V14 está no topo, significando que ela é a variável mais importante para detectarmos uma fraude. - Curva Precision-Recall: este gráfico mostra a estabilidade; se a linha cair muito rápido, o modelo é instável para casos raros.
**- Visualização de uma Árvore: O Random Forest cria várias árvores. Analisei a primeira/index 0 para entender a lógica e as perguntas que o modelo faz tipo "O valor da compra é > X?" Se sim, vá para a esquerda...".
**
- Visualização de uma Árvore: O Random Forest cria várias árvores. Analisei a primeira/index 0 para entender a lógica e as perguntas que o modelo faz tipo "O valor da compra é > X?" Se sim, vá para a esquerda...".
- BoxPlot: Para visualização da variável importante..
**
O modelo é um sucesso.
Tem um aprendizado equilibrado garantindo uma confiabilidade de 99% definido pela métrica Macro Avg.
Insight : ele identificou a V14 como outra variável importante para distinguir o tipo de transação.
No 3º arquivo consegui um resultado técnico muito próximo ao do arquivo completo que era muito grande processando apenas 10 mil registros.
- Cuidado, nem sempre a Acurácia de 100% define se o modelo e bom ou ruim, temos que também olhar para as outras métricas : precision, recall e macro avg.
**

