精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

青青草手机在线视频| 无遮挡又爽又刺激的视频| 99精品免费观看| 欧美另类综合| 欧美色综合天天久久综合精品| 先锋影音网一区| 伊人22222| 欧美黄色大片网站| 亚洲成人久久久久| 免费在线观看毛片网站| shkd中文字幕久久在线观看| 精一区二区三区| 欧美国产在线视频| 日韩av无码一区二区三区不卡| 中文字幕在线直播| 国产精品国产a级| 国产成人精品一区二区三区福利| 色婷婷av国产精品| 色中色综合网| 欧美一级久久久| 狠狠爱免费视频| av免费在线一区二区三区| 日本不卡123| 大胆人体色综合| 亚洲一区二区三区综合| 欧美一级二级视频| 亚洲国产毛片aaaaa无费看 | 欧美经典影片视频网站| 五月综合激情网| 一区二区三区电影| 精品欧美一区二区精品少妇| 国产日韩一区二区三区在线播放| 中文综合在线观看| 一边摸一边做爽的视频17国产 | 亚洲综合无码一区二区| 欧美日韩无遮挡| www.xxx国产| 奇米一区二区三区| 69av在线视频| 午夜国产福利一区二区| 精品一区亚洲| 日韩精品中文字幕在线一区| 粉嫩虎白女毛片人体| av美女在线观看| 亚洲欧洲精品一区二区三区不卡| 麻豆av一区二区| 亚洲精品中文字幕成人片| 青青青爽久久午夜综合久久午夜| 97在线免费视频| 国产高潮流白浆| 日韩国产一区| 亚洲人成电影网站色| 91亚洲一线产区二线产区| 日韩国产91| 91福利国产精品| 天天夜碰日日摸日日澡性色av| 麻豆网在线观看| 91丨porny丨国产| 国产精品日韩二区| 精品久久久久久亚洲综合网站 | 18深夜在线观看免费视频| 97欧美成人| 欧美伊人精品成人久久综合97 | 在线视频亚洲| 久久人人爽人人| 久草免费在线观看视频| 综合久久十次| 麻豆国产精品va在线观看不卡| 免费看黄色av| 亚洲国产最新| 亚洲欧美另类自拍| 亚洲激情视频小说| 久久av免费看| 亚洲日本成人女熟在线观看 | 色妞ww精品视频7777| 91精品国产色综合久久久蜜香臀| 亚洲综合在线网站| 久久精品女人天堂av免费观看| 精品国产成人av| 97国产在线播放| 人成在线免费网站| 午夜一区二区三区在线观看| 日韩小视频在线播放| 四虎影视成人| 亚洲v中文字幕| 少妇高潮喷水在线观看| 欧美专区福利免费| 精品视频在线免费看| 99九九99九九九99九他书对| 国产剧情一区二区在线观看| 精品久久人人做人人爽| www.17c.com喷水少妇| 亚洲精品一区国产| 亚洲国产精品va在线观看黑人| 短视频在线观看| 精品精品99| 久久艹在线视频| 国产盗摄一区二区三区在线| 国产精品xvideos88| 亚洲18私人小影院| 这里只有精品免费视频| 国产在线精品一区在线观看麻豆| 成人情趣片在线观看免费| 亚洲国产成人一区二区| 久久综合色婷婷| 亚洲国产一区二区精品视频| 久久精品视频免费看| 亚洲午夜精品网| 国产成人a亚洲精v品无码| 青草综合视频| 亚洲精品一区二区三区蜜桃下载| 在线免费观看日韩av| 国产精品国产一区| 韩国一区二区电影| 影音先锋黄色网址| 国产精品一区二区在线观看不卡| 激情欧美一区二区三区中文字幕| 超碰免费在线观看| 亚洲综合色婷婷| 欧美三级午夜理伦三级| 精品视频在线观看免费观看| 亚洲男女性事视频| 午夜69成人做爰视频| 男女av一区三区二区色多| 国产日韩精品综合网站| 五月天激情婷婷| 亚洲色图制服诱惑| 欧美三级一级片| 狂野欧美xxxx韩国少妇| 成人精品视频| 亚洲欧美中文字幕在线一区| 美国黄色小视频| 日韩在线一区二区| 国产精品入口免费| 91在线中字| 91福利社在线观看| 色悠悠在线视频| 99热国内精品| 国产成人精品久久二区二区91| 亚洲自拍第二页| 久久久一区二区三区| 欧美久久久久久久久久久久久久| 青娱乐极品盛宴一区二区| 亚洲欧美日韩成人| 草视频在线观看| 久国产精品韩国三级视频| 免费久久99精品国产自| 日日夜夜天天综合入口| 欧美日韩视频第一区| 亚洲码无人客一区二区三区| 亚洲激情自拍| 国产精品一区二区三区在线观| 成人在线网址| 7777精品伊人久久久大香线蕉经典版下载 | 久久人人97超碰com| 精品无码国模私拍视频| 中文字幕区一区二区三| 久久中文字幕一区| 一级特黄录像免费看| 国产女主播一区| 国产视频一区二区三区在线播放 | 在线观看免费的av| 日韩精品欧美| 国产精品久久久久久久久久久新郎 | 亚洲精品在线二区| 国产成人精品自拍| free性m.freesex欧美| 欧美一区二区三区不卡| 欧美做爰啪啪xxxⅹ性| 精品一区二区三区免费| 亚洲成色www久久网站| 成人全视频在线观看在线播放高清| 亚洲午夜国产成人av电影男同| 老熟妇仑乱一区二区av| 久久久精品黄色| 一级在线免费视频| 99精品在线观看| 91天堂在线观看| www久久日com| 日韩一区二区免费视频| 免费人成年激情视频在线观看| 国产91精品一区二区| 欧美少妇在线观看| 第四色在线一区二区| 4k岛国日韩精品**专区| 黄色美女网站在线观看| 欧美影视一区在线| av成人免费网站| www.一区二区| 9久久婷婷国产综合精品性色| 97偷自拍亚洲综合二区| 99高清视频有精品视频| 僵尸再翻生在线观看免费国语| 精品香蕉在线观看视频一| 免费黄色片视频| 精品在线99| 欧美精品成人91久久久久久久| 国产人妻精品一区二区三区| 亚洲国产sm捆绑调教视频 | xxxxx.日韩| 免费91在线视频| 婷婷亚洲一区二区三区| 欧美视频一区二区三区四区| 欧美激情久久久久久久| 国产一区中文字幕| 免费看国产曰批40分钟| 郴州新闻综合频道在线直播| 亚洲最大成人在线| 一区二区三区四区日本视频| 神马国产精品影院av| 黄色一级大片在线免费看国产一| 色视频成人在线观看免| 国产精品成人免费观看| 久久久蜜桃精品| 亚洲精品国产一区二区三区| 亚洲精品激情| 在线视频不卡一区二区| 亚洲精品推荐| 91精品视频免费观看| 五月天国产在线| 色av中文字幕一区| 色吊丝在线永久观看最新版本| 福利视频第一区| 国产一二三区精品| 久久你懂得1024| 成人性生活免费看| 国产成人在线免费| 污污的视频免费观看| 日本不卡的三区四区五区| 能在线观看的av| 夜夜夜久久久| www.av片| 亚洲先锋成人| 高清无码一区二区在线观看吞精| 五月久久久综合一区二区小说| 日韩精品伦理第一区| 亚洲精品动态| 免费成人在线观看av| 日本三级久久| 久久精品magnetxturnbtih| 狠狠一区二区三区| 国产精品视频免费观看| 这里视频有精品| 国产精品久久一区二区三区| 国产精品白丝一区二区三区| 国产成人成网站在线播放青青| 欧美一级大片在线视频| 99视频日韩| 都市激情久久| 狠狠色综合欧美激情| 亚洲毛片免费看| 欧美一级二级三级| blacked蜜桃精品一区| 亚洲ai欧洲av| 天天做天天爱天天综合网2021| 在线观看成人一级片| 五月天久久网站| 日韩亚洲欧美一区二区| 在线电影一区| 日韩欧美在线播放视频| 视频一区视频二区在线观看| 一级黄色特级片| 国产在线精品一区在线观看麻豆| 一个人看的视频www| 成人小视频免费观看| 99久久人妻精品免费二区| 久久综合久色欧美综合狠狠| 中文字幕第24页| 自拍偷拍亚洲综合| 欧美黑人一级片| 欧美视频裸体精品| 91久久国语露脸精品国产高跟| 欧美一卡2卡3卡4卡| 隣の若妻さん波多野结衣| 亚洲另类图片色| 免费大片在线观看www| 久久91精品国产91久久跳| 91桃色在线观看| 国产精品6699| а天堂中文最新一区二区三区| 动漫3d精品一区二区三区| 亚洲传媒在线| 中文字幕一区二区三区最新| 激情欧美一区二区三区| 粉嫩虎白女毛片人体| 国产精品一区二区三区99| 国产精品久久AV无码| 国产精品第五页| 中文在线观看免费网站| 欧美三级韩国三级日本三斤| 黑人精品一区二区| 在线精品国产成人综合| 超碰在线中文字幕| 国产精品一二三在线| 福利片一区二区| 亚洲三区四区| 国产精品久久久一区二区| 一二三级黄色片| 久久久天堂av| 国产在线视频第一页| 欧美色图在线观看| 天天操天天干天天插| 日韩中文字幕在线看| 中国色在线日|韩| 成人一区二区电影| 国产欧美日韩一区二区三区四区| 国产精品美女在线播放| 久久国产福利| 日本久久久久久久久久| 中文字幕一区av| 91在线视频免费播放| 亚洲аv电影天堂网| 日韩毛片久久久| 热99在线视频| 国产精品调教| 天堂av在线中文| 麻豆国产精品视频| b站大片免费直播| 岛国精品视频在线播放| 亚洲国产精品18久久久久久| 中文字幕亚洲图片| 91精品论坛| 久久久99爱| 亚洲少妇诱惑| 人体私拍套图hdxxxx| 一个色妞综合视频在线观看| 99久久精品日本一区二区免费| 国产亚洲精品综合一区91| 蜜桃av.网站在线观看| 高清av免费一区中文字幕| 亚洲欧美伊人| 久久久久亚洲av片无码v| 亚洲人成在线播放网站岛国| 中文在线资源天堂| 在线观看日韩专区| 97精品国产99久久久久久免费| 日韩.欧美.亚洲| 肉丝袜脚交视频一区二区| 欧美精品黑人猛交高潮| 性做久久久久久免费观看欧美| 国产成人a人亚洲精品无码| 久久国产视频网站| 国产aⅴ精品一区二区四区| 国产成人精品免费看在线播放| 狠狠色狠狠色综合| 综合五月激情网| 日韩免费高清视频| 丁香花高清在线观看完整版| 国产亚洲精品自在久久| 亚洲一卡久久| 国产免费一区二区三区网站免费| 91黄视频在线| 亚洲欧美视频一区二区| 91在线观看免费网站| 欧美日韩 国产精品| 69亚洲乱人伦| 色哟哟日韩精品| 日本免费在线观看| 亚洲一区二区日本| 亚洲人成高清| 色婷婷av777| 欧美视频一区二区三区四区| www在线视频| 国外成人免费视频| 日日夜夜一区二区| 精品国产精品国产精品| 亚洲成人精品久久久| 国产不卡网站| 亚洲国产一区二区三区在线| 国产精品一二三四| 男女视频免费看| 亚洲最大在线视频| 91麻豆精品| 精品久久一二三| 国产精品久久三区| 亚洲精品久久久久久久久久| 亚洲18私人小影院| 久久国产亚洲精品| 成人啪啪18免费游戏链接| 色婷婷一区二区| caoporn免费在线| 麻豆成人小视频| 精品一区精品二区高清| 国产一区二区三区影院| 中文字幕v亚洲ⅴv天堂| 亚洲精品黑牛一区二区三区| 波多野结衣家庭教师视频| 亚洲欧洲精品天堂一级| 少妇性bbb搡bbb爽爽爽欧美| 国产欧美日韩中文字幕| 亚洲激情影院| 亚洲一区电影在线观看| 精品网站999www| 天堂久久av| 男操女免费网站| 精品国产乱码久久久久酒店 | 久久综合网hezyo| 最新亚洲精品| 秋霞午夜鲁丝一区二区| 欧美中文字幕一区|