-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfraud_eda.qmd
executable file
·251 lines (177 loc) · 8.07 KB
/
fraud_eda.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
---
title: "Fraudulent Transactions Prediction"
subtitle: "Solution Engineering - R"
author: "Felix Erlacher, Merve Taskaya, Tomasz Wlodarski"
embed-resources: true
date: today
date-format: long
format:
revealjs:
theme: dark
smaller: true
scrollable: true
center: false
cache: true
---
# Einleitung
```{r load_libraries, message=FALSE, warning=FALSE}
rm(list=ls())
library(tidyverse)
library(DataExplorer)
library(patchwork)
library(knitr)
#create cluster for do parallel
library(doParallel)
cl <- makeCluster(4)
registerDoParallel(cl)
```
## Zielsetzung des Projekts
- Ziel des Projekts ist es, ein Modell zur Vorhersage von betrügerischen Kontotransaktionen zu entwickeln.
<br>
- Um unser Hauptziel zu erreichen, müssen wir uns auf verschiedene qualitative und quantitative Ziele konzentrieren. <br>
## qualitative Ziele
Um unsere Hauptziel zu erreichen, sind folgende qualitative Ziele notwendig:
- Verbesserung der Effektivität der Betrugsprävention und -erkennung
- Steigerung der Kundenzufriedenheit und des Vertrauens in die Bank
- Verbesserung des Rufs der Bank durch proaktive Betrugsprävention
- Minimiurung von finanziellen Schaden und Verluste für Kunden und die Bank
## quantitative Ziele
Um unsere Hauptziel zu erreichen, sind folgende quantitative Ziele notwendig (gemessen an Testdaten):
- Hohe Genauigkeit (95%) bei der Klassifikation betrügerischer und nicht betrügerischer Transaktionen
- Bearbeitungszeit von Transaktionsdaten unter 0.5 Sekunden pro Transaktion
- Erreichung von mind. 80 Punkten bei der Benotung des Projektes
# Datengrundlage
## Datenquelle
- Die Daten stammen von Kaggle.<br>
- In den Daten sind insgesamt 6362620 Transaktionen vorhanden. Diese wurden in 30 Tagen simuliert. ^[‘Fraudulent Transactions Prediction’. https://www.kaggle.com/datasets/vardhansiramdasu/fraudulent-transactions-prediction (accessed May 14, 2023)]
## Features
Folgende Features sind in den Daten vorhanden: <br>
- *step* - maps a unit of time in the real world. In this case 1 step is 1 hour of time. Total steps 744 (30 days simulation).
- *type* - CASH-IN, CASH-OUT, DEBIT, PAYMENT and TRANSFER.
- *amount* - amount of the transaction in local currency.
- nameOrig - customer who started the transaction
- oldbalanceOrg - initial balance before the transaction
- newbalanceOrig - new balance after the transaction
- nameDest - customer who is the recipient of the transaction
- oldbalanceDest - initial balance recipient before the transaction. Note that there is not information for customers that start with M (Merchants).
- newbalanceDest - new balance recipient after the transaction. Note that there is not information for customers that start with M (Merchants).
- *isFraud* - This is the transactions made by the fraudulent agents inside the simulation. In this specific dataset the fraudulent behavior of the agents aims to profit by taking control or customers accounts and try to empty the funds by transferring to another account and then cashing out of the system.
- *isFlaggedFraud* - The business model aims to control massive transfers from one account to another and flags illegal attempts. An illegal attempt in this dataset is an attempt to transfer more than 200.000 in a single transaction.
::: aside
‘Fraudulent Transactions Prediction’. https://www.kaggle.com/datasets/vardhansiramdasu/fraudulent-transactions-prediction (accessed May 14, 2023)
:::
# Explorative Datenanalyse
## Überblick in Zahlen
```{r}
#| echo: true
#read csv data/Fraud.csv into tibble with readr::read_csv for better performance & tidyverse support
fraud <- readr::read_csv ("data/Fraud.csv", )
fraud %>% glimpse()
introduce(fraud) %>% t()
```
- insgesamt 6.362.620 Datensätze (Rows) mit 11 Features (Columns)
- 11 Features sind 3 diskrete Merkmale und 8 Merkmale kontinuierliche Daten
- keine Spalten und Zeilen mit fehlenden Werten
- eingenommener Speicherplatz für den Datensatz eingenommen ca. 1,14 GB
```{r}
#| echo: true
summary(fraud)
head(fraud)
tail(fraud)
```
## Überblick als Grafik
```{r}
plot_intro(fraud)
```
Die folgende Grafik veranschaulicht die zuvorgebrachte Statistik.
## Verteilung ausgewählter Features
```{r}
plot_bar(fraud)
```
- ersten Grafik: Darstellung von 5 Arten (types) von Transaktionen geordnet nach ihrer Anzahl
- zweiten Grafik: Darstellung von der Anzahl "isFraud"an Fraud (1) und nicht Fraud (0) -Transaktionen - wenige Transaktionen als Fraud markiert
- dritten Graifk: Darstellung von der Anzahl an Transaktion, die als verdächtig markiert wurde (1) oder nicht (0)
## Verteilung ausgewählter Features nach isFraud
```{r}
plot_bar(fraud, by = "isFraud")
```
- erste Grafik: Darstellung bei welchen 5 Transaktionsarten Transaktionen als "Fraud"/"Nicht-Fraud" markiert wurden
- zweite Grafik: Darstellung verdächtig/nicht verdächtig markierten Transaktionen als "Fraud"/"Nicht-Fraud" markiert wurden
## Verteilung ausgewählter Features nach type
```{r}
plot_bar(fraud, by = "type")
```
- erste Grafik: Darstellung bei welchen 5 Transaktionsarten Transaktionen als "Fraud"/"Nicht-Fraud" markiert wurden
- zweite Grafik: Darstellung bei welchen 5 Transaktionsarten Transaktionen als verdächtig/nicht verdächtig markierten wurden
## Verteilung ausgewählter Features in Zahlen
```{r}
#| echo: true
fraud %>% count(isFlaggedFraud, isFraud) %>% kable()
```
- Insgesamt 6.354.407 Transaktionen wurden nicht als verdächtig und als betrügerisch markiert
- 8.197 Transaktionen wurden nicht als verdächtig markiert wurden, aber als betrügerisch klassifiziert
- 16 Transaktionen wurden als verdächtig markiert und als betrügerisch klassifiziert
- 0 Transaktionen wurden nicht als verdächtig markiert aber als betrügerisch klassifiziert
## Korrelation
```{r}
plot_correlation(fraud)
```
- Wenig bis keine Korrelation von "isFraud" und "isFlaggedFraud" zu anderen Features.
- Erwartete Korrelationen sichtbar wie hohe positive Korrelation zwischen "newbalanceOrig" und dem Transaktionstyp "CASH IN" (wenn Geld eingezahlt wird ("CASH IN"), steigt der Kontostand "newbalanceOrig")
## Conslusio und weitere Schritte
- Conslusio: viele Transaktionen, wenig Auswahl an als Fraud klassifizierte Daten - keine Korrelation zu anderen Features
<p>
Weitere Schritte:<p/>
- Featureengineering <br/>
- Anwendung von Klassifikationsalgorithmus wie: <br/>
- K-Nearest Neighbors <br>
- Support Vector Machines <br>
- Decision Tree <br>
- Random Forrest <br>
# Projektorganisation
## Projektorganisation und -verantwortung
- Projektleiter: Tomasz Wlodarski <br>
- Koordination des Projektablaufs <br>
- Verantwortung für das Erreichen der Projektziele <br>
- Kommunikation mit dem Lektor<br>
- Verwaltung des Backlogs<br>
<p/>
- Projektmitglied 1: Felix Erlacher<br>
- Bearbeitung der Tasks im Backlog<br>
<p/>
- Projektmitglied 2: Merve Taskaya<br>
- Bearbeitung der Tasks im Backlog<br>
## Zusammenarbeit im Projekt
- Agile Projektumsetzung mittels Kanban Board
- Pull-Prinzip
- Verantwortung der Bearbeitung des Backlogs ist im Team
- Mind. 1x wöchentliches Stand-up
- Verwendung von Gitlab für Projektmanagementätigkeiten
- Verwendung von Github für Code-Sharing
# Projektplan
Link zu unserem Repository: <br>
https://git-inf.technikum-wien.at/soe-r/soe-2023-b/fraudulent-transaction-classification/fraud/-/milestones
## Backlog
Backlog: <p/>
- Verwaltung in Gitlab
- Erstellung vonInitial Backlog wurde mit "high-level" Tasks
- Tasks werden nach Analyse des "high-level" Tasks heruntergebrochen und erstellt
- Anpassung und Weiterentwicklung des Backlogs während der Projektlaufzeit <p/>
![Backlog](img/Backlog.png)
## Kanban Board
- Darstellung der Tasks im Kanban Board
- Aktualisierung während der Projektlaufzeit<p/>
![Board](img/Board.png)
## Meilensteinplan
- Erstellung von Meilensteinplan
- Verlinkung der Tasks zu den jeweiligen Meilensteinen
- Darstellung der Meilensteine in Gitlab <p/>
![Meilensteinplan](img/Meilensteine.png)
## Deliverables
- Dokumentation der Deliverarbles in den jeweiligen Meilensteinen <p/>
![Deliverables](img/Deliverables.png)
# Beantwortung von Fragen
```{r}
#stop cluster
#stopCluster(cl)
```