精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

利用生成對抗性網(wǎng)絡(luò)進(jìn)行欺詐檢測

譯文 精選
開發(fā)
本文使用生成對抗性網(wǎng)絡(luò)(GANs)作為數(shù)據(jù)增強工具,試圖解決與不平衡數(shù)據(jù)集相關(guān)的欺詐檢測這個經(jīng)典問題。

譯者 | 朱先忠

審校 | 重樓

“生成對抗性網(wǎng)絡(luò)”(GANs)在生成與過去的真實數(shù)據(jù)無法區(qū)分的真實合成數(shù)據(jù)方面表現(xiàn)出了卓越的性能。不幸的是,GANs因為其缺乏職業(yè)道德的的應(yīng)用程序deepfakes而引起了公眾的注意。

本文實例將使用GANs作為數(shù)據(jù)增強工具,試圖解決與不平衡數(shù)據(jù)集相關(guān)的欺詐檢測這一經(jīng)典問題。更具體地說,GANs可以生成少數(shù)欺詐類的真實合成數(shù)據(jù),并將不平衡的數(shù)據(jù)集完美平衡地轉(zhuǎn)換。

簡介

原則上,欺詐檢測是二元分類算法的一種應(yīng)用:對每筆交易進(jìn)行分類,無論是否是欺詐類型的交易。其實,欺詐類型的交易往往只占交易領(lǐng)域的一小部分。一般來說,欺詐交易屬于少數(shù)類別;因此,數(shù)據(jù)集高度不平衡。欺詐交易越少,交易系統(tǒng)就越健全。這一點是非常簡單直觀

一個矛盾的問題是這種健全的條件很可能是過去欺詐偵查具挑戰(zhàn)性的主要原因之一。這僅僅是因為分類算法很難學(xué)習(xí)少數(shù)類別欺詐的概率分布。

一般來說,數(shù)據(jù)集越平衡,分類預(yù)測器的性能就越好。換句話說,數(shù)據(jù)集越不平衡(或越不平衡),分類器的性能就越差。

這描繪了欺詐檢測的經(jīng)典問題:具有高度不平衡數(shù)據(jù)集的二分類應(yīng)用程序。

在這種情況下,我們可以使用生成對抗性網(wǎng)絡(luò)(GANs)作為數(shù)據(jù)增強工具來生成少數(shù)欺詐類的真實合成數(shù)據(jù),以便平衡地轉(zhuǎn)換整個數(shù)據(jù)集,從而提高欺詐檢測分類器模型的性能。

本文將分為以下幾個部分展開探討:

  • 第1節(jié):算法概述(GANs的雙層優(yōu)化體系結(jié)構(gòu)
  • 2節(jié):欺詐數(shù)據(jù)集
  • 3節(jié):用于數(shù)據(jù)增強的GANs的Python代碼解析
  • 4節(jié):欺詐檢測概述(基準(zhǔn)場景與GANs場景)
  • 5節(jié):結(jié)論

總的來說,我將主要介紹GANs的相關(guān)主題(包括算法和代碼)。對于GANs之外的模型開發(fā)的其他方面的內(nèi)容,如數(shù)據(jù)預(yù)處理和分類器算法,我將只概述其過程,而不討論其細(xì)節(jié)。在這種情況下,本文假設(shè)讀者對二進(jìn)制分類器算法(特別是我為欺詐檢測選擇的集成分類器)有基本的了解,并對數(shù)據(jù)清理和預(yù)處理有大致的了解。

有關(guān)詳細(xì)代碼,歡迎讀者訪問以下鏈接:

https://github.com/deeporigami/Portfolio/blob/6538fcaad1bf58c5f63d6320ca477fa867edb1df/GAN_FraudDetection_Medium_2.ipynb

第1節(jié):算法概述(GANs的雙層優(yōu)化體系架構(gòu))

GANs是一種特殊類型的生成算法由兩個神經(jīng)網(wǎng)絡(luò)組成:生成網(wǎng)絡(luò)(生成器)和對抗性網(wǎng)絡(luò)(鑒別器)。其中生成器試圖生成真實的合成數(shù)據(jù),鑒別器將合成數(shù)據(jù)與真實數(shù)據(jù)區(qū)分開來。

最初的GANs是在一篇標(biāo)題為《生成對抗性網(wǎng)絡(luò)》的開創(chuàng)性的論文Goodfellow等人共同發(fā)表,Generative Adversarial Nets,2014年出版,原文地址:https://arxiv.org/abs/1406.2661)中引入的。最初的GANs的合著者用造假者-警察的類比來描述GANs:一迭代游戲,生成器充當(dāng)造假者,鑒別器扮演警察的角色來檢測生成器偽造的贗品。

最初的GANs在某種意義上是具有創(chuàng)新的,它解決并克服了過去訓(xùn)練深度生成算法的傳統(tǒng)困難。作為其核心,它被設(shè)計為具有均衡尋求目標(biāo)設(shè)置(相對于最大似然導(dǎo)向目標(biāo)設(shè)置)的雙層優(yōu)化架構(gòu)

從那以后,人們對GANs的許多變體架構(gòu)進(jìn)行了探索。本文僅參考原始GANs的原型架構(gòu)。

生成器和鑒別器

再強調(diào)一下,在GANs的架構(gòu)中,兩個神經(jīng)網(wǎng)絡(luò)——生成器和鑒別器——相互競爭。在這種情況下,競爭是通過前向傳播和后向傳播的迭代進(jìn)行的(根據(jù)神經(jīng)網(wǎng)絡(luò)的一般框架原理)。

一方面,鑒別器是一個設(shè)計上的二元分類器:它對每個樣本是真實的(標(biāo)簽:1)還是假的/合成的(標(biāo)簽為0)進(jìn)行分類。在前向傳播期間向鑒別器饋送真實樣本和合成樣本在反向傳播過程中,它學(xué)習(xí)從混合數(shù)據(jù)饋送中檢測合成數(shù)據(jù)。

另一方面,生成器被設(shè)計為一個噪聲分布。在正向傳播期間向生成器提供真實樣本。然后,在反向傳播過程中,生成器學(xué)習(xí)真實數(shù)據(jù)的概率分布,以便更好地模擬其合成樣本。

然后通過“雙層優(yōu)化”框架對這兩個代理進(jìn)行交替訓(xùn)練。

雙層訓(xùn)練機制(雙層優(yōu)化方法)

在最初的GAN論文中,為了訓(xùn)練這兩個追求完全相反目標(biāo)的代理,合著者設(shè)計了一個“雙層優(yōu)化(訓(xùn)練)”架構(gòu),其中一個內(nèi)部訓(xùn)練塊(鑒別器的訓(xùn)練)嵌套在另一個高級訓(xùn)練塊(生成器的訓(xùn)練)中。

下圖說明了嵌套訓(xùn)練循環(huán)中的“雙層優(yōu)化”結(jié)構(gòu)。鑒別器在嵌套的內(nèi)部循環(huán)中訓(xùn)練,而生成器在更高級別的主循環(huán)中訓(xùn)練。

GANs在這種雙層訓(xùn)練架構(gòu)中交替訓(xùn)練這兩個代理(Goodfellow等人2014年合著論文《生成對抗性神經(jīng)網(wǎng)絡(luò)(Generative Adversarial Nets)》的第3頁)。換言之,在交替過程中訓(xùn)練一個代理時,我們需要凍結(jié)另一個代理的學(xué)習(xí)過程(Goodfellow I.2015年發(fā)表論文第3頁的結(jié)論)。

Mini-Max優(yōu)化目標(biāo)

除了能夠交替訓(xùn)練這兩個代理的“雙層優(yōu)化”機制之外,GANs與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)原型的另一個獨特之處是其最小-最大優(yōu)化目標(biāo)。簡單地說,與傳統(tǒng)的最大搜索方法(如最大似然)相比,GANs追求均衡搜索優(yōu)化目標(biāo)。

那么,什么是求平衡的優(yōu)化目標(biāo)呢?

讓我們把這個問題分解開來作解釋。

GANs的兩個代理有兩個截然相反的目標(biāo)。雖然鑒別器作為一種二元分類器,旨在最大限度地提高對真實樣本和合成樣本的混合物進(jìn)行正確分類的概率,但生成器的目標(biāo)是最大限度地降低鑒別器正確分類合成數(shù)據(jù)的概率:因為生成器需要欺騙鑒別器。

在這種情況下,最初GANs的合著者將總體目標(biāo)稱為“最小最大游戲”。(Goodfellow等人2014年合著論文的第3頁)

總體而言,GANs的最終最小-最大優(yōu)化目標(biāo)不是搜索這些目標(biāo)函數(shù)中的任何一個的全局最大值/最小值。相反,它被設(shè)置為尋求一個平衡點,該平衡點可以被解釋為:

  • “鞍點是分類器的局部最大值和生成器的局部最小值”(Goodfellow I.,2015,第2頁)
  • 其中兩個代理都不能再提高它們的性能。
  • 其中生成器學(xué)會創(chuàng)建的合成數(shù)據(jù)已經(jīng)變得足夠現(xiàn)實,足以欺騙鑒別器。

平衡點在概念上可以用隨機猜測的概率0.5(50%)來表示,對于鑒別器:D(z)=>0.5。

讓我們根據(jù)GANs的目標(biāo)函數(shù)來轉(zhuǎn)錄GANs的極大極小優(yōu)化的概念框架。

鑒別器的目標(biāo)是使下圖中的目標(biāo)函數(shù)最大化:

為了解決潛在的飽和問題,他們將生成器的原始對數(shù)似然目標(biāo)函數(shù)的第二項轉(zhuǎn)換如下,并建議將轉(zhuǎn)換后的版本最大化為生成器的目標(biāo):

總體而言,GANs的“雙層優(yōu)化”架構(gòu)可以轉(zhuǎn)化為以下算法

有關(guān)GANs算法設(shè)計的更多細(xì)節(jié),請閱讀我的另一篇文章:生成對抗網(wǎng)絡(luò)的Mini-Max優(yōu)化設(shè)計(Mini-Max Optimization Design of Generative Adversarial Nets):https://towardsdatascience.com/mini-max-optimization-design-of-generative-adversarial-networks-gan-dc1b9ea44a02》

現(xiàn)在,讓我們開始使用數(shù)據(jù)集進(jìn)行實際的編程分析

為了強調(diào)GANs算法,我將在本文主要關(guān)注GANs的實現(xiàn)代碼,只概述一下其余的過程。

第2節(jié):欺詐數(shù)據(jù)集

為了進(jìn)行欺詐檢測,我從Kaggle網(wǎng)站選擇了以下信用卡交易數(shù)據(jù)集:https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud

數(shù)據(jù)許可證:Database Contents License(DbCL)v1.0

以下是數(shù)據(jù)集的簡要說明

該數(shù)據(jù)集包含284807筆交易。在數(shù)據(jù)集中,我們只有492起欺詐交易(包括29起重復(fù)案件)。

由于欺詐類僅占所有交易的0.172%,因此這一部分?jǐn)?shù)據(jù)形成了一個極少數(shù)的類別。該數(shù)據(jù)集適用于說明與不平衡數(shù)據(jù)集相關(guān)的欺詐檢測的經(jīng)典問題。

該數(shù)據(jù)集具有以下30個特征

  • V1,V2,…V2828個主成分通過PCA獲得。出于保護(hù)隱私的目的,未披露數(shù)據(jù)來源。
  • “Time”:每個事務(wù)與數(shù)據(jù)集的第一個事務(wù)之間經(jīng)過的秒數(shù)。
  • “Amount”:交易的金額。
  • “Class”:標(biāo)簽設(shè)置為“Class”。欺詐情況下為1;否則為0。

數(shù)據(jù)預(yù)處理:特征選擇

由于數(shù)據(jù)集已經(jīng)被清理得很干凈,如果不是很完美的話,我只需要做幾件事來清理數(shù)據(jù):消除重復(fù)數(shù)據(jù)和去除異常值。

此后,在數(shù)據(jù)集中給定30個特征的情況下,我決定運行特征選擇,通過在訓(xùn)練過程之前消除不太重要的特征來減少特征的數(shù)量。我選擇了scikit-learn開源庫中的隨機森林分類器內(nèi)置的特征重要性分?jǐn)?shù)來估計所有30個特征的分?jǐn)?shù)。

下圖顯示了實驗結(jié)果的摘要信息。如果您對詳細(xì)的流程感興趣的話,請參閱我上面列出地址處的代碼。

根據(jù)上面條形圖中顯示的結(jié)果,我做出了主觀判斷,選擇了前6個特征進(jìn)行分析,并從模型構(gòu)建過程中刪除了所有剩余的不重要特征。

以下是選定的前6個重要特征。

為了今后的模型構(gòu)建目的,我重點介紹了這6個選定的特征。在數(shù)據(jù)預(yù)處理之后,我們得到了如下形狀的工作數(shù)據(jù)幀df:

  • df.shape=(282513,7)現(xiàn)在,我們希望特征選擇能降低最終模型的復(fù)雜性并穩(wěn)定其性能,同時保留優(yōu)化二元分類器的關(guān)鍵信息。

第3節(jié):用于數(shù)據(jù)增強的GANs的Python代碼解析

現(xiàn)在是我們使用GANs進(jìn)行數(shù)據(jù)增強的時候了。

那么,我們需要創(chuàng)建多少合成數(shù)據(jù)呢?

首先,我們對數(shù)據(jù)增強的興趣僅限于模型訓(xùn)練。由于測試數(shù)據(jù)集中沒有提供樣本數(shù)據(jù)所以,我們希望保留測試數(shù)據(jù)集的原始形式。其次,因為我們的目的是完美地轉(zhuǎn)換不平衡的數(shù)據(jù)集所以我們不想增加占大多數(shù)的非欺詐性質(zhì)的案例。

言之,我們只想增加少數(shù)欺詐類的訓(xùn)練數(shù)據(jù)集,而不想增加其他數(shù)據(jù)集。

現(xiàn)在,讓我們使用分層數(shù)據(jù)拆分方法,將工作數(shù)據(jù)幀按80/20的比例拆分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。

#分離特征和目標(biāo)變量
X = df.drop('Class', axis=1)
y = df['Class']
#將數(shù)據(jù)拆分為訓(xùn)練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
#組合訓(xùn)練數(shù)據(jù)集的特征和標(biāo)簽 
train_df = pd.concat([X_train, y_train], axis=1)

因此,訓(xùn)練數(shù)據(jù)集的形狀如下:

  • train_df.shape=(226010,7)

讓我們看看訓(xùn)練數(shù)據(jù)集的組成(欺詐案例和非欺詐案例)。

# 加載數(shù)據(jù)集(欺詐和非欺詐數(shù)據(jù))
fraud_data = train_df[train_df['Class'] == 1].drop('Class', axis=1).values
non_fraud_data = train_df[train_df['Class'] == 0].drop('Class', axis=1).values

# 計算要生成的合成欺詐樣本的數(shù)量
num_real_fraud = len(fraud_data)
num_synthetic_samples = len(non_fraud_data) - num_real_fraud
print("# of non-fraud: ", len(non_fraud_data))
print("# of Real Fraud:", num_real_fraud)
print("# of Synthetic Fraud required:", num_synthetic_samples)

# of non-fraud:  225632
# of Real Fraud: 378
# of Synthetic Fraud required: 225254

上面的輸出告訴我們,訓(xùn)練數(shù)據(jù)集(226010)由225632個非欺詐數(shù)據(jù)和378個欺詐數(shù)據(jù)組成。換句話說,它們之間的差值是225254。這個數(shù)字是我們需要增加的合成欺詐數(shù)據(jù)(num_synthetic_samples)的數(shù)量,以便與訓(xùn)練數(shù)據(jù)集中這兩個類的數(shù)量完全匹配。注意,我們確實保留了原始測試數(shù)據(jù)集。

接下來,讓我們對GANs進(jìn)行編碼。

首先,讓我們創(chuàng)建幾個自定義函數(shù)來確定兩個代理:鑒別器和生成器。

對于生成器,我創(chuàng)建了一個噪聲分布函數(shù)build_generator(),它需要兩個參數(shù):

latent_dim(噪聲的維度)作為其輸入的形狀,以及其輸出的形狀output_dim——對應(yīng)于特征的數(shù)量。

#定義生成器網(wǎng)絡(luò)
def build_generator(latent_dim, output_dim):
    model = Sequential()
    model.add(Dense(64, input_shape=(latent_dim,)))
    model.add(Dense(128, activation='sigmoid'))
    model.add(Dense(output_dim, activation='sigmoid'))
    return model

對于鑒別器,我創(chuàng)建了一個自定義函數(shù)build_descriminator(),它接受一個input_dim參數(shù),對應(yīng)于特性的數(shù)量。

#定義鑒別器網(wǎng)絡(luò)
def build_discriminator(input_dim):
    model = Sequential()
    model.add(Input(input_dim))
    model.add(Dense(128, activation='sigmoid'))
    model.add(Dense(1, activation='sigmoid'))
    return model

然后,我們可以調(diào)用這些函數(shù)來創(chuàng)建生成器和鑒別器。在這里,對于生成器,我隨便將latent_dim設(shè)置為32:如果您愿意,當(dāng)然也可以使用其它的值。

#生成器輸入噪聲的尺寸
latent_dim = 32

#構(gòu)造生成器和鑒別器模型
generator = build_generator(latent_dim, fraud_data.shape[1])
discriminator = build_discriminator(fraud_data.shape[1])

在這個階段,我們需要編譯鑒別器,它稍后將嵌套在主(更高)優(yōu)化循環(huán)中。我們可以使用以下參數(shù)設(shè)置來編譯鑒別器。

  • 鑒別器的損失函數(shù):二值分類器的通用交叉熵?fù)p失函數(shù)
  • 評價指標(biāo):準(zhǔn)確度和召回率。
# 編譯鑒別器模型
from keras.metrics import Precision, Recall
discriminator.compile(optimizer=Adam(learning_rate=0.0002, beta_1=0.5), loss='binary_crossentropy', metrics=[Precision(), Recall()])

對于生成器,我們將在構(gòu)建主(上)優(yōu)化循環(huán)時對其進(jìn)行編譯。

在這個階段,我們可以定義生成器的自定義目標(biāo)函數(shù),如下所示。請記住,推薦的目標(biāo)是最大以下公式:

注意,上面返回值前面的負(fù)號是必需的,因為默認(rèn)情況下?lián)p失函數(shù)被設(shè)計為最小化。

然后,我們便可以構(gòu)建雙層優(yōu)化架構(gòu)的主(上)循環(huán)build_GANs(generator, discriminator)。在這個主循環(huán)中,我們隱式編譯生成器。在這種情況下,當(dāng)我們編譯主循環(huán)時,我們需要使用生成器的自定義目標(biāo)函數(shù)generator_loss_log_d。

如上所述,當(dāng)我們訓(xùn)練生成器時,我們需要凍結(jié)鑒別器。

#結(jié)合生成器和鑒別器,構(gòu)建并編譯GANs主優(yōu)化循環(huán)
def build_gan(generator, discriminator):
 discriminator.trainable = False
 model = Sequential()
 model.add(generator)
 model.add(discriminator)
 model.compile(optimizer=Adam(learning_rate=0.0002, beta_1=0.5), loss=generator_loss_log_d)

 return model

# 調(diào)用主循環(huán)函數(shù)
gan = build_gan(generator, discriminator)

在上面的最后一行,GANs調(diào)用build_gan()函數(shù),以便使用Keras框架中的model.train_on_batch()方法實現(xiàn)下面的批處理訓(xùn)練。

注意,當(dāng)我們訓(xùn)練鑒別器時,我們需要凍結(jié)生成器的訓(xùn)練;當(dāng)我們訓(xùn)練生成器時,我們需要凍結(jié)鑒別器的訓(xùn)練。

這是在雙層優(yōu)化框架下結(jié)合兩個代理的交替訓(xùn)練過程的批量訓(xùn)練代碼。

# 設(shè)置超參數(shù)
epochs = 10000
batch_size = 32

#訓(xùn)練GANs的循環(huán)
for epoch in range(epochs):
 #訓(xùn)練鑒別器(凍結(jié)發(fā)生器)
 discriminator.trainable = True
 generator.trainable = False

 #從真實的欺詐數(shù)據(jù)中隨機抽樣
 real_fraud_samples = fraud_data[np.random.randint(0, num_real_fraud, batch_size)]

 # 使用生成器生成虛假欺詐樣本數(shù)據(jù)
 noise = np.random.normal(0, 1, size=(batch_size, latent_dim))
 fake_fraud_samples = generator.predict(noise)

 #為真實和偽造的欺詐樣本數(shù)據(jù)創(chuàng)建標(biāo)簽
 real_labels = np.ones((batch_size, 1))
 fake_labels = np.zeros((batch_size, 1))

 #訓(xùn)練針對真?zhèn)纹墼p樣本的鑒別器
 d_loss_real = discriminator.train_on_batch(real_fraud_samples, real_labels)
 d_loss_fake = discriminator.train_on_batch(fake_fraud_samples, fake_labels)
 d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)

 #訓(xùn)練生成器(凍結(jié)鑒別器)
 discriminator.trainable = False
 generator.trainable = True

 #生成合成欺詐樣本并創(chuàng)建標(biāo)簽以訓(xùn)練生成器
 noise = np.random.normal(0, 1, size=(batch_size, latent_dim))
 valid_labels = np.ones((batch_size, 1))

 # 訓(xùn)練生成器生成“欺騙”鑒別器的樣本
 g_loss = gan.train_on_batch(noise, valid_labels)

 #打印進(jìn)度
 if epoch % 100 == 0:
 print(f"Epoch: {epoch} - D Loss: {d_loss} - G Loss: {g_loss}")

這里,我即興想到一個問題,請你回答一下。

下面我們摘錄了上面代碼中與生成器訓(xùn)練相關(guān)的內(nèi)容。

你能解釋一下這個代碼是做什么的嗎?

# 生成合成欺詐樣本并創(chuàng)建標(biāo)簽以訓(xùn)練生成器
 noise = np.random.normal(0, 1, size=(batch_size, latent_dim))
 valid_labels = np.ones((batch_size, 1))

在第一行中,noise生成合成數(shù)據(jù)。在第二行中,valid_labels指定合成數(shù)據(jù)的標(biāo)簽。

為什么我們需要用1來標(biāo)記它,這應(yīng)該是真實數(shù)據(jù)的標(biāo)簽?你沒有發(fā)現(xiàn)代碼違反直覺嗎?

女士們,先生們,歡迎來到造假者的世界

這就是訓(xùn)練生成器創(chuàng)建可以欺騙鑒別器的樣本的標(biāo)記魔法

現(xiàn)在,讓我們使用經(jīng)過訓(xùn)練的生成器為少數(shù)欺詐類型創(chuàng)建合成數(shù)據(jù)。

#訓(xùn)練后,使用生成器創(chuàng)建合成欺詐數(shù)據(jù)
noise = np.random.normal(0, 1, size=(num_synthetic_samples, latent_dim))
synthetic_fraud_data = generator.predict(noise)

#將結(jié)果轉(zhuǎn)換為Pandas DataFrame格式
fake_df = pd.DataFrame(synthetic_fraud_data, columns=features.to_list())

最后,創(chuàng)建合成數(shù)據(jù)。

在下一節(jié)中,我們可以將這些合成的欺詐數(shù)據(jù)與原始訓(xùn)練數(shù)據(jù)集相結(jié)合,使整個訓(xùn)練數(shù)據(jù)集完全平衡。我希望完全平衡的訓(xùn)練數(shù)據(jù)集能夠提高欺詐檢測分類模型的性能。

第4節(jié):欺詐檢測概述(基準(zhǔn)場景與GANs場景)

我們一再強調(diào),本項目中使用的GANs僅用于數(shù)據(jù)增強,不用于分類。

首先,我們需要一個基準(zhǔn)模型作為比較的基礎(chǔ),以便評估基于GANs的數(shù)據(jù)增強對欺詐檢測模型性能的改進(jìn)。

作為一種二值分類器算法,我選擇了Ensemble方法來構(gòu)建欺詐檢測模型。作為基準(zhǔn)場景,我只使用原始的不平衡數(shù)據(jù)集開發(fā)了一個欺詐檢測模型:因此,沒有數(shù)據(jù)增強。然后,對于通過GANs進(jìn)行數(shù)據(jù)增強的第二種場景,我可以使用完全平衡的訓(xùn)練數(shù)據(jù)集訓(xùn)練相同的算法,該數(shù)據(jù)集包含由GANs創(chuàng)建的合成欺詐數(shù)據(jù)。

  • 基準(zhǔn)場景:沒有數(shù)據(jù)增強的集成分類器
  • GANs場景:使用GANs數(shù)據(jù)增強的集成分類器Ensemble Classifier

基準(zhǔn)場景:沒有數(shù)據(jù)增強的集成

接下來,讓我們定義基準(zhǔn)場景(沒有數(shù)據(jù)增強)。我決定使用集成分類器:用投票法作為元學(xué)習(xí)器,這將包括以下3個基本學(xué)習(xí)器

  • 梯度增強
  • 決策樹
  • 隨機森林

由于原始數(shù)據(jù)集特別不平衡——而不是準(zhǔn)確性方面,所以我將從以下3個選項中選擇評估指標(biāo):準(zhǔn)確性、召回率和F1分?jǐn)?shù)。

以下自定義函數(shù)ensemble_training(X_train,y_train)定義了訓(xùn)練和驗證過程。

def ensemble_training(X_train, y_train):
 #初始化基礎(chǔ)學(xué)習(xí)器
 gradient_boosting = GradientBoostingClassifier(random_state=42)
 decision_tree = DecisionTreeClassifier(random_state=42)
 random_forest = RandomForestClassifier(random_state=42)
 #定義基型模型
 base_models = {
 'RandomForest': random_forest,
 'DecisionTree': decision_tree,
 'GradientBoosting': gradient_boosting
 }
 # 初始化元學(xué)習(xí)器
 meta_learner = VotingClassifier(estimators=[(name, model) for name, model in base_models.items()], voting='soft')
 # 用于存儲訓(xùn)練和驗證指標(biāo)的列表
 train_f1_scores = []
 val_f1_scores = []
 # 將訓(xùn)練集進(jìn)一步拆分為訓(xùn)練集和驗證集
 X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=42, stratify=y_train)
 # 訓(xùn)練和驗證
 for model_name, model in base_models.items():
 model.fit(X_train, y_train)
 #訓(xùn)練指標(biāo)
 train_predictions = model.predict(X_train)
 train_f1 = f1_score(y_train, train_predictions)
 train_f1_scores.append(train_f1)
 #使用校驗集合的校驗指標(biāo)
 val_predictions = model.predict(X_val)
 val_f1 = f1_score(y_val, val_predictions)
 val_f1_scores.append(val_f1)
 # 在整個訓(xùn)練集中訓(xùn)練元學(xué)習(xí)器
 meta_learner.fit(X_train, y_train)
 return meta_learner, train_f1_scores, val_f1_scores, base_models

下一個函數(shù)ensemble_evaluations(meta_learner, X_train, y_train, X_test, y_test)負(fù)責(zé)計算元學(xué)習(xí)器級別的性能評估指標(biāo)

def ensemble_evaluations(meta_learner,X_train, y_train, X_test, y_test):
#兩個訓(xùn)練的GANs測試數(shù)據(jù)集上集成模型的指標(biāo)
 ensemble_train_predictions = meta_learner.predict(X_train)
 ensemble_test_predictions = meta_learner.predict(X_test)
 #計算集成模型的指標(biāo)
 ensemble_train_f1 = f1_score(y_train, ensemble_train_predictions)
 ensemble_test_f1 = f1_score(y_test, ensemble_test_predictions)
 # 計算訓(xùn)練和測試數(shù)據(jù)集的精度和召回率
 precision_train = precision_score(y_train, ensemble_train_predictions)
 recall_train = recall_score(y_train, ensemble_train_predictions)
 precision_test = precision_score(y_test, ensemble_test_predictions)
 recall_test = recall_score(y_test, ensemble_test_predictions)
 #輸出訓(xùn)練和測試數(shù)據(jù)集的精度、召回率和f1分?jǐn)?shù)
 print("Ensemble Model Metrics:")
 print(f"Training Precision: {precision_train:.4f}, Recall: {recall_train:.4f}, F1-score: {ensemble_train_f1:.4f}")
 print(f"Test Precision: {precision_test:.4f}, Recall: {recall_test:.4f}, F1-score: {ensemble_test_f1:.4f}")
 return ensemble_train_predictions, ensemble_test_predictions, ensemble_train_f1, ensemble_test_f1, precision_train, recall_train, precision_test, recall_test

下面,讓我們來看看基準(zhǔn)集成分類器的性能數(shù)據(jù)

Training Precision: 0.9811, Recall: 0.9603, F1-score: 0.9706
Test Precision: 0.9351, Recall: 0.7579, F1-score: 0.8372

可見,在元學(xué)習(xí)器水平上,基準(zhǔn)模型生成了0.8372的合理水平的F1分?jǐn)?shù)。

接下來,讓我們轉(zhuǎn)到使用GANs進(jìn)行數(shù)據(jù)增強的場景。我們想看看使用GAN的場景的性能是否能優(yōu)于基準(zhǔn)場景。

GANs場景:通過GANs增強數(shù)據(jù)進(jìn)行欺詐檢測

最后,我們將原始的不平衡訓(xùn)練數(shù)據(jù)集(包括非欺詐和欺詐案例)train_df和GAN生成的合成欺詐數(shù)據(jù)集fake_df相結(jié)合,構(gòu)建了一個完全平衡的數(shù)據(jù)集。在這里,我們不將測試數(shù)據(jù)集包含在此過程中,以便將其保留為原始數(shù)據(jù)集。

wdf = pd.concat([train_df, fake_df], axis=0)

我們將使用混合平衡數(shù)據(jù)集訓(xùn)練相同的集成方法,看看它是否會優(yōu)于基準(zhǔn)模型。

現(xiàn)在,我們需要將混合平衡的數(shù)據(jù)集拆分為特征和標(biāo)簽。

X_mixed = wdf[wdf.columns.drop("Class")]
y_mixed = wdf["Class"]

請記住,當(dāng)我早些時候運行基準(zhǔn)場景時,我已經(jīng)定義了必要的自定義函數(shù)來訓(xùn)練和評估集成分類器。我也可以在使用這些自定義函數(shù)并使用組合起來的平衡數(shù)據(jù)來訓(xùn)練相同Ensemble算法。

我們可以將特征和標(biāo)簽(X_mixed,y_mixed)傳遞到自定義集成分類器函數(shù)Ensemble_training()中。

meta_learner_GANs, train_f1_scores_GANs, val_f1_scores_GANs, base_models_GANs=ensemble_training(X_mixed, y_mixed)

最后,我們可以使用測試數(shù)據(jù)集對模型進(jìn)行評估。

ensemble_evaluations(meta_learner_GANs, X_mixed, y_mixed, X_test, y_test)

結(jié)果如下:

Ensemble Model Metrics:
Training Precision: 1.0000, Recall: 0.9999, F1-score: 0.9999
Test Precision: 0.9714, Recall: 0.7158, F1-score: 0.8242

結(jié)論

現(xiàn)在,我們終于可以評估GANs的數(shù)據(jù)增強是否如我所期望的那樣提高了分類器的性能

讓我們來比較一下基準(zhǔn)場景和GANs場景之間的評估指標(biāo)。

以下是基準(zhǔn)場景的結(jié)果:

# The Benchmark Scenrio without data augmentation by GANs
Training Precision: 0.9811, Recall: 0.9603, F1-score: 0.9706
Test Precision: 0.9351, Recall: 0.7579, F1-score: 0.8372

以下是GANs場景的結(jié)果

Training Precision: 1.0000, Recall: 0.9999, F1-score: 0.9999
Test Precision: 0.9714, Recall: 0.7158, F1-score: 0.8242

當(dāng)我們回顧訓(xùn)練數(shù)據(jù)集上的評估結(jié)果時,很明顯,在所有三個評估指標(biāo)中,GANs場景的表現(xiàn)都優(yōu)于基準(zhǔn)場景。

然而,當(dāng)我們關(guān)注樣本外測試數(shù)據(jù)的結(jié)果時,GANs情景僅在精度方面優(yōu)于基準(zhǔn)情景(基準(zhǔn)場景:0.935相對于GANs場景:0.9714):在召回和F1得分方面未能做到這一點(基準(zhǔn)場景:0.7579;0.8372相對于GANs場景:0.7158;0.8242)。

更高的精度意味著,與基準(zhǔn)場景相比,該模型對欺詐交易的預(yù)測中包含的非欺詐交易比例更低。

召回率較低意味著,該模型未能檢測到某些類型的實際欺詐交易。

這兩個比較表明:雖然GANs的數(shù)據(jù)增強成功地模擬了訓(xùn)練數(shù)據(jù)集中的真實欺詐數(shù)據(jù),但未能捕捉到樣本外測試數(shù)據(jù)集中實際欺詐案例的多樣性。

GANs在模擬訓(xùn)練數(shù)據(jù)的特定概率分布方面做得太好了。具有諷刺意味的是,使用GANs作為數(shù)據(jù)增強工具,考慮到對訓(xùn)練數(shù)據(jù)的過擬合,導(dǎo)致了所產(chǎn)生的欺詐檢測(分類)模型的泛化能力較差。

很矛盾的是,上面提供的這個特定的例子提出了一個反直覺的情況,即與更簡單的傳統(tǒng)算法相比,更復(fù)雜的算法可能不一定能保證更好的性能。

此外,我們還可以考慮到另一個意想不到的后果,即碳能耗問題:在模型開發(fā)中添加耗能高的算法可能會增加我們?nèi)粘I钪惺褂脵C器學(xué)習(xí)的碳能耗。這種情況展示了一個不必要的浪費能耗的例子,此時不必要地浪費了能量而沒有提供更好的性能。

在這里,我給您留下一些關(guān)于機器學(xué)習(xí)能耗知識的鏈接,供參考:

今天,我們已經(jīng)擁有許多的GANs變體。在未來的文章中,我想探索GANs的其他變體,看看是否有任何變體可以捕獲更廣泛的原始樣本多樣性,從而提高欺詐檢測器的性能。

參考資料

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標(biāo)題:Fraud Detection with Generative Adversarial Nets (GANs),作者:Michio Suginoo


責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-12-30 12:05:38

對抗性攻擊機器學(xué)習(xí)

2022-01-21 09:05:34

機器學(xué)習(xí)工具安全

2023-04-17 11:42:07

2024-06-28 09:20:29

2021-01-13 19:30:28

神經(jīng)網(wǎng)絡(luò)AI人工智能

2022-09-20 08:00:00

暗數(shù)據(jù)機器學(xué)習(xí)數(shù)據(jù)

2024-10-28 11:00:00

AI生成式

2024-01-07 22:58:56

2020-05-28 10:45:36

機器學(xué)習(xí)人工智能 PyTorch

2023-10-31 10:33:35

對抗網(wǎng)絡(luò)人工智能

2022-07-01 12:25:34

AI機器學(xué)習(xí)系統(tǒng)

2022-01-10 15:50:30

自動駕駛數(shù)據(jù)人工智能

2023-04-28 12:16:31

2021-03-12 10:40:46

CycleGAN網(wǎng)絡(luò)圖像深度學(xué)習(xí)

2019-07-21 22:22:37

圖像識別AI機器視覺

2024-09-23 14:41:54

2018-07-11 10:46:05

人工智能計算機視覺面部屬性

2022-11-28 08:47:33

AI圖片GAN

2018-07-04 09:10:54

人工智能機器人側(cè)臉

2017-05-10 14:32:31

神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)架構(gòu)模型
點贊
收藏

51CTO技術(shù)棧公眾號

激情小说一区| 国产三级午夜理伦三级| 欧美黑人巨大videos精品| 午夜精品在线看| 九九九九九九精品| 波多野结衣视频免费观看| 青青一区二区三区| 91精品国产综合久久精品| 9l视频自拍9l视频自拍| 东京干手机福利视频| 亚洲精品影视| 欧美精品一区二区三区很污很色的 | 日韩大片在线播放| 日韩欧美精品在线视频| 亚洲熟妇无码一区二区三区| 日韩二区三区| 美女精品一区二区| 欧美激情xxxx性bbbb| 欧美熟妇精品黑人巨大一二三区| 久久久久久久性潮| 亚洲精品中文字幕在线观看| 久久精品国产第一区二区三区最新章节 | 91精品国产沙发| 精品人妻一区二区三区蜜桃视频| 精品91福利视频| 亚洲二区在线观看| 亚洲精品一区二区三区樱花| 刘玥91精选国产在线观看| 日韩高清不卡一区二区| 欧美精品激情在线| 日本精品在线观看视频| 6080亚洲理论片在线观看| 午夜精品视频在线观看| 亚洲a∨一区二区三区| 欧美熟妇乱码在线一区| 久久精品二区亚洲w码| 国内精品一区二区三区四区| 日本视频在线免费| 九九热精品视频在线观看| 日韩一级成人av| 黄色三级视频片| 黄网站在线播放| 国产欧美精品一区| 国严精品久久久久久亚洲影视| 97人人爽人人爽人人爽| 日日摸夜夜添夜夜添国产精品| 欧美精品久久久久久久| 欧美三级黄色大片| 波多野结衣一区| 国产视频一区在线| youjizz.com日本| www.久久久久爱免| 欧洲在线/亚洲| 国产综合免费视频| 2018av在线| 一区二区三区欧美| 国产奶头好大揉着好爽视频| 91精品专区| 久久久久国产精品麻豆ai换脸| 51国偷自产一区二区三区| 中文天堂在线视频| 老司机久久99久久精品播放免费| 午夜精品免费视频| 国产精品23p| 伊人精品在线| 97激碰免费视频| 精品无码人妻一区二区三区| 亚洲精品888| 欧美成人全部免费| 最新一区二区三区| 欧美日韩国产一区精品一区| 欧美日韩成人在线视频| 极品盗摄国产盗摄合集| 中文字幕一区二区精品区| 久久久www成人免费精品张筱雨| 五月天婷婷丁香网| 日韩在线精品| 久久激情视频免费观看| 欧美激情精品久久久久久免费| 久久国产小视频| 久久久国产成人精品| 在线观看免费黄色网址| 欧美日韩中文一区二区| 中文字幕一精品亚洲无线一区| 精品人妻无码一区二区三区换脸| 久久99久久人婷婷精品综合| 一区二区国产精品视频| 妖精视频在线观看免费| 欧美韩日一区| 欧美激情手机在线视频| 日本少妇裸体做爰| 噜噜噜91成人网| 国产欧美最新羞羞视频在线观看| 国产有码在线观看| 国产成人免费视| 国产伦精品一区二区三区免费视频| 男人天堂综合网| 久久亚洲二区三区| 亚洲视频电影| 国产探花视频在线观看| 欧美午夜视频一区二区| 男人添女人下面免费视频| 日韩午夜视频在线| 精品精品国产高清a毛片牛牛| 国产高潮失禁喷水爽到抽搐| 亚洲精品亚洲人成在线观看| 国产一区二区三区在线| 黑鬼狂亚洲人videos| 激情欧美国产欧美| 日本中文字幕成人| 国产片高清在线观看| 成人激情黄色小说| 亚洲精品视频一二三| 丰满的护士2在线观看高清| 黄色91在线观看| 99sesese| 蜜臀av一区| 久久韩国免费视频| 国产又大又黄视频| 国产综合色在线| 久久青青草原| a在线免费观看| 色综合久久久久综合99| 少妇愉情理伦片bd| av永久不卡| 欧美精品第一页在线播放| 中文字幕无线码一区| 久久久久99精品国产片| 霍思燕三级露全乳照| 日韩区欧美区| 欧美精品在线播放| 国产精品爽爽久久| 国产精品的网站| 中文字幕国内自拍| 欧美精品一区二区三区中文字幕 | 国产伦精品一区二区三区免费| 日韩精品久久久毛片一区二区| 欧美13videosex性极品| 欧美精品一区二区三区高清aⅴ | 欧美三级电影一区| 国产精品高清无码在线观看| 99精品视频免费| 国产视频一区二区不卡| 另类视频在线| 日韩精品中文字幕在线一区| 99精品久久久久| 国产精品 欧美精品| 好吊色这里只有精品| 欧美黄色网络| 久久亚洲一区二区三区四区五区高| 亚洲一区二区激情| 国产精品理伦片| 日本77777| 亚洲精品a级片| 91丨九色丨国产| 蜜臀av国内免费精品久久久夜夜| 精品少妇一区二区三区在线播放| 精品视频在线观看免费| aaa亚洲精品| 热久久精品国产| 国产一区二区三区四区五区传媒| 国产成人精品最新| 毛片网站在线免费观看| 91麻豆精品国产综合久久久久久| 91精品少妇一区二区三区蜜桃臀| 国产一区二区在线电影| 成人短视频在线观看免费| 少妇精品在线| 5566成人精品视频免费| 高清av在线| 欧美一区二区在线播放| 精品无码一区二区三区电影桃花| av网站一区二区三区| 一本大道熟女人妻中文字幕在线| 精品美女久久| 亚洲一区二区中文字幕| 狼人综合视频| 中文字幕日本精品| 精品人妻一区二区三区含羞草| 亚洲国产日韩一级| 最近中文字幕免费| 国产毛片精品视频| 免费无码不卡视频在线观看| 国产一区网站| 18成人在线| 美女100%一区| 欧美www在线| 久久久久久久久亚洲精品| 欧美色成人综合| 久久综合久久鬼| 中文字幕欧美日韩一区| 在线中文字幕日韩| jjzz黄色片| 久久不射中文字幕| 手机看片日韩国产| 日韩有码av| 91亚洲国产成人久久精品网站| sm久久捆绑调教精品一区| 伊人久久综合97精品| 亚洲黄色一级大片| 欧美日韩一区三区| 五月婷婷激情网| 亚洲美女视频在线| 中文字幕免费视频| www.日韩在线| 久久精品无码一区二区三区毛片| 麻豆久久婷婷| av网站大全免费| 91亚洲一区| 欧美日韩国产综合在线| caoporn成人免费视频在线| 国产精品久久久久久久久久三级 | 天堂av在线资源| 日韩欧美在线网站| 伊人久久国产精品| 色婷婷国产精品综合在线观看| 欧美人妻精品一区二区免费看| 国产欧美日韩久久| 中文字字幕码一二三区| 成人毛片在线观看| 日本中文字幕有码| 国产一区二区三区在线观看免费| 亚洲天堂av线| 久久久精品日韩| 丰满少妇被猛烈进入高清播放| 在线国产日韩| 黄色小视频大全| 婷婷亚洲图片| 亚洲人一区二区| sdde在线播放一区二区| 青青草国产精品| 在线日本制服中文欧美| 国外成人在线视频网站| 伊人精品综合| 99一区二区| 免费精品一区| 99在线国产| 视频成人永久免费视频| 亚洲一区精品电影| 国产精品亚洲欧美日韩一区在线 | 欧美日韩999| 天堂av资源在线观看| 欧美成人精品在线视频| xvideos国产在线视频| 久久躁狠狠躁夜夜爽| 国产写真视频在线观看| 久久国产精品网站| 人人澡人人添人人爽一区二区| 久久成人精品电影| 青春草在线免费视频| 欧美激情奇米色| 高清毛片在线观看| 欧美性受xxxx白人性爽| 在线成人av观看| 国产激情综合五月久久| 成人看片毛片免费播放器| 国产欧美一区二区三区在线| 四虎国产精品永久在线国在线| 成人xxxxx| 999在线精品| 国产综合av一区二区三区| 色婷婷av一区二区三区丝袜美腿| 久久精品ww人人做人人爽| 精品盗摄女厕tp美女嘘嘘| 亚洲国产欧美日韩| 一区二区影院| 国产中文字幕二区| 日韩激情一二三区| 搡的我好爽在线观看免费视频| 国产大片一区二区| 中国av免费看| 亚洲国产精品成人综合色在线婷婷| 免费黄色国产视频| 亚洲成人你懂的| 欧美一级淫片免费视频黄| 欧美日韩激情一区二区三区| 亚洲第一页在线观看| 亚洲精品国产欧美| av午夜在线| 欧美黄网免费在线观看| 中文在线中文资源| 91久久久国产精品| 欧美大胆视频| 一本色道久久综合亚洲精品婷婷| 欧美视频不卡| 密臀av一区二区三区| 国产成人av电影在线播放| 3d动漫精品啪啪一区二区下载| 欧美国产一区二区在线观看| 国产这里有精品| 色婷婷精品久久二区二区蜜臂av| 国产乱码精品一区二三区蜜臂| 亚洲缚视频在线观看| 国产精品视频一区二区久久| 欧美老女人xx| 国产成人精品亚洲日本在线观看| 96久久精品| 日韩激情一区| 国产91在线视频观看| 激情综合色播五月| 免费在线观看你懂的| 亚洲欧美日韩国产综合在线 | 在线不卡一区二区| 亚洲 精品 综合 精品 自拍| 日韩在线视频一区| 欧美成人黑人| 国产日韩欧美二区| 亚洲天堂一区二区三区四区| 国产黄色特级片| 成人黄色小视频在线观看| 538精品在线视频| 欧美中文字幕不卡| 青青草在线播放| 欧美福利视频在线| 国产精品高清一区二区| 日韩欧美亚洲区| 亚洲免费在线| 97人妻精品一区二区三区免费 | 国产成人一二三区| 久久国产尿小便嘘嘘| 少妇无套高潮一二三区| 午夜精品久久久久久不卡8050| 精品免费久久久| 俺也去精品视频在线观看| av有声小说一区二区三区| 六月婷婷久久| 性色一区二区| 国产精品无码一区二区三区免费| 亚洲综合丁香婷婷六月香| 国产哺乳奶水91在线播放| 日韩视频在线免费观看| 国产麻豆一区| 亚洲欧洲精品在线| 久久精品免费看| 人妻互换一区二区激情偷拍| 在线观看一区日韩| 免费人成黄页在线观看忧物| 3344国产精品免费看| 欧美大胆视频| 日本在线观看a| 久久免费国产精品| 亚洲国产精品无码久久久| 亚洲丝袜一区在线| 免费污视频在线一区| 日韩免费av一区二区三区| 免费中文字幕日韩欧美| 一卡二卡三卡四卡| 日本电影亚洲天堂一区| 国产区视频在线| 国产精品视频99| 国产大片一区| 日韩欧美色视频| 亚洲国产日韩在线一区模特| 欧美 日韩 国产 成人 在线 91| 97在线看福利| 国产伦一区二区三区| 九色91popny| 1024国产精品| 亚洲欧美激情在线观看| 国产最新精品视频| 亚洲欧洲美洲国产香蕉| 中文字幕一区二区三区四区在线视频| 中文字幕成人网| 国产模特av私拍大尺度| 久久久之久亚州精品露出| 啪啪激情综合网| 成人黄色一区二区| 成人欧美一区二区三区视频网页| 国产高清在线免费| 91福利视频在线观看| av一区二区高清| 人妻巨大乳一二三区| 亚洲成人免费在线| 国产理论电影在线观看| 91网站在线看| 99在线热播精品免费99热| 日韩女同一区二区三区 | 黄色一区二区在线| 国产成人天天5g影院在线观看| 成人网在线免费看| 99国产一区| 人人艹在线视频| 精品捆绑美女sm三区 | 欧美日韩小视频| 欧美人与性动交α欧美精品图片| 久久久久久欧美精品色一二三四| 麻豆91精品视频| 日产精品久久久久久久| 在线成人免费网站| 波多野结衣一区二区三区免费视频| 男人操女人免费软件| 亚洲女与黑人做爰| 欧美一区二区视频| 亚洲综合色av| 日韩中文字幕麻豆| 国产亚洲精品久久久久久打不开| 中日韩美女免费视频网站在线观看| 亚洲三区欧美一区国产二区| 一区二区三区韩国| 天天免费综合色|