Icon

K12.1 AE_​異常偵測_​信用卡詐欺 (訓練模型)

一、資料預處理訓練集=67%的正常測試集=33%的正常+100%的詐欺 二、AE架構環境:keras / py3_knime_dl 三、訓練模型模型=很會辨識「沒詐欺」屬量Y=30個X「重建誤差」的MSE 四、搜尋最佳化門檻值最佳化門檻值=在「TPR和TNR的差異在可接受範圍」的條件下,最高「整體Accuracy」對應的「重建誤差MSE」 五、計算績效屬值Y:Y=1(詐欺)、Y=0(正常)混淆矩陣:特異度=TN/(TN+FP) 越大越好 核心 最佳化迴圈=「貪婪搜尋整體」範圍=自訂、步伐=自訂 筆記信用卡詐欺偵測AE=尋找共同的Feature以便更精簡的表示模型用精簡模型還原真實資料時會產生「重建誤差」RE設定適當的門檻質利用重建的誤差挑出異常資料 判斷「門檻值」若:MSE<門檻值則:Y=0 沒詐欺否則: Y=1有詐欺把「重建值 Y^」和「分類答案 Class」轉成「字串」把「整筆資料」的最大值、最小值記錄下來交給新資料作正規化績效評估「預測詐欺」的能力 =Recall=TPR=敏感度=78.31%特異性=TNR重要=1的精確度F=2PR/(P+R)設定特異性範圍特異值 Specificity ± 0.1可以算MSE平衡TPR與TNR敏感度Sensitivity TPR(注重抓出1) 在 特異性(TNR) ± 0.1範圍內我才接受門檻值 改=0.001 範圍把「詐欺 y=1和「沒詐欺 y=0」「樣本」分開 分割66%的「y=0」為「訓練集」與「測試集」做準備TPR與TNR接近=詐欺若 TPR 介於TNR ± 0.1範圍內係數=詐欺 y^=1TPR與TNR相近否則 : 係數=0訓練集=90%的「y=0」驗證集=10%的「y=0」把模型訓練成「很會辨別沒詐欺」只取coefficient的欄位coefficient=整數coefficient=TPR與TNR接近的「詐欺預測值」(0或1)測試集整合34%的 「y=0」 + 全部 「y=1」把「整數表」轉為 「流程變數表」流程變數=coefficient=TPR與TNR接近的「詐欺預測值」(0或1)欄位=只取Overall Accuracy(0~1)輸入層X30個 XShape=30找最佳TPR1.TPR在可接受範圍內2.保留符合條件的"整體Accuracy"3.找出最大的"整體Accuracy"對應的TPR=最佳門檻值隱藏層 H1編碼 y=沒詐欺EncodeA=保留X負值+機率0和1之間+平滑變化=Sigmoid神經元=40個Shape=40隱藏層 H2編碼 y=沒詐欺EncodeA=Sigmoid神經元=20個Shape=20核心隱藏層 HC編碼 y=沒詐欺Encode把「沒詐欺」的特徵壓縮到極致A=Sigmoid神經元=8個Shape=8隱藏層 H-2解碼 y=沒詐欺DecodeA=Sigmoid神經元=20個Shape=20最佳門檻值TPR與TNR最接近的重建誤差MSE=0.002把「Overall Accuracy」轉成「流程變數」搜尋「最佳門檻值」準則=TPR與TNR差異在可接受的範圍內最高的整體Accuracy=0.996門檻值=重建誤差MSE=0.011隱藏層 H-1解碼 y=沒詐欺DecodeA=Sigmoid神經元=40個Shape=40保留「最佳門檻值」30個X的「重建誤差MSE」若>0.011則為「詐欺」準備帶入「測試集」最佳門檻值把「最佳門檻值」轉成「流程變數」隱藏層 H-X解碼 y=沒詐欺DecodeA=Sigmoid神經元=30個Shape=30訓練模型用30個「重建的X」還原30個「原來的X」Y=重建誤差 REY屬量=回歸績效=MSE最佳化=Adam把門檻值轉成表格資料把「門檻值表格」寫成「檔案」存起來 E:\knime-workspace\3.老師上課\9.AE_異常偵測\threshold_best_J.table把「最佳門檻值」帶入「樣本的重建誤差MSE」判斷「是否詐欺」儲存模型信用卡詐欺預測E:\knime-workspace\3.老師上課\9.AE_異常偵測\creditcard_autoencoder-J.h5把「答案 Class」轉成「字串」計算「混淆矩陣」答案=字串 Class預測=字串 predictionApply 帶入把「測試集 Xi」帶入訓練好的模型計算「預測值 y^」計算「重建誤差」的MSEYi=30個X「原來的值」Y^=30個X「重建後的值」重建誤差=Yi-Y^RE_MSE=總和(誤差^2) / n重建誤差最小=0.000最大=0.084平均=0.001找「重建誤差MSE」的「門檻值」「測試集」的「重建誤差」開始=平均值=0.001增加=調整組數=0.001 (20組)結束=大於「最大值」=0.02最佳解搜尋方法=Burte Force(BF=每一步都要跑=貪婪解)改=0.001 範圍Y=1 : 227,445筆Y=0 : 400筆詐欺率=0.2%正規化 0~1N=(X-小)/(大-小)信用卡詐欺E:\knime-workspace\3.老師上課\9.AE_異常偵測\creditcard_SU.csv30個X1個屬質Y227,845筆Rule Engine Number To String Model Writer Scorer (JavaScript) Column Expressions Row Splitter Partitioning Rule Engine Partitioning Column Filter Concatenate Table Rowto Variable Column Filter Keras Input Layer Math Formula Keras Dense Layer Keras Dense Layer Keras Dense Layer Keras Dense Layer Table Rowto Variable ParameterOptimization Loop End Keras Dense Layer Column Filter Table Rowto Variable Keras Dense Layer Keras NetworkLearner Variable toTable Row Table Writer Rule Engine Keras NetworkWriter Number To String Scorer (JavaScript) Keras NetworkExecutor Math Formula Data Explorer Parameter OptimizationLoop Start Data Explorer Normalizer CSV Reader 一、資料預處理訓練集=67%的正常測試集=33%的正常+100%的詐欺 二、AE架構環境:keras / py3_knime_dl 三、訓練模型模型=很會辨識「沒詐欺」屬量Y=30個X「重建誤差」的MSE 四、搜尋最佳化門檻值最佳化門檻值=在「TPR和TNR的差異在可接受範圍」的條件下,最高「整體Accuracy」對應的「重建誤差MSE」 五、計算績效屬值Y:Y=1(詐欺)、Y=0(正常)混淆矩陣:特異度=TN/(TN+FP) 越大越好 核心 最佳化迴圈=「貪婪搜尋整體」範圍=自訂、步伐=自訂 筆記信用卡詐欺偵測AE=尋找共同的Feature以便更精簡的表示模型用精簡模型還原真實資料時會產生「重建誤差」RE設定適當的門檻質利用重建的誤差挑出異常資料 判斷「門檻值」若:MSE<門檻值則:Y=0 沒詐欺否則: Y=1有詐欺把「重建值 Y^」和「分類答案 Class」轉成「字串」把「整筆資料」的最大值、最小值記錄下來交給新資料作正規化績效評估「預測詐欺」的能力 =Recall=TPR=敏感度=78.31%特異性=TNR重要=1的精確度F=2PR/(P+R)設定特異性範圍特異值 Specificity ± 0.1可以算MSE平衡TPR與TNR敏感度Sensitivity TPR(注重抓出1) 在 特異性(TNR) ± 0.1範圍內我才接受門檻值 改=0.001 範圍把「詐欺 y=1和「沒詐欺 y=0」「樣本」分開 分割66%的「y=0」為「訓練集」與「測試集」做準備TPR與TNR接近=詐欺若 TPR 介於TNR ± 0.1範圍內係數=詐欺 y^=1TPR與TNR相近否則 : 係數=0訓練集=90%的「y=0」驗證集=10%的「y=0」把模型訓練成「很會辨別沒詐欺」只取coefficient的欄位coefficient=整數coefficient=TPR與TNR接近的「詐欺預測值」(0或1)測試集整合34%的 「y=0」 + 全部 「y=1」把「整數表」轉為 「流程變數表」流程變數=coefficient=TPR與TNR接近的「詐欺預測值」(0或1)欄位=只取Overall Accuracy(0~1)輸入層X30個 XShape=30找最佳TPR1.TPR在可接受範圍內2.保留符合條件的"整體Accuracy"3.找出最大的"整體Accuracy"對應的TPR=最佳門檻值隱藏層 H1編碼 y=沒詐欺EncodeA=保留X負值+機率0和1之間+平滑變化=Sigmoid神經元=40個Shape=40隱藏層 H2編碼 y=沒詐欺EncodeA=Sigmoid神經元=20個Shape=20核心隱藏層 HC編碼 y=沒詐欺Encode把「沒詐欺」的特徵壓縮到極致A=Sigmoid神經元=8個Shape=8隱藏層 H-2解碼 y=沒詐欺DecodeA=Sigmoid神經元=20個Shape=20最佳門檻值TPR與TNR最接近的重建誤差MSE=0.002把「Overall Accuracy」轉成「流程變數」搜尋「最佳門檻值」準則=TPR與TNR差異在可接受的範圍內最高的整體Accuracy=0.996門檻值=重建誤差MSE=0.011隱藏層 H-1解碼 y=沒詐欺DecodeA=Sigmoid神經元=40個Shape=40保留「最佳門檻值」30個X的「重建誤差MSE」若>0.011則為「詐欺」準備帶入「測試集」最佳門檻值把「最佳門檻值」轉成「流程變數」隱藏層 H-X解碼 y=沒詐欺DecodeA=Sigmoid神經元=30個Shape=30訓練模型用30個「重建的X」還原30個「原來的X」Y=重建誤差 REY屬量=回歸績效=MSE最佳化=Adam把門檻值轉成表格資料把「門檻值表格」寫成「檔案」存起來 E:\knime-workspace\3.老師上課\9.AE_異常偵測\threshold_best_J.table把「最佳門檻值」帶入「樣本的重建誤差MSE」判斷「是否詐欺」儲存模型信用卡詐欺預測E:\knime-workspace\3.老師上課\9.AE_異常偵測\creditcard_autoencoder-J.h5把「答案 Class」轉成「字串」計算「混淆矩陣」答案=字串 Class預測=字串 predictionApply 帶入把「測試集 Xi」帶入訓練好的模型計算「預測值 y^」計算「重建誤差」的MSEYi=30個X「原來的值」Y^=30個X「重建後的值」重建誤差=Yi-Y^RE_MSE=總和(誤差^2) / n重建誤差最小=0.000最大=0.084平均=0.001找「重建誤差MSE」的「門檻值」「測試集」的「重建誤差」開始=平均值=0.001增加=調整組數=0.001 (20組)結束=大於「最大值」=0.02最佳解搜尋方法=Burte Force(BF=每一步都要跑=貪婪解)改=0.001 範圍Y=1 : 227,445筆Y=0 : 400筆詐欺率=0.2%正規化 0~1N=(X-小)/(大-小)信用卡詐欺E:\knime-workspace\3.老師上課\9.AE_異常偵測\creditcard_SU.csv30個X1個屬質Y227,845筆Rule Engine Number To String Model Writer Scorer (JavaScript) Column Expressions Row Splitter Partitioning Rule Engine Partitioning Column Filter Concatenate Table Rowto Variable Column Filter Keras Input Layer Math Formula Keras Dense Layer Keras Dense Layer Keras Dense Layer Keras Dense Layer Table Rowto Variable ParameterOptimization Loop End Keras Dense Layer Column Filter Table Rowto Variable Keras Dense Layer Keras NetworkLearner Variable toTable Row Table Writer Rule Engine Keras NetworkWriter Number To String Scorer (JavaScript) Keras NetworkExecutor Math Formula Data Explorer Parameter OptimizationLoop Start Data Explorer Normalizer CSV Reader

Nodes

Extensions

Links