本文經過利用信用卡的歷史交易數據進行機器學習,構建信用卡反欺詐預測模型,提早發現客戶信用卡被盜刷的事件。框架
1. 數據的下載和數據介紹機器學習
數據的下載地址爲分佈式
https://www.kaggle.com/dalpozz/creditcardfraud/data工具
數據集是2013年9月使用信用卡進行交易的數據。此數據集顯示兩天內發生的交易,其中284,807筆交易中有492筆被盜刷。數據集很是不平衡,被盜刷佔全部交易的0.172%。不幸的是,因爲保密問題,咱們沒法提供原始數據。特徵V1,V2,... V28是使用PCA得到的主要組件。特徵Class是響應變量,若是發生被盜刷,則取值1,不然爲0。學習
數據包含了Time,V1,V2,..V28,Amount,Class一共31列,其中Class是標籤列,其中0表明沒有被盜刷,1表示被盜刷。測試
2. 分析工具介紹大數據
咱們使用的工具是FEA-spk技術,它的底層基於最流行的大數據開發框架spark,對各類算子的操做都是基於DataFrame的,使用FEA-spk來作交互分析,不但很是簡單易懂並且幾乎和spark的功能同樣強大,更重要的一點,它能夠實現可視化,處理的數據規模更大,能夠進行分佈式的機器學習等spa
3. 案例的具體實現步驟以下事件
1. 數據預處理(Pre-processing Data)開發
(1) 加載數據
查看一下數據的大小
能夠看到一共有28萬多條
(2) 缺失值的處理,缺失值的佔比狀況
能夠看到沒有缺失值
2. 特徵工程(Feature Engineering)
統計目標列的狀況,這裏涉及到樣本的不平衡問題
能夠看到數據嚴重的不均衡,樣本不平衡影響分類器的學習,下面進行欠採樣。
能夠看到數據比較平衡了。
3. 特徵選擇
(1)因爲Spark機器學習只支持double類型的數據,因此咱們將數據轉化爲double類型的。
(2) 將特徵聚合爲向量
(3) 咱們能夠看到Time和Amount對應的向量的規格和其餘特徵相差較大,所以咱們需對其進行歸一化處理。
(4)咱們看到特徵向量一共有30個特徵,特徵的個數太多了,下面咱們對特徵進行卡方特徵選擇,選取10個最有預測能力的特徵。
能夠看到特徵向量的維度變爲10維了。
4.將數據劃分爲訓練集和測試集
能夠看到,a表和b表的比例大約爲10:1。
5. 模型設定與預測
(1)對訓練集df6表構造邏輯迴歸模型
(2)此刻的模型已經創建好了,下面咱們用測試集進行預測
其中prediction列就是測試集的預測結果。
(3)對模型進行打分,評價模型的好壞
能夠看到,模型的準確率達到了91%以上。
(4) 將模型保存到hdfs上面,以便下次使用
(5) 加載模型
以上就是信用卡反欺詐模型的構建過程,關注openfea,會有更多精彩的內容推薦。