Kredi Kartı Dolandırıcılık Tespiti Projesi – Makine Öğrenimi Projesi

Yayınlanan: 2021-05-24

Kredi kartı sahtekarlığı tespit projemize hoş geldiniz. Bugün, kredi kartı işlemlerinden oluşan bir veri kümesindeki sahtekarlığı tespit etmek için Python ve makine öğrenimini kullanacağız. Her adımın kodunu paylaşmış olsak da, her adımın nasıl çalıştığını anlamak ve sonra uygulamak en iyisi olacaktır.

Hadi başlayalım!

İçindekiler

Adımlarla Kredi Kartı Dolandırıcılık Tespiti Projesi

Kredi kartı sahtekarlığı tespit projemizde, mevcut en popüler programlama dillerinden biri olan Python'u kullanacağız. Çözümümüz, birinin sistemimizin güvenlik duvarlarını aştığını ve yasal olmayan bir işlem yapıp yapmadığını tespit eder.

Veri setinde kredi kartı işlemleri bulunmaktadır ve özellikleri PCA analizinin sonucudur. 'Miktar', 'Zaman' ve 'Sınıf' özelliklerine sahiptir; burada 'Tutar' her işlemin parasal değerini, 'Zaman' ilk ve ilgili işlem arasında geçen saniyeleri gösterir ve 'Sınıf' bir işlemin olup olmadığını gösterir. yasaldır ya da değildir.

'Sınıf'ta, 1 değeri bir dolandırıcılık işlemini, 0 değeri ise geçerli bir işlemi temsil eder.

Veri setine ve kaynak kodunun tamamına buradan ulaşabilirsiniz .

Adım 1: Paketleri İçe Aktarın

Gerekli paketleri kurarak kredi kartı dolandırıcılık tespit projemize başlayacağız. Bir 'main.py' dosyası oluşturun ve şu paketleri içe aktarın:

numpy'yi np olarak içe aktar

pandaları pd olarak içe aktar

sklearn'i içe aktar

scipy.stats ithalat normundan

scipy.stats'tan multivariate_normal'i içe aktarın

sklearn.preprocessing'den MinMaxScaler'ı içe aktarın

matplotlib.pyplot'u plt olarak içe aktar

seaborn'u sns olarak içe aktar

2. Adım: Hataları Arayın

Veri setini kullanmadan önce, içindeki hataları ve eksik değerleri aramalıyız. Eksik değerlerin varlığı, modelinizin hatalı sonuçlar vermesine neden olarak verimsiz ve etkisiz hale getirebilir. Bu nedenle, veri kümesini okuyacağız ve eksik değerleri arayacağız:

df = pd.read_csv('creditcardfraud/creditcard.csv')

# kayıp değerler

print(“eksik değerler:”, df.isnull().values.any())

Bu veri setinde hiçbir eksik değer bulamadık, bu yüzden bir sonraki adıma geçebiliriz.

Kariyerinizi hızlandırmak için Dünyanın en iyi Üniversiteleri - Yüksek Lisanslar, Yönetici Yüksek Lisans Programları ve Makine Öğrenimi ve Yapay Zeka alanında İleri Düzey Sertifika Programından çevrimiçi Yapay Zeka Kursuna katılın .

3. Adım: Görselleştirme

Kredi kartı dolandırıcılık tespit projemizin bu adımında verilerimizi görselleştireceğiz. Görselleştirme, verilerimizin neyi gösterdiğini anlamamıza yardımcı olur ve gözden kaçırmış olabileceğimiz kalıpları ortaya çıkarır. Veri setimizin bir grafiğini oluşturalım:

# arsa normal ve dolandırıcılık

count_classes = pd.value_counts(df['Class'], sort=Doğru)

count_classes.plot(tür='bar', rot=0)

plt.title(“Dağıtılmış İşlemler”)

plt.xticks(aralık(2), ['Normal', 'Dolandırıcılık'])

plt.xlabel(“Sınıf”)

plt.ylabel(“Sıklık”)

plt.göster()

Arsamızda, verilerin oldukça dengesiz olduğunu bulduk. Bu, aşırı uyumla sonuçlanacağı için denetimli öğrenme algoritmalarını kullanamayacağımız anlamına gelir. Ayrıca, problemimizi çözmek için en iyi yöntemin ne olacağını henüz bulamadık, bu yüzden daha fazla görselleştirme yapacağız. Isı haritasını çizmek için aşağıdakileri kullanın:

# sıcaklık haritası

sns.heatmap(df.corr(), vmin=-1)

plt.göster()

Şimdi, verilerimizin nereden geldiğini anlamamıza yardımcı olacak veri dağılım grafikleri oluşturacağız:

fig, axs = plt.subplots(6, 5, sıkma=Yanlış)

i için, numaralandırmada balta(axs.flatten()):

ax.set_facecolor('xkcd:kömür')

ax.set_title(df.columns[i])

sns.distplot(df.iloc[:, i], ax=ax, uygun=norm,

color=”#DC143C”, fit_kws={“renk”: “#4e8ef5”})

ax.set_xlabel(”)

fig.tight_layout(h_pad=-1.5, w_pad=-1.5)

plt.göster()

Veri dağılım grafikleriyle, 'Zaman' dışında hemen hemen her özelliğin Gauss dağılımından geldiğini bulduk.

Dolandırıcılığı tespit etmek için çok değişkenli Gauss dağılımını kullanacağız. Sadece 'Zaman' özelliği bimodal dağılımdan geldiğinden (ve gauss dağılımına dikkat edin), onu atacağız. Ayrıca, görselleştirmemiz, 'Zaman' özelliğinin diğerleri gibi aşırı değerlere sahip olmadığını ortaya çıkardı, bu da onu atmamızın bir başka nedeni.

Tartıştığımız özellikleri bırakmak ve diğerlerini ölçeklendirmek için aşağıdaki kodu ekleyin:

sınıflar = df['Sınıf']

df.drop(['Zaman', 'Sınıf', 'Miktar'], axis=1, inplace=Doğru)

sütunlar = df.columns.difference(['Sınıf'])

MMscaller = MinMaxScaler()

df = MMscaller.fit_transform(df)

df = pd.DataFrame(veri=df, sütunlar=sütunlar)

df = pd.concat([df, sınıflar], eksen=1)

Adım 4: Veri Kümesini Bölme

Bir 'functions.py' dosyası oluşturun. Burada, algoritmamızın farklı aşamalarını uygulamak için işlevler ekleyeceğiz. Ancak, bu fonksiyonları eklemeden önce, veri setimizi doğrulama seti ve test seti olmak üzere iki sete ayıralım.

pandaları pd olarak içe aktar

numpy'yi np olarak içe aktar

def train_validation_splits(df):

# Dolandırıcılık İşlemleri

dolandırıcılık = df[df['Sınıf'] == 1]

# Normal İşlemler

normal = df[df['Sınıf'] == 0]

print('normal:', normal.shape[0])

print('dolandırıcılık:', dolandırıcılık.şekil[0])

normal_test_start = int(normal.shape[0] * .2)

fake_test_start = int(fraud.shape[0] * .5)

normal_train_start = normal_test_start * 2

val_normal = normal[:normal_test_start]

val_fraud = dolandırıcılık[:fraud_test_start]

validation_set = pd.concat([val_normal, val_fraud], axis=0)

test_normal = normal[normal_test_start:normal_train_start]

test_fraud = dolandırıcılık[fraud_test_start:fraud.shape[0]]

test_set = pd.concat([test_normal, test_fraud], axis=0)

Xval = validation_set.iloc[:, :-1]

Yval = validation_set.iloc[:, -1]

Xtest = test_set.iloc[:, :-1]

Ytest = test_set.iloc[:, -1]

train_set = normal[normal_train_start:normal.shape[0]]

Xtrain = train_set.iloc[:, :-1]

dönüş Xtrain.to_numpy(), Xtest.to_numpy(), Xval.to_numpy(), Ytest.to_numpy(), Yval.to_numpy()

Adım 5: Ortalama ve Kovaryans Matrisini Hesaplayın

Aşağıdaki fonksiyon, ortalama ve kovaryans matrisini hesaplamamıza yardımcı olacaktır:

def tahmin_gaussian_params(X):

“””

Her özellik için ortalamayı ve kovaryansı hesaplar.

Argümanlar:

X: veri kümesi

“””

mu = np.ortalama(X, eksen=0)

sigma = np.cov(XT)

dönüş mu, sigma

6. Adım: Son Dokunuşları Ekleyin

'main.py' dosyamızda, her küme için önceki adımda uyguladığımız işlevleri içe aktarıp çağıracağız:

(Xtrain, Xtest, Xval, Ytest, Yval) = train_validation_splits(df)

(mu, sigma) = tahmin_gaussian_params(Xtrain)

# gauss pdf hesaplamak

p = multivariate_normal.pdf(Xtrain, mu, sigma)

pval = multivariate_normal.pdf(Xval, mu, sigma)

ptest = multivariate_normal.pdf(Xtest, mu, sigma)

Şimdi epsilon'a (veya eşiğe) başvurmamız gerekiyor. Genellikle, eşiği pdf'nin minimum değeriyle başlatmak ve her epsilon değerini bir vektörde kaydederken maksimum pdf'ye ulaşana kadar her adımda artırmak en iyisidir.

Gerekli vektörümüzü oluşturduktan sonra bir 'for' döngüsü yaparız ve aynısını yineleriz. Eşiği, her yinelemede tahminlerimizi oluşturan pdf değerleriyle karşılaştırırız.

F1 skorunu da temel doğruluk değerlerimize ve tahminlere göre hesaplıyoruz. Bulunan F1 puanı öncekinden daha yüksekse, bir 'en iyi eşik' değişkenini geçersiz kılarız.

Kredi kartı sahtekarlığı tespit projemizde 'doğruluğu' bir metrik olarak kullanamayacağımızı unutmayın. Bunun nedeni, tüm işlemleri normal olarak %99 doğrulukla yansıtması ve algoritmamızı işe yaramaz hale getirmesidir.

Yukarıda tartıştığımız tüm işlemleri 'functions.py' dosyamızda uygulayacağız:

def metrikleri(y, tahminler):

fp = np.sum(np.all([tahminler == 1, y == 0], eksen=0))

tp = np.sum(np.all([tahminler == 1, y == 1], eksen=0))

fn = np.sum(np.all([tahminler == 0, y == 1], eksen=0))

kesinlik = (tp / (tp + fp)) if (tp + fp) > 0 başka 0

hatırlama = (tp / (tp + fn)) if (tp + fn) > 0 başka 0

F1 = (2 * kesinlik * geri çağırma) / (kesinlik +

hatırlama) if (kesinlik + geri çağırma) > 0 başka 0

dönüş hassasiyeti, geri çağırma, F1

def selectThreshold(yval, pval):

e_değerler = pval

en iyiF1 = 0

en iyiEpsilon = 0

e_values ​​içindeki epsilon için:

tahminler = pval < epsilon

(kesinlik, hatırlama, F1) = metrikler(yval, tahminler)

F1 > bestF1 ise:

en iyiF1 = F1

bestEpsilon = epsilon

dönüş bestEpsilon, bestF1

Sonunda, 'main.py' dosyasındaki işlevleri içe aktaracağız ve F1 puanını ve eşiği döndürmek için onları çağıracağız. Modelimizi test setinde değerlendirmemize izin verecek:

(epsilon, F1) = selectThreshold(Yval, pval)

print(“En iyi epsilon bulundu:”, epsilon)

print(“Çapraz doğrulama setinde en iyi F1:”, F1)

(test_precision, test_recall, test_F1) = metrikler(Ytest, ptest < epsilon)

print(“Aykırı değerler bulundu:”, np.sum(ptest < epsilon))

print(“Test seti Hassasiyeti:”, test_precision)

print(“Test seti Geri Çağırma:”, test_recall)

print(“Test seti F1 puanı:”, test_F1)

İşte tüm bu çabanın sonuçları:

Bulunan en iyi epsilon: 5e-324

Çapraz doğrulama setinde en iyi F1: 0.7852998065764023

Bulunan aykırı değerler: 210

Test seti Hassasiyet: 0.9095238095238095

Test seti Geri Çağırma: 0.776427642276422

Test seti F1 puanı: 0.837719298245614

Çözüm

İşte karşınızda – tamamen işlevsel bir kredi kartı dolandırıcılık tespit projesi!

Bu projeyle ilgili herhangi bir sorunuz veya öneriniz varsa, aşağıya bir yorum bırakarak bize bildirin. Sizden haber almak isteriz.

Öğrenilen tüm becerilerle, becerilerinizi test etmek ve daha fazla uygulamalı olmak için diğer rekabetçi platformlarda da aktif olabilirsiniz. Kurs hakkında daha fazla bilgi edinmek istiyorsanız, Makine Öğrenimi ve Yapay Zeka'daki Yönetici PG Programı sayfasına göz atın ve daha fazla bilgi için kariyer danışmanımızla görüşün.

Kredi kartı dolandırıcılık tespit projesinin amacı nedir?

Bu projenin amacı, işlem tutarı, konum ve işlemle ilgili diğer verilere dayanarak bir kredi kartı işleminin hileli olup olmadığını tahmin etmektir. İşlem verilerindeki anormallikleri tespit ederek yapılan kredi kartı işlem verilerinin takibini amaçlar. Kredi kartı sahtekarlığı tespiti, tipik olarak, işlem verilerindeki herhangi bir anormalliği tespit eden ve kart sahibini (ihtiyati tedbir olarak) ve bankayı herhangi bir şüpheli işlem hakkında bilgilendiren bir algoritma kullanılarak uygulanır.

Kredi kartı sahtekarlığı tespiti, kredi kartı sahtekarlıklarını tespit etmeye ve durdurmaya nasıl yardımcı olur?

Bir kredi kartı şirketi, kredi kartı sahtekarlığını tespit etmek ve durdurmak için, kartlarıyla alışveriş yapan tüketiciler hakkında satıcılardan aldığı verileri analiz eder. Kredi kartı şirketi, satın alma işleminin ve tüketicinin tutarlı olup olmadığını belirlemek için satın alma işleminden elde edilen verileri tüketici hakkında önceden depolanmış verilerle otomatik olarak karşılaştırır. Bir bilgisayar, tüketicinin verilerini analiz eder ve bunları satın almadaki verilerle karşılaştırır. Bilgisayar ayrıca, tüketicinin satın alma geçmişi ile mevcut satın alma arasındaki herhangi bir farkı algılamaya çalışır. Bilgisayar daha sonra satın alma için bir risk analizi yapar ve şirketin satın alımın gerçekleşmesine izin verip vermeyeceğini belirler.

Kredi kartı dolandırıcılık tespitinde hangi makine öğrenimi algoritması kullanılıyor?

Kredi kartı dolandırıcılık tespitinde kullanılan birkaç makine öğrenme algoritması vardır. En yaygın algoritmalardan biri SVM veya destek vektör makineleridir. DVM, bilgisayar bilimlerinde pek çok uygulamaya sahip uyarlanabilir bir sınıflandırma ve regresyon algoritmasıdır. Yeni bir veri kümesini önceden tanımlanmış bir dizi kategoriye (sınıflar da denir) tahmin etmek ve sınıflandırmak için Kredi kartı dolandırıcılık tespitinde kullanılır. SVM, yeni verilerin tarafımızca tanımlanmış bir kategoriye ait olup olmadığını tahmin etmek için kredi kartı dolandırıcılık tespitinde kullanılabilir.