999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Spark 集群中還貸問題的邏輯回歸模型研究

2020-04-28 06:06:26劉黎志
武漢工程大學學報 2020年1期
關鍵詞:分類模型

劉黎志,彭 貝

1.智能機器人湖北省重點實驗室(武漢工程大學),湖北 武漢 430205;2.武漢工程大學計算機科學與工程學院,湖北 武漢 430205

近幾年,隨著移動互聯網的迅猛發展及互聯網+向服務、金融、通訊、娛樂、物流、共享經濟等各個行業的滲透,數據已經由被動產生過渡到了主動產生及自動產生階段,大數據的概念已經是無所不在[1-2]。行業數據量越大,其蘊含的信息也就越多,通過有效的數據挖掘手段,從大數據中獲得知識的可能性也就越大。傳統的數據挖掘及分析技術,一般需要將挖掘的數據全部載入計算機內存,由單個或多個CPU 進行計算,其所能處理的數據規模及構建挖掘模型的速度已經遠遠不能滿足大數據時代的需要。大數據環境下的數據挖掘需要解決3 個核心問題:1)構建有效的大數據存儲結構。2)在存儲結構的基礎上,進行大規模數據的并行或分布式計算,提高構建挖掘模型的速度。3)適合于大數據挖掘的語言、挖掘算法模型庫及可視化結果展示[3-5]。大數據的分析及挖掘技術,目前也是業界研究的熱點,大規模數據的分類模型[6-8]及邏輯回歸分類問題[9-11]已經得到了廣泛的研究。構建在Spark 分布式計算平臺上的MLib 等大數據挖掘模型庫已經得到一定程度的應用[12-14],本文就如何在Spark 集群環境下,使用R 語言對大規模銀行貸款數據進行邏輯回歸分類建模進行了深入的研究,數據來自https://packages.revolutionanalytics.com/datasets/中 的mortDefault.zip 文 件,文件解壓后按貸款人申請貸款年份共10 個文件,每個文件有1×106個記錄。

1 Spark 集群環境

Apache Spark 是專為大規模數據處理而設計的快速通用的分布式計算引擎,經過優化的DAG執行引擎使得在同等數據規模下,Spark 的處理速度要比Hadoop MapReduce 至少快10 倍以上。Spark 包含數據查詢分析庫,機器學習庫(machine learning library,Mlib),并行圖形計算庫及大規模實時流數據處理庫等,開發人員可以使用R、Pathon、Java、Scala 等語言在這些通用庫的支持下進行并行應用程序的開發。目前Spark 可以以獨立集群方式運行,也可以運行在Hadoop Yarn 或Apache Mesos 上,且能訪問HDFS、HBase、Hive 等多種數據源。由于Spark 分布式計算引擎具有快速的數據處理能力、多語言支持、豐富的通用庫及可跨平臺等特點,使得其得到快速的應用,正在形成一個高速發展應用廣泛的生態系統。

R 語言是能夠進行數據處理、計算、統計分析和繪圖[15-16],在目前大數據環境下得到廣泛應用的一種語言,RStudio Server 對R 語言進行了擴展,使其可以運行在Spark 集群環境下。Sparklyr 是一個基于R 語言,面向大規模數據分析及挖掘的工具包,通過該工具包,用戶可利用RStudio Web 客戶端:1)進行Spark 集群遠程連接管理。2)使用dplyr包對來源于HDFS、HBase、Hive 的數據進行查詢、篩選、排序、分組、聚集、連接等操作。3)調用MLib庫中的算法進行大規模數據挖掘,建立模型。4)對模型進行評價及預測結果的可視化展示。

2 Spark集群環境下的邏輯回歸分類

邏輯回歸是一種分類方法,主要用于二分類問題(即輸出只有兩種1 或者0,分別代表兩個類別),邏輯回歸使用非線性的Sigmoid 函數進行分類預測,函數形式為:

構造預測函數為:

若θ 已知,使用hθ(x )計算某個輸入特征變量X,一般認為若結果大于0.5,則預測其屬于分類1,否則為分類0。

需要在Spark 集群環境下進行邏輯回歸分類的銀行貸款數據存儲在HDFS 文件系統中。Sparklyr 首先通過RStudio 客戶端遠程連接到Spark 集群,讀取銀行貸款數據文件;然后使用dplyr對數據進行處理,劃分訓練集及測試集,最后調用MLib庫中的邏輯回歸算法對訓練集進行監督學習,得到能判斷客戶是否能按期歸還貸款的邏輯回歸模型。在集群環境下得到的模型僅包含回歸系數,而缺少對模型評估的參數,對此本文補充了幾個重要的性能指標來對模型進行評估,從而深入研究模型的可信性。

2.1 邏輯回歸模型的獲取

2.1.1 數據的讀取 以csv 格式存儲抵押貸款數據文件按申請年份共10 個,每個文件含106條記錄,將文件存儲在Hadoop 集群的HDFS 文件系統后,可使用spark_read_csv 函數讀取文件到Spark集群,格式為:

spark_read_csv(sc,name,path,memory =TRUE/FALSE...)

其中sc 為Spark 集群的連接對象,name 為讀入到Spark 集群中的表對象名,path 為數據文件在HDFS 文件系統中的路徑,memory 選項表示讀入到Spark 集群中的表對象是否緩存到集群節點的內存中。例如讀入2000 年抵押貸款的數據文件的語句為:

spark_read_csv(sc,"mortYear0”,"hdfs://datanode:9000/mortDefault/mortYear0.csv")

按上述語句格式,依次讀入其它年份的數據后,使用dplyr 的union 操作,將所有數據組合成為一個表對象all-Mort,組合2000 年至2004 年這5 個年份的語句描述如下:

allMort <-tbl(sc,“mortYear0)%>%union(tbl(sc,”mortYear2“))%>%…%>%union(tbl(sc,”mortYear4))

用戶在將大規模的數據讀入到Spark 集群時,可以根據數據的規模使用memory 選項控制數據是否在Spark 集群節點的內存中緩存,若整個Spark 集群中的工作節點內存可以容納所有數據,則選擇memory 為TRUE(默認),將數據放入節點內存,從而加快數據挖掘分析的速度。若大規模數據超過了所有節點的內存容量,則選擇memory為FALSE,將數據存放在HDFS 文件系統中,Sparklyr 僅僅讀入數據的定義進入節點內存,在使用MLib 模型庫對數據進行挖掘和分析時,根據節點內存的大小,從HDFS 文件系統中讀入需要的數據,從而實現大規模數據挖掘及分析的可擴展化。

2.1.2 類別特征的處理 需要進行邏輯回歸分類的原始抵押貸款數據格式如表1 所示。

表1 抵押貸款數據格式Tab.1 Format of mortgage data

default 為邏輯回歸模型需要預測的輸出變量,其它為輸入特征變量,建立邏輯回歸模型需要輸入特征變量均為數值型,如果輸入特征變量表現為類別特征如顏色、性別、年份,則需要對類別特征進行編碼,規則如下:

通過上述的編碼方式,抵押貸款數據中的year輸入特征會被映射為N 個二進制量,對于每條記錄,只有一個指示特征的值為1,其余為0。在實際應用中,通過選擇一個類別為參考類別,可用N-1個二進制量對有N 個類別的輸入變量進行編碼,當觀測數據的值與參考類別值相等時,對應的其它類別的N-1 個二進制量全部取值為0。對于抵押貸款數據,其year 輸入變量從2000 至2004 共5個特征,邏輯回歸模型系數僅包含c(year2001:year2004)這4 個年份系數,若某條記錄的year 值為2000,則c(year2001:year2004)對應的二進制量取值為c(0,0,0,0),若year 為2003,則對應的二進制量取值為c(0,0,1,0)。

2.1.3 邏輯回歸分類模型的獲取 邏輯回歸分類的任務就是以credit、house、Employ、Debt、year 為輸入特征變量,根據訓練集得到回歸模型來預測輸出變量default,從而回答抵押貸款人是否會拖欠貸款。在Spark 集群環境下的邏輯回歸分類模型的算法描述如下:

算法1:GetMortModel

輸入:抵押貸款文件集合mortFilePathlist

輸出:邏輯回歸模型mortModel

sc ←spark_connect(master='spark 集群Master節點',

spark_home='集群中spark 的安裝目錄',config='集群環境配置對象');//連接spark 集群環境

for(i=0;mortFile inmortFilePathLst;i++)//讀取每個年份的抵押貸款文件

mortYeari← spark_read_csv(sc,'mortYeari',hdfs://datanode:9000/'+mortFile');

allMort←union(tbl(sc,mortYeari));//組合文件

end for

allMort$year ←sdf_mutate(year=ftbucketizer(year,c(start-Year:endYear+1)))%>%

mutate(year=as.character(as.integer(year)));//設置輸入變量year 為類別變量

mlformula←formula(default~credit+house+Employ+Debt+year);//劃分訓練集及測試集,

調用MLib 中的邏輯回歸算法得到回歸模型

mortPartition←sdf_partition(allMort,training = 0.9,test=0.1,seed=1788);

dfMortTrain ←mortPartition$training;dfMortTest ←mortPartition$test;

mortModel←ml_logistic_regression(dfMortTrain,

ml_formula)//得到回歸模型

return mortModel

根據算法1,取2000 年至2004 年這5 個年份的抵押貸款文件,得到的邏輯回歸模型的系數如表2 所示。

表2 邏輯回歸模型系數Tab.2 Coefficients of logistic regression model

2.2 邏輯回歸模型的評估

得到的邏輯回歸模型是否可信任,分類效果如何,分類閾值如何確定,是否能滿足實際應用,需要進行評估,而在集群環境下得到的模型僅包含回歸系數,缺少對模型評估的參數。因此為了驗證獲得的模型的可信性,從以下幾個方面對模型進行評估。

2.2.1 偽判定系數R2設抵押貸款訓練集中的記錄數量為m,記錄i,i ∈{1 ,m} 的似然函數Li定義為:

則記錄i 的對數似然函數為:

其中yi為該記錄的是否按期歸還貸款的輸出值,hθ( )

xi為根據回歸模型mortModel 計算得到的預測值。回歸模型的偏差定義為Dm:

由于邏輯回歸模型是基于極大似然估計得到的,因此將訓練集的對數似然最大化也就等同于將模型偏差最小化。根據回歸模型mortModel 得到訓練集預測值如算法2 所示。

算法2:Predict

輸入:回歸模型mortModel,訓練集dfMortTrain

輸出:回歸模型預測值向量yPreds

1.θ ←mortModel$coefficients;//取模型系數向量

2.for(i=0;i ≤nrow(dfMortTrain);i++)

4.year←根據類別特征取值規則,生成輸入變量year的二進制向量;

6.yPreds[i]←hθ( xi);//根據預測函數計算預測值

7.end for

8.return y Pr eds;

得到回歸模型mortModel 的偏差Dm的過程如算法3所示。

算法3:GetModelDeviance

輸入:回歸模型mortModel,訓練集dfMortTrain

輸出:回歸模型偏差Dm

1.yLabels ←dfMortTrain[[ ]'default'];//得到訓練集中是實際輸出值

2.yPreds←Predictmort(Model,dfMortTrain);//調用算法2 得到預測值

3.Dm←0;i ←1;

4.for(i=0;i ≤nrow(dfMortTrain;i++)//計算模型偏差

5.Dm+=-2*(yLabels[i]*log( yP reds[i] )+

(1 - yLabels[i] )*log(1 - yPreds[i] ));

6.end for

7.return Dm;//返回模型偏差

空模型是不使用任何輸入特征變量訓練出來的模型,空偏差Dn表示空模型的預測值與實際輸出值之間的模型偏差,空模型的預測值為一個常數概率,一般取訓練集中所有輸出值為1 的記錄所占的百分比。根據算法3 計算Dn,只需要將yPreds 的 計 算 更 改 為yPreds←mean(dfMortTain[['default'])。

偽判定系數R2定義為:

偽判定系數R2用于衡量回歸模型相比于默認模型在解釋數據時的效果,其值應該小于1,若值大于1,則得到的回歸模型就不能被信任,數據集就不適合采用邏輯回歸算法進行分類預測。根據算法3 得到的Dm為48 153,Dn為92 750,R2為0.481,說明回歸模型mortModel是可信任的。

從統計學的角度來檢查模型偏差和空偏差之間的差值是否顯著,可以認為差值近似服從卡方分布,即:

其中p 為模型中參數的個數,對于mortModel模型,X 值為44 597,自由度p-1 為8,使用R 語言計算pchisq(X,p-1,lower.tail=F)得到的p 值為0,說明mortModel的預測效果明顯優于空模型。

2.2.2 分類評價指標 確定用戶是否能按期歸還貸款屬于二元分類問題,因此可以以混淆矩陣為基礎來評價分類評價指標。將得到的邏輯回歸模型用于預測銀行抵押貸款的訓練集,以0.5 為分類閾值(預測結果小于0.5,則default 為0,否則default 為1),將預測值與訓練集中的實際default 進行比較,得到的混淆矩陣為:

c[1,1]表示正確預測default 為0 的記錄個數;c[2,2]表示正確預測default 為1 的記錄個數;c[1,2]表示將值為0 的default 錯誤地預測為1 的記錄個數;c[2,1]表示將值為1 的default 錯誤 地 預測為0 的記錄個數。根據混淆矩陣可以得到準確率(accuracy,A),其值用A 表示;真陽性率(true positive rate,TPR)即正確預測default 為1 的比例,值用T 表示;假陽性率(false positive rate,FPR)即將default 錯誤預測為1 的比例,值用F 表示;3 個分類評價指標,其計算過程及值如下:

將ROCR 包加載到運行在集群環境中的RStudio Server 中后,使用包中的prediction 及performance 函數可以得到F 與T 的不同取值的變化曲線,如圖1(a)所示,該曲線稱為接受者操作特征曲線(receiver operating characteristic,ROC),根據銀行抵押貸款訓練集得到的邏輯回歸模型曲線下的區域面積(area under the curve,AUC)值為0.987 9。

通過上述評價指標,可以知道模型有高的準確率,低的假陽性率及幾乎接近于1 的AUC值,說明使用模型能準確的對用戶是否能按時歸還貸款進行分類。與結論相矛盾的問題是,以閾值H 等于0.5 進行預測分類判斷,真陽性率只有不到9%,說明模型不能對用戶未按時歸還貸款(default 值為1)進行判斷,產生矛盾的原因在于訓練集中的大多數記錄的default 的值為0,從而使得在進行模型訓練中,產生了傾向性。模型在不同閾值H 下的FPR 與TPR 的對應關系如圖1(b)所示,從圖中可以發現當H 取0 時,T 與F 均為1,表示所有記錄都被預測為default 等于1;隨著H 的增加,F 迅速降低到幾乎接近0,T 則緩慢降低;當H 取1 時,T與F 都為0,表示所有記錄都被預測default 為0。因此,若在實際應用中要求模型能較準確的預測用戶能否按時歸還貸款,則可將H 從0.5 的位置向左移取較小值,在提高T 的同時,保持較低的F。

2.2.3 測試集性能 將通過訓練集得到邏輯回歸分類模型對測試集中的記錄進行預測,可以模擬檢驗模型在實際應用中的表現,對測試集進行預測并計算評價指標如算法4 所示。

算法4:PrdictMortTest

輸入:回歸模型mortModel,測試集dfMortTest

輸出:測試集評價指標A,T,F 和模型曲線下區域面積S

1.yPredsTest←Predictmort(Model,dfMortTest);//調 用算法2 得到測試集預測值

2.yPredsTest←as.numeric(yPredsTest>0.05)//取 分 類閾值為0.05

3.cTest←table(dfMortTest$default,yPredsTest);//得 到測試集混淆矩陣

4.Get(A,T,F);//根據式(10)~(12)計算A,T,F;

5.predObjTest ← prediction(yPredsTest, dfMortTest$default);

6.S←performance(predObjTest,measure='auc')

7.@y.values[[ 1]]; //計算測試集里的S

8.return A,T,F,S;

圖1 分類評價指標圖:(a)F 與T 的不同取值的變化曲線,(b)不同閾值H 下的F 與T 的取值對應關系Fig.1 Curves of classification evaluation index:(a)change curve of different values of FPR and TPR,(b)corresponding relationship between FPR and TPR under different thresholds

根據算法4 返回的測試集評價指標如下:A 值為0.995,TPR 值為0.504,FPR 值 為0.004,S 值 為0.987。當將分類閾值設置為0.05 用于與測試集時,TRP 得到顯著的提高,而其它分類指標卻沒有降低太多,所以認為0.05 為該模型合適的分類閾值。各項評價指標與回歸模型基本吻合,因此說明可以將該模型進行實際應用。

3 實 驗

實驗用服務器為DELL PowerEdge R720,其配置為兩個物理CPU(Intel Xeon E5-2620 V2 2.10 GHz,每個CPU 含6 個內核,共12 個內核),32 GB 內存,8 TB 硬盤,4 個物理網卡。服務器安裝VMWare esxi6.0.0 操作系統,虛擬化整個服務器環境??蛻舳耸褂肰MWare VSphere client 6.0.0 將服務器劃分為4 個虛擬機,每個虛擬機的配置為3內核CPU,8 GB 內存,2 TB 硬盤,1 個物理網卡。每個虛擬機安裝ubuntu-16.04.1-server-amd64 操作系統,Hadoop 2.7.3 分布式計算平臺,組成含1 個主節點,4 個數據節點(主節點也是數據節點)的集群,集群中安裝的Spark 版本為2.1.1,同樣配置為4 個工作節點。

實驗將R 中串行的glm 算法與MLib 中并行的ml_logistic_regression 算法在邏輯回歸模型的獲取時間上進行比較,具體過程為首先將抵押貸款的10 個文件合并為allMort 數據集,依次劃分訓練集為allMort 的10%至90%;然后對每一個劃分的訓練集分別使用glm 算法及ml_logistic_regression 算法進行模型的獲取,每個算法運行3 次,取平均時間為算法獲取模型的時間。兩種算法獲取模型時間t與訓練數據量d 的關系比較如圖2 所示。

圖2 獲取模型時間比較圖Fig.2 Comparison diagram of time for obtaining model

由實驗結果分析:當數據量在6×106條以下時,串行算法glm 獲取模型的速度比并行算法ml_logistic_regression 快,但當數據量超過6×106條時,并行算法獲取模型的速度就優于串行算法。除此以外,這一實驗結果也說明了集群環境適合在大規模數據下進行機器學習,構建模型,這也是符合了在大數據時代的實際應用特征。

4 結 論

在增加了幾個模型評估系數從而驗證了模型可信性的基礎上,通過實驗證明了當數據量大到一定閾值后,在集群環境下并行的算法獲得邏輯回歸分類模型的速度要快于對應的串行算法。但在構建邏輯回歸模型前,需要對各個輸入特征變量進行相關性分析,規避變量間的多重線性,對輸入特征進行正則化分析,去掉對預測結果影響不顯著的特征。獲取邏輯回歸模型后,還需要對獲得的每個回歸系數計算其標準誤差,求出Z 統計量,對系數與預測結果的顯著性水平進行評價,以確定是否在回歸模型中使用該系數。以上幾點,都是在Spark 集群環境下對大規模數據進行邏輯回歸模型構建的后續研究中需要完善的地方。

猜你喜歡
分類模型
一半模型
分類算一算
垃圾分類的困惑你有嗎
大眾健康(2021年6期)2021-06-08 19:30:06
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
分類討論求坐標
數據分析中的分類討論
教你一招:數的分類
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 在线欧美一区| 国产在线91在线电影| 91在线国内在线播放老师| 呦女精品网站| 91在线激情在线观看| 一区二区三区四区精品视频| 91成人在线免费观看| 尤物视频一区| 国产永久在线视频| 波多野结衣一二三| 露脸真实国语乱在线观看| 国产SUV精品一区二区6| 亚洲日本一本dvd高清| 大学生久久香蕉国产线观看| 99爱在线| 国产无码在线调教| 欧美日韩精品一区二区在线线| 欧美一区精品| 日韩精品毛片| 欧美成人一级| 国产三区二区| 中文纯内无码H| 99在线免费播放| 九色免费视频| 在线观看国产精品一区| 91一级片| 亚洲精品中文字幕无乱码| 国产精品久久久久久久久| av午夜福利一片免费看| 国产成人综合日韩精品无码不卡| 国产主播福利在线观看| 亚洲第一黄色网址| 色婷婷综合在线| 国产在线观看第二页| 国产精品尤物铁牛tv| 8090午夜无码专区| 亚洲αv毛片| 台湾AV国片精品女同性| 欧美综合在线观看| 午夜性爽视频男人的天堂| 欧美成人手机在线观看网址| 制服丝袜 91视频| 亚洲欧美成aⅴ人在线观看| 精品剧情v国产在线观看| 国产精品乱偷免费视频| 欧洲av毛片| 欧美成人综合在线| 国产不卡网| 欧美激情视频在线观看一区| 午夜电影在线观看国产1区| 亚洲成a人片7777| 亚洲精品图区| 日韩成人在线一区二区| 成人欧美日韩| 婷婷丁香在线观看| 国产免费怡红院视频| 伊人激情综合网| 精品久久久久成人码免费动漫| 91视频青青草| 人人妻人人澡人人爽欧美一区| 日韩在线影院| 亚洲国产AV无码综合原创| 国产成人精品18| 国产成人盗摄精品| 久久婷婷国产综合尤物精品| 成人国产三级在线播放| 亚洲男人的天堂久久香蕉网| 在线观看亚洲国产| 国产亚洲精品91| 国产精品欧美在线观看| 精品人妻AV区| 国产精品区视频中文字幕| 激情成人综合网| 亚洲AⅤ无码日韩AV无码网站| 国产又黄又硬又粗| a亚洲天堂| 毛片大全免费观看| 999在线免费视频| 91九色国产porny| 一区二区欧美日韩高清免费| 久久精品国产精品国产一区| 亚瑟天堂久久一区二区影院|