版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章監(jiān)督學(xué)習(xí)6.1監(jiān)督學(xué)習(xí)的概念監(jiān)督學(xué)習(xí)是指從給定的一組帶標(biāo)簽的數(shù)據(jù)中學(xué)習(xí)輸入(特征變量)和輸出(目標(biāo)變量)的映射關(guān)系,當(dāng)新的數(shù)據(jù)到來(lái)時(shí),可以根據(jù)這個(gè)映射關(guān)系預(yù)測(cè)新數(shù)據(jù)的結(jié)果。按目標(biāo)變量的類型,監(jiān)督學(xué)習(xí)又可以分為分類和回歸:分類:當(dāng)預(yù)測(cè)目標(biāo)是離散型時(shí),即預(yù)測(cè)類別,學(xué)習(xí)任務(wù)為分類任務(wù)。例如,預(yù)測(cè)一位企業(yè)的員工是否會(huì)離職?常用的算法是分類算法,例如決策樹分類、樸素貝葉斯分類、邏輯回歸等。回歸:當(dāng)預(yù)測(cè)目標(biāo)是連續(xù)型時(shí),即預(yù)測(cè)值大小,學(xué)習(xí)任務(wù)為回歸任務(wù)。例如,預(yù)測(cè)一輛新造的汽車價(jià)格。常用的算法就是回歸算法,例如線性回歸、嶺回歸等。有些機(jī)器學(xué)習(xí)的算法,例如神經(jīng)網(wǎng)絡(luò)、決策樹、隨機(jī)森林、K-近鄰等,既適用于連續(xù)型目標(biāo)變量也適用于離散型目標(biāo)變量。監(jiān)督學(xué)習(xí)的流程如圖6-1所示:選擇一個(gè)適合目標(biāo)任務(wù)的數(shù)學(xué)模型,例如決策樹、線性回歸等模型。先把一部分已知的“問(wèn)題和答案”,即帶標(biāo)簽的訓(xùn)練數(shù)據(jù)集,給機(jī)器去學(xué)習(xí),監(jiān)督兩字體現(xiàn)這里。機(jī)器從訓(xùn)練數(shù)據(jù)集中總結(jié)出了自己的“方法論”。人類把“新的問(wèn)題”,即新數(shù)據(jù)集,給機(jī)器,讓機(jī)器使用學(xué)習(xí)到的方法論去解答。6.2模型評(píng)價(jià)6.2.1評(píng)估方法對(duì)于收集到的一份數(shù)據(jù)集
D,同時(shí)要在D上進(jìn)行訓(xùn)練和測(cè)試,因此要把D分成訓(xùn)練集和測(cè)試集。常用的基于數(shù)據(jù)隨機(jī)選樣劃分的評(píng)估方法有留出法和交叉驗(yàn)證。1.留出法(HoldOut)在留出法中,給定的數(shù)據(jù)集隨機(jī)地劃分成兩個(gè)獨(dú)立互斥的集合:訓(xùn)練集和測(cè)試集。一般情況下,30%的數(shù)據(jù)分配到測(cè)試集,其余的數(shù)據(jù)分配到訓(xùn)練集。使用訓(xùn)練集訓(xùn)練學(xué)習(xí)器,推導(dǎo)出模型,模型的性能使用測(cè)試集進(jìn)行評(píng)估,檢驗(yàn)?zāi)P偷臏y(cè)試誤差,進(jìn)而估計(jì)模型的泛化能力。使用留出法進(jìn)行模型評(píng)價(jià)時(shí),更好的方法是將數(shù)據(jù)劃分為三個(gè)部分:訓(xùn)練集、測(cè)試集和驗(yàn)證集,如圖6-2所示。訓(xùn)練集用來(lái)模型擬合,估計(jì)出模型參數(shù);驗(yàn)證集用來(lái)調(diào)整模型參數(shù),得到更優(yōu)的模型;測(cè)試集用來(lái)衡量模型性能優(yōu)劣。圖6-2留出法(HoldOut)在數(shù)據(jù)樣本不是很多的情況下,則需要分層抽樣,這樣可以保證訓(xùn)練集和測(cè)試集中各類樣本的比例與原數(shù)據(jù)集是一致的,這樣的劃分結(jié)果也更具代表性。關(guān)于百分比例的選擇,理論上來(lái)說(shuō)是要用D中的數(shù)據(jù)來(lái)建模的,因此訓(xùn)練集占比越大,建模能使用的數(shù)據(jù)信息就越多,但是此時(shí)測(cè)試集數(shù)據(jù)過(guò)少,測(cè)試結(jié)果不具有普遍性。因此需要根據(jù)實(shí)際情況來(lái)選擇,一般情況下會(huì)選擇30%左右的數(shù)據(jù)作為測(cè)試集。留出法劃分?jǐn)?shù)據(jù)集的效果還是跟測(cè)試集的選取密切相關(guān),最終模型表現(xiàn)的好壞與初始數(shù)據(jù)的劃分結(jié)果有很大的關(guān)系,具有一定的偶然性。為了減少這種偶然性,可以選擇多次劃分?jǐn)?shù)據(jù)集將最后結(jié)果取平均值的方式去處理。2.交叉驗(yàn)證(CrossValidation)交叉驗(yàn)證就是對(duì)原始樣本數(shù)據(jù)進(jìn)行切分,然后組合成為多組不同的訓(xùn)練集和測(cè)試集,用訓(xùn)練集訓(xùn)練模型,用測(cè)試集評(píng)估模型。某次的訓(xùn)練集可能是下次的測(cè)試集,故而稱為交叉驗(yàn)證。交叉驗(yàn)證的方法有K折交叉驗(yàn)證和留一交叉驗(yàn)證,其中K折交叉驗(yàn)證應(yīng)用較為廣泛。(1)K折交叉驗(yàn)證(K-foldCrossValidation)將數(shù)據(jù)集隨機(jī)劃分為K個(gè)互不相交的子集或者“折”:S1,S2,S3,……,Sk,每個(gè)折的大小大致相等。每次選取K-1份作為訓(xùn)練集,用剩下的1份作為測(cè)試集,進(jìn)行訓(xùn)練和測(cè)試。訓(xùn)練和測(cè)試進(jìn)行K次,每個(gè)子樣本測(cè)試一次,得到K次不同的測(cè)試效果,平均K次的結(jié)果作為最終的模型效果。這個(gè)方法的優(yōu)勢(shì)在于同時(shí)重復(fù)運(yùn)用隨機(jī)產(chǎn)生的子樣本進(jìn)行訓(xùn)練和測(cè)試,測(cè)試結(jié)果減少偶然性,更準(zhǔn)確地評(píng)估模型。關(guān)于K的選擇,通常來(lái)說(shuō),如果訓(xùn)練集相對(duì)較小,則增大K值,這樣在每次迭代過(guò)程中將會(huì)有更多數(shù)據(jù)用于模型訓(xùn)練,同時(shí)算法時(shí)間延長(zhǎng);如果訓(xùn)練集相對(duì)較大,則減小K值,這樣可以降低模型在不同的數(shù)據(jù)塊上進(jìn)行重復(fù)擬合的計(jì)算成本,在平均性能的基礎(chǔ)上獲得模型的準(zhǔn)確評(píng)估。一般地,建議使用10折交叉驗(yàn)證,因?yàn)樗哂邢鄬?duì)低的偏置和方差。(2)留一驗(yàn)證(LeaveOneOut)留一驗(yàn)證是只使用原樣本中的一個(gè)樣本來(lái)當(dāng)做測(cè)試集,而剩余的樣本當(dāng)做訓(xùn)練集。這個(gè)步驟一直持續(xù)到每個(gè)樣本都被當(dāng)過(guò)一次測(cè)試集。它是K-fold交叉驗(yàn)證的一種特例,即K與樣本數(shù)量相等的時(shí)候。6.2.2
評(píng)估指標(biāo)對(duì)于監(jiān)督學(xué)習(xí)訓(xùn)練得到的模型,到底如何評(píng)價(jià)一個(gè)模型預(yù)測(cè)的好壞呢?不同模型預(yù)測(cè)的結(jié)果如何比較?一般可以使用評(píng)估指標(biāo)來(lái)進(jìn)行模型評(píng)價(jià)和比較。評(píng)估指標(biāo)有兩個(gè)作用:了解模型的泛化能力,可以通過(guò)同一個(gè)評(píng)估指標(biāo)來(lái)對(duì)比不同模型,從而知道哪個(gè)模型相對(duì)較好,哪個(gè)模型相對(duì)較差??梢酝ㄟ^(guò)評(píng)估指標(biāo)來(lái)逐步優(yōu)化模型,而評(píng)估方法提供了不同情景下使用這些指標(biāo)對(duì)模型進(jìn)行評(píng)價(jià)。用于模型評(píng)價(jià)的評(píng)估指標(biāo)有很多,按照類別可以分為:適用于分類模型:混淆矩陣、準(zhǔn)確率、查準(zhǔn)率、查全率、F1、ROC曲線等。適用于回歸模型:MSE、RMSE、MAE、MAPE、R-Square、AdjustR-Square等。1.分類算法的評(píng)估指標(biāo)分類模型常用的幾個(gè)評(píng)估指標(biāo)都是基于混淆矩陣構(gòu)建。混淆矩陣如表6-1所示。
表6-1混淆矩陣
實(shí)際值預(yù)測(cè)值正例反例正例真正例(TP)假正例(FP)反例假反例(FN)真反例(TN)真正例(TP):模型成功將正例預(yù)測(cè)為正例。真反例(TN):模型成功將反例預(yù)測(cè)為反例。假反例(FN):模型將正例錯(cuò)誤預(yù)測(cè)為反例。假正例(FP):模型將反例錯(cuò)誤預(yù)測(cè)為正例。準(zhǔn)確率
(Accuracy)準(zhǔn)確率是一個(gè)描述模型總體準(zhǔn)確情況的百分比指標(biāo),主要用來(lái)說(shuō)明模型的總體預(yù)測(cè)準(zhǔn)確情況,計(jì)算公式如下:準(zhǔn)確率=(真正例+真反例)/N(6-1)準(zhǔn)確率雖然可以判斷總體的正確率,但是在樣本嚴(yán)重不平衡的情況下,并不能作為很好的指標(biāo)來(lái)衡量結(jié)果。比如有一個(gè)預(yù)測(cè)客戶流失的模型,數(shù)據(jù)集有84335條是不流失客戶,2672條為流失客戶,該模型把所有客戶都判斷為不流失客戶(即沒有發(fā)現(xiàn)任何流失客戶),這時(shí)準(zhǔn)確率為
84335/(84335+2672)=96.92%。雖然這時(shí)的準(zhǔn)確率很高,但是該模型沒有發(fā)現(xiàn)流失客戶,所以該模型其實(shí)很糟糕。(2)查準(zhǔn)率(Precision)對(duì)于預(yù)測(cè)問(wèn)題來(lái)說(shuō),往往關(guān)注的并不是模型的準(zhǔn)確率。例如對(duì)于客戶流失問(wèn)題,更多地會(huì)關(guān)注預(yù)測(cè)流失且實(shí)際流失的那部分人。即提供的預(yù)測(cè)流失名單中到底最后有百分之多少真正流失了。查準(zhǔn)率用來(lái)反映提供名單的精準(zhǔn)性,也叫精準(zhǔn)率。它是所有預(yù)測(cè)為正例的樣本中,實(shí)際為正例的樣本所占的比例,計(jì)算公式如下:
查準(zhǔn)率=真正例/(真正例+假正例)
(6-2)查準(zhǔn)率表示對(duì)正樣本結(jié)果中的預(yù)測(cè)準(zhǔn)確程度,而準(zhǔn)確率是對(duì)所有樣本結(jié)果的預(yù)測(cè)準(zhǔn)確程度。查準(zhǔn)率適用的場(chǎng)景是需要盡可能地把所需的類別檢測(cè)準(zhǔn)確,而不在乎這些類別是否都被檢測(cè)出來(lái)。(3)查全率(Recall)只是查準(zhǔn)率高似乎也有問(wèn)題,還是以客戶流失問(wèn)題來(lái)說(shuō),假設(shè)通過(guò)數(shù)據(jù)挖掘模型只給出了一個(gè)20人的流失名單,結(jié)果該名單中有16個(gè)人確實(shí)流失了,這個(gè)模型的查準(zhǔn)率達(dá)到了80%,相當(dāng)不錯(cuò),可是問(wèn)題是最終有200個(gè)人流失,而模型只發(fā)現(xiàn)了其中的16個(gè),這樣的模型性能顯然是不會(huì)被認(rèn)可。因此就需要使用查全率,查全率也稱召回率或命中率,主要是反映正例的覆蓋程度,它是實(shí)際為正例的樣本中被正確預(yù)測(cè)為正例的樣本所占的比例,計(jì)算公式如下
查全率=真正例
/(真正例+假反例)
(6-3)查全率適用的場(chǎng)景是需要盡可能地把所需的類別檢測(cè)出來(lái),而不在乎結(jié)果是否準(zhǔn)確。
然而這兩者往往成正相關(guān),因?yàn)槿绻{(diào)高閾值,例如認(rèn)為流失概率超過(guò)90%才認(rèn)定為流失,那么會(huì)導(dǎo)致假警報(bào)率很低,但是命中率也很低;而如果調(diào)低閾值,例如認(rèn)為流失概率超過(guò)10%就認(rèn)定為流失,那么命中率就會(huì)很高,但是假警報(bào)率也會(huì)很高。因此,為了衡量一個(gè)模型的優(yōu)劣,數(shù)據(jù)科學(xué)家根據(jù)不同閾值下的命中率和假警報(bào)率繪制了ROC曲線,如圖6-3所示,其中橫坐標(biāo)為假警報(bào)率(FPR),縱坐標(biāo)為命中率(TPR)。曲線越靠近左上角,說(shuō)明在相同的閾值條件下,命中率越高,假警報(bào)率越低,模型越完善。若一個(gè)學(xué)習(xí)器的ROC曲線被另一個(gè)學(xué)習(xí)器的曲線完全“包住”,那么則可以斷言后者的性能優(yōu)于前者。若兩個(gè)學(xué)習(xí)器的ROC曲線發(fā)生交叉,則難以一般性地?cái)嘌詢烧呤雰?yōu)孰劣,較為合理的判斷依據(jù)就是比較ROC曲線下的面積,即AUC,AUC值越大,對(duì)應(yīng)的學(xué)習(xí)器越優(yōu)越。圖6-3ROC曲線
max_depth=3max_depth=5max_depth=7max_depth=9min_samples_leaf=5DT(max_depth=3,min_samples_leaf=5)DT(max_depth=5,min_samples_leaf=5)DT(max_depth=7,min_samples_leaf=5)DT(max_depth=9,min_samples_leaf=5)min_samples_leaf=10DT(max_depth=3,min_smples_leaf=10)DT(max_depth=5,min_samples_leaf=10)DT(max_depth=7,min_samples_leaf=10)DT(max_depth=9,min_samples_leaf=10)min_samples_leaf=15DT(max_depth=3,min_samples_leaf=15)DT(max_depth=5,min_samples_leaf=15)DT(max_depth=7,min_samples_leaf=15)DT(max_depth=9,min_samples_leaf=15)表6-2決策樹算法兩個(gè)參數(shù)形成的參數(shù)網(wǎng)格6.3決策樹算法6.3.1決策樹算法介紹決策樹是一種簡(jiǎn)單但廣泛使用的分類器,是一個(gè)由根部向下運(yùn)用遞歸分割子樹的算法,以建立一個(gè)樹形結(jié)構(gòu)的分類器。樹上的每個(gè)非葉子結(jié)點(diǎn)表示某個(gè)屬性的測(cè)試,每一個(gè)分支代表一個(gè)分類規(guī)則,葉子結(jié)點(diǎn)保存著該分類規(guī)則的分類標(biāo)簽。如圖6-4所示介紹一個(gè)典型的決策樹模型:判斷哪些天氣條件下適合外出運(yùn)動(dòng)。6.3.2
決策樹算法實(shí)現(xiàn)決策樹算法的實(shí)現(xiàn)是一種貪心算法,它以自頂向下遞歸的劃分的方式構(gòu)造樹結(jié)構(gòu)。算法的基本策略如下:樹以代表訓(xùn)練樣本的單個(gè)結(jié)點(diǎn)開始。如果樣本都在同一個(gè)類,則該結(jié)點(diǎn)成為葉子結(jié)點(diǎn),并用該類標(biāo)記。否則,算法選擇最有分類能力的屬性作為決策樹的當(dāng)前結(jié)點(diǎn)。根據(jù)當(dāng)前決策結(jié)點(diǎn)屬性的每個(gè)已知的值,每個(gè)取值形成一個(gè)分枝,有幾個(gè)取值形成幾個(gè)分枝,并據(jù)此劃分訓(xùn)練樣本,將數(shù)據(jù)劃分為若干子集。針對(duì)上一步得到的每一個(gè)子集,算法使用同樣的過(guò)程,遞歸地形成每個(gè)劃分樣本上的決策樹。一旦一個(gè)屬性出現(xiàn)在一個(gè)結(jié)點(diǎn)上,就不必在該結(jié)點(diǎn)的任何后代上考慮它。遞歸劃分步驟僅當(dāng)下列條件之一成立時(shí)停止:給定結(jié)點(diǎn)的所有樣本屬于同一類。沒有剩余屬性可以用來(lái)進(jìn)一步劃分樣本。在這種情況下,使用多數(shù)表決,將給定的結(jié)點(diǎn)轉(zhuǎn)換成樹葉,并以樣本中占比最多的類別作為該結(jié)點(diǎn)的類別標(biāo)記,同時(shí)也可以存放該結(jié)點(diǎn)樣本的類別分布。給定結(jié)點(diǎn)沒有樣本,則利用該結(jié)點(diǎn)的父結(jié)點(diǎn)來(lái)判斷分類標(biāo)記,并將該結(jié)點(diǎn)轉(zhuǎn)換成葉結(jié)點(diǎn)。某一結(jié)點(diǎn)中的樣本數(shù)低于給定的閾值。在這種情況下,使用多數(shù)表決,確定該結(jié)點(diǎn)的類別標(biāo)記,并將該結(jié)點(diǎn)轉(zhuǎn)換成葉結(jié)點(diǎn)。1.屬性選擇度量在決策樹算法中,最主要的一個(gè)任務(wù)是選擇一個(gè)最具分類能力的屬性,如何度量一個(gè)屬性是最有分類能力的?下面介紹幾種屬性選擇的度量指標(biāo)。信息增益信息增益表示由于特征A而使得對(duì)數(shù)據(jù)D的分類的不確定性減少的程度。信息增益的計(jì)算涉及熵和條件熵,熵和條件熵的計(jì)算公式參考第5章5.3.4節(jié),信息增益的計(jì)算公式參考第5章5.4.2節(jié)。(2)信息增益比信息增益比的計(jì)算公式參考第5章5.4.2節(jié)。(3)基尼系數(shù)(Gini)熵的計(jì)算涉及對(duì)數(shù)運(yùn)算,比較耗時(shí),基尼系數(shù)在簡(jiǎn)化計(jì)算的同時(shí)還保留了熵的優(yōu)點(diǎn)?;嵯禂?shù)代表了模型的不純度,基尼系數(shù)越小,純度越高,選擇該特征進(jìn)行劈劃也越好。這和信息增益(比)正好相反。
2.連續(xù)型屬性對(duì)于連續(xù)型屬性即數(shù)值屬性,可以將分裂限定在二元分裂,屬性劈劃的關(guān)鍵是找到最佳劈劃點(diǎn),尋找過(guò)程如下:對(duì)連續(xù)型變量,按從小到大的順序排列值,假設(shè)排列之后的數(shù)組表示為:a1<a2<a3<….<am。遍歷每一對(duì)相鄰的值并計(jì)算相應(yīng)的屬性選擇度量(如信息增益比等),每一對(duì)相鄰的點(diǎn)隱含著一個(gè)最佳劈劃點(diǎn)t=(ai+ai+1)/2和一個(gè)劈劃(D),選擇最大信息增益或者信息增益比,對(duì)基尼系數(shù),則選擇最小的基尼系數(shù)的劈劃點(diǎn)進(jìn)行劈劃。3.樹剪枝決策樹算法在學(xué)習(xí)的過(guò)程中為了盡可能正確地分類訓(xùn)練樣本,不停地對(duì)結(jié)點(diǎn)進(jìn)行劃分,因此會(huì)導(dǎo)致整棵樹的分枝過(guò)多,容易造成過(guò)擬合。剪枝方法可以處理這種過(guò)分適應(yīng)訓(xùn)練集數(shù)據(jù)問(wèn)題,即過(guò)擬合。通常,該方法使用統(tǒng)計(jì)度量,剪去最不可靠的分枝,使樹的結(jié)構(gòu)更易于理解,提高樹的正確分類能力,即提高樹獨(dú)立于測(cè)試數(shù)據(jù)正確分類的可靠性。有兩種常用的剪枝方法預(yù)剪枝(pre-pruning)和后剪枝(post-pruning)。1)預(yù)剪枝:預(yù)剪枝是在構(gòu)造決策樹的過(guò)程中,先對(duì)每個(gè)結(jié)點(diǎn)在劃分前進(jìn)行估計(jì),如果當(dāng)前結(jié)點(diǎn)的劃分不能帶來(lái)決策樹模型預(yù)測(cè)性能的提升,則不對(duì)當(dāng)前結(jié)點(diǎn)進(jìn)行劃分并且將當(dāng)前結(jié)點(diǎn)標(biāo)記為葉結(jié)點(diǎn);2)后剪枝:后剪枝是先把整棵決策樹構(gòu)造完畢,然后自底向上的對(duì)非葉結(jié)點(diǎn)進(jìn)行考察,若將該結(jié)點(diǎn)對(duì)應(yīng)的子樹換為葉結(jié)點(diǎn)能夠帶來(lái)預(yù)測(cè)性能的提升,則把該子樹替換為葉結(jié)點(diǎn)。4.缺失值處理決策樹算法本身可以處理缺失值。當(dāng)一個(gè)被劈劃的屬性含有缺失值時(shí),在這個(gè)屬性上是缺失的每個(gè)樣本被分成若干片斷,采用數(shù)值加權(quán)方案,按照比例將各個(gè)片斷分配到下面的每個(gè)分枝,并一直傳遞下去,這個(gè)比例是各分枝所含的樣本數(shù)目的比值,最終含有缺失值的樣本的各部分都會(huì)到達(dá)某一個(gè)葉結(jié)點(diǎn),參與分類的決策。數(shù)據(jù)集含有缺失值同樣可以使用一般的屬性選擇度量來(lái)計(jì)算,只是計(jì)算的時(shí)侯不再是整數(shù)累計(jì),而是使用加權(quán)值來(lái)計(jì)算。6.3.3
決策樹算法應(yīng)用案例通過(guò)已有的員工信息和離職表現(xiàn)來(lái)搭建相應(yīng)的員工離職預(yù)測(cè)模型,基于員工離職預(yù)測(cè)模型預(yù)測(cè)之后的員工是否會(huì)離職。1.案例概述大部分員工決定離職時(shí),通常需經(jīng)過(guò)思考期。慰留員工的最佳時(shí)機(jī),就是在他們產(chǎn)生離職想法之前。本案例通過(guò)數(shù)據(jù)分析的方法,構(gòu)建離職預(yù)測(cè)模型,對(duì)員工的離職進(jìn)行預(yù)測(cè)。員工離職預(yù)測(cè)模型能夠提前預(yù)判,盡早介入,針對(duì)員工最關(guān)注/不滿的問(wèn)題及時(shí)提供解決方案(例如,升職加薪,教育優(yōu)惠,經(jīng)濟(jì)補(bǔ)償?shù)龋瑥亩岣邼M意度,降低員工離職風(fēng)險(xiǎn),特別是留住經(jīng)驗(yàn)豐富的員工,避免員工“去意已決”時(shí)才進(jìn)行無(wú)效挽留。2.數(shù)據(jù)集本案例使用的數(shù)據(jù)集共有14999組歷史數(shù)據(jù),其中,3571組為離職員工數(shù)據(jù),11428組為非離職員工數(shù)據(jù),離職率為23.81%。數(shù)據(jù)集中變量的詳細(xì)描述如表6-3所示,表格中的“是否離職”列為目標(biāo)變量,剩下的字段為特征變量,用于通過(guò)一個(gè)員工的特征來(lái)判斷其是否會(huì)離職。根據(jù)這些歷史數(shù)據(jù)搭建決策樹模型來(lái)預(yù)測(cè)之后員工的離職可能性。變量名變量說(shuō)明取值范圍是否離職離散型變量,共有2個(gè)類別0-未離職,1-已離職滿意度連續(xù)型變量,對(duì)公司的滿意程度0~1績(jī)效評(píng)估連續(xù)型變量,績(jī)效評(píng)估分值0~1參與過(guò)的項(xiàng)目數(shù)連續(xù)型變量,單位:個(gè)2~7平均每月工作時(shí)長(zhǎng)連續(xù)型變量,單位:小時(shí)96~310工作年限連續(xù)型變量,單位:年2-10是否有過(guò)工作差錯(cuò)離散型變量,共有2個(gè)類別0-沒有,1-有五年內(nèi)是否升職離散型變量,共有2個(gè)類別0-沒有,1-有職業(yè)離散型變量,共有10個(gè)類別Accounting、HR等薪資水平離散型變量,共有3個(gè)類別Low、Medium、High表6-3員工離職數(shù)據(jù)集字段含義說(shuō)明3.分析過(guò)程-大數(shù)據(jù)應(yīng)用平臺(tái)本案例按照下面步驟展開分析:離職員工特征探索:探索員工離職的原因跟哪些因素有關(guān)。模型構(gòu)建和評(píng)估:基于決策樹算法,在訓(xùn)練集上構(gòu)建員工離職預(yù)測(cè)模型,并在測(cè)試集上評(píng)估模型性能。模型應(yīng)用:將離職預(yù)測(cè)模型應(yīng)用到新數(shù)據(jù)集,預(yù)測(cè)員工離職的概率。
(1)離職員工特征探索離職員工特征探索主要來(lái)分析哪些變量與員工離職密切相關(guān),離職員工有哪些特點(diǎn)?根據(jù)各變量的數(shù)據(jù)類型可以分為:連續(xù)變量與是否離職的關(guān)系:可以使用直方圖或者箱型圖,如果希望得到離散變量與連續(xù)變量之間關(guān)系的量化描述,可以使用方差分析。離散變量與是否離職的關(guān)系:可以使用柱狀圖或者堆積柱狀圖,如果希望得到兩個(gè)離散變量之間關(guān)系的量化描述,也可以使用交叉表。在大數(shù)據(jù)應(yīng)用平臺(tái)的自助報(bào)告中,對(duì)于本案例的數(shù)據(jù)集,采用堆積直方圖探索連續(xù)變量對(duì)公司滿意度、月均工作時(shí)長(zhǎng)、績(jī)效評(píng)估、工作年限、參與過(guò)的項(xiàng)目數(shù)與離職的關(guān)系,如圖6-5所示。從圖上看,離職員工的特點(diǎn)如下:對(duì)公司的滿意度較低的員工越容易離職,大部分離職員工對(duì)公司滿意度小于0.5。平均月工作時(shí)長(zhǎng)很短(117~160)或者很高(>224)的員工越容易離職,工作時(shí)長(zhǎng)較合理(160~224)的員工離職率較低。績(jī)效評(píng)估很低和很高的員工越容易離職,中績(jī)效的員工離職率。工作年限在3到5年間的員工越容易離職,工作年限很短或者很長(zhǎng)的員工離職率較低。參加項(xiàng)目個(gè)數(shù)越多的員工離職率越大(去除項(xiàng)目數(shù)為2的樣本)。在大數(shù)據(jù)應(yīng)用平臺(tái)的自助報(bào)告中,采用堆積百分比柱狀圖探索離散型變量五年內(nèi)是否升職、工作差錯(cuò)、薪資水平、職位與離職的關(guān)系,結(jié)果如圖6-6所示。從圖上看,離職員工的特點(diǎn):未出過(guò)工作差錯(cuò)的員工離職率比較高,離職率隨著薪資的增加而降低,五年內(nèi)沒有升職的員工的離職率比較大,職位與員工離職的關(guān)系不大。(2)模型構(gòu)建和評(píng)估對(duì)于企業(yè)來(lái)說(shuō),經(jīng)驗(yàn)豐富的優(yōu)秀員工的離職是特別大的損失,優(yōu)秀的員工是企業(yè)爭(zhēng)相競(jìng)爭(zhēng)的人才。因此,本案例將重點(diǎn)針對(duì)有經(jīng)驗(yàn)的優(yōu)秀的員工,構(gòu)建離職預(yù)測(cè)模型。那什么樣的員工才算是優(yōu)秀的有經(jīng)驗(yàn)的呢?本案例將績(jī)效評(píng)估>=0.7或者工作年限>=4或者參與過(guò)的項(xiàng)目數(shù)>5的這些人定義為優(yōu)秀的或者有經(jīng)驗(yàn)的員工。在大數(shù)據(jù)應(yīng)用平臺(tái)的工作流功能模塊中,使用分析組件構(gòu)建分析工作流,實(shí)現(xiàn)員工離職預(yù)測(cè)模型的構(gòu)建和評(píng)估,模型構(gòu)建和評(píng)估的分析流程如圖6-7所示。提取優(yōu)秀員工使用“過(guò)濾”節(jié)點(diǎn)提取優(yōu)秀員工樣本集,將“過(guò)濾”節(jié)點(diǎn)與“員工離職數(shù)據(jù)”表相連接,優(yōu)秀員工的篩選表達(dá)式為“績(jī)效評(píng)估>=0.70OR工作年限>=4OR參與過(guò)的項(xiàng)目數(shù)>5”,篩選出來(lái)的優(yōu)秀員工有9772名,其中,2014組為離職員工數(shù)據(jù),7758組為非離職員工數(shù)據(jù),離職率為20.61%,與原始數(shù)據(jù)差別不大。2)劃分訓(xùn)練集和測(cè)試集使用“數(shù)據(jù)分割”節(jié)點(diǎn)將數(shù)據(jù)集分成二個(gè)互相排斥的子集:訓(xùn)練集和測(cè)試集。該節(jié)點(diǎn)有兩個(gè)輸出端口,一個(gè)是訓(xùn)練集,另一個(gè)是測(cè)試集。數(shù)據(jù)分割有兩種不同的分割方式:百分比和固定大小。每種分割方式又可以采用系統(tǒng)抽樣或者隨機(jī)抽樣進(jìn)行。如果需要在兩個(gè)子集中均保留目標(biāo)變量的各類別的原始分布,可在節(jié)點(diǎn)的參數(shù)設(shè)置中定義一列“分層列”,然后算法將根據(jù)分層列中各類別的樣本比例,對(duì)數(shù)據(jù)進(jìn)行分劃。本案例中,將“數(shù)據(jù)分割”節(jié)點(diǎn)與“過(guò)濾節(jié)點(diǎn)”通過(guò)端口相連接,“數(shù)據(jù)分割”節(jié)點(diǎn)的參數(shù)設(shè)置如圖6-8所示。數(shù)據(jù)分割后,訓(xùn)練集為6841組數(shù)據(jù),離職率為20.61%;測(cè)試集為2931,離職率為20.61%。因?yàn)椴捎昧朔謱映闃?,因此兩個(gè)子集的目標(biāo)變量的類別分布均保留原始目標(biāo)變量的類別分布。3)模型構(gòu)建在訓(xùn)練集上,采用決策樹算法建立員工離職預(yù)測(cè)模型。將數(shù)據(jù)分割節(jié)點(diǎn)的訓(xùn)練集輸出端口與“決策樹”節(jié)點(diǎn)相連接,并設(shè)置決策樹節(jié)點(diǎn)的參數(shù)。決策樹節(jié)點(diǎn)的參數(shù)說(shuō)明如表6-4所示。參數(shù)名稱描述預(yù)測(cè)變量從表中選擇若干列作為預(yù)測(cè)變量,可以接受數(shù)值或者字符型的列目標(biāo)變量從表中選擇一列作為目標(biāo)變量,只接受字符型的列權(quán)重用于平衡類別分布非常不均衡的數(shù)據(jù)集最小節(jié)點(diǎn)數(shù)目此參數(shù)是樹生長(zhǎng)的停止條件,值越大樹生長(zhǎng)越早停止,默認(rèn)值是2。最大樹深度此參數(shù)是樹生長(zhǎng)的停止條件,值越小樹生長(zhǎng)越早停止,默認(rèn)值是20。剪枝置信度此參數(shù)控制剪枝的水平,該值越低表示樹被剪枝得越簡(jiǎn)化,默認(rèn)值是25%在本案例中,決策樹節(jié)點(diǎn)的參數(shù)設(shè)置為目標(biāo)變量為“是否離職”,預(yù)測(cè)變量選擇除
“是否離職”之外的所有列,最小節(jié)點(diǎn)數(shù)目設(shè)置為10,其余參數(shù)為默認(rèn)值。決策樹節(jié)點(diǎn)的輸出可以歸納出一組決策規(guī)則,并將預(yù)測(cè)模型保存到用戶空間,這個(gè)模型可以應(yīng)用到新數(shù)據(jù)集用于預(yù)測(cè)員工的離職概率。執(zhí)行決策樹節(jié)點(diǎn),結(jié)果可以使用“決策樹瀏覽器”查看決策樹結(jié)構(gòu),如圖6-9所示。圖6-9使用“決策樹瀏覽器”查看決策樹結(jié)構(gòu)表6-4決策樹節(jié)點(diǎn)的參數(shù)說(shuō)明
滿意度>0.11&工作年限<=4.0&平均每月工作時(shí)長(zhǎng)<=276.0→不離職(置信度:97.16%)這條規(guī)則中的葉子結(jié)點(diǎn)有4304名員工,其中4182名是非離職員工,122名是離職員工,表示當(dāng)一名員工的特征符合這條規(guī)則時(shí),則該員工不離職的概率是4182/4304=97.16%。滿意度>0.11&工作年限>4.0&績(jī)效評(píng)估<=0.81→不離職(置信度:95.31%)這條規(guī)則中的葉子結(jié)點(diǎn)有879名員工,其中834名是非離職員工,45名是離職員工,表示當(dāng)一名員工的特征符合這條規(guī)則時(shí),則該員工不離職的概率是834/879=95.31%。以上兩條規(guī)則可以識(shí)別出訓(xùn)練集中(4182+834)/5431=92.35%的不離職員工。另外,從決策樹瀏覽器圖可以得到在構(gòu)建決策樹時(shí)每次的最佳劈劃屬性的排序,從而可以知道影響員工離職的關(guān)鍵性因素:對(duì)公司的滿意度、工作年限、績(jī)效評(píng)估和平均每月工作時(shí)長(zhǎng)。4)模型評(píng)估構(gòu)建好決策樹模型之后,還需要使用測(cè)試集對(duì)決策樹算法的性能進(jìn)行評(píng)估。大數(shù)據(jù)應(yīng)用平臺(tái)提供“分類評(píng)估”節(jié)點(diǎn)對(duì)算法性能進(jìn)行評(píng)估,該節(jié)點(diǎn)有兩個(gè)輸入:模型和表格數(shù)據(jù),輸出包括錯(cuò)誤率,混淆矩陣,ROC圖等評(píng)估結(jié)果。執(zhí)行“分類評(píng)估”節(jié)點(diǎn),得到評(píng)估結(jié)果,可以查看分類評(píng)估報(bào)告,如圖6-10所示。決策樹算法構(gòu)建的離職預(yù)測(cè)模型,在測(cè)試集上總體錯(cuò)誤率為2.9%,總體準(zhǔn)確率為97.1%。對(duì)于預(yù)測(cè)問(wèn)題來(lái)說(shuō),往往關(guān)注的并不是模型的準(zhǔn)確率。更多地關(guān)注預(yù)測(cè)離職且實(shí)際離職的那部分員工所占的比率,即查準(zhǔn)率。從評(píng)估報(bào)告中見離職的查準(zhǔn)率等于97.09%,說(shuō)明提供的預(yù)測(cè)可能離職的名單中最后有97.09%的員工真正離職了,離職預(yù)測(cè)的準(zhǔn)確性很高。另外,還需要關(guān)注提供的名單是不是盡可能地覆蓋了所有可能離職的員工名單,即查全率,也叫命中率。評(píng)估報(bào)告見離職查全率等于88.57%。提供的離職名單在準(zhǔn)確性和覆蓋度上都比較好。另外,點(diǎn)擊“ROC表”->“ROC圖”可以查看ROC曲線。ROC圖有兩條曲線,黑色的這條表示未離職類別的ROC曲線,紫色這條表示離職類別的ROC曲線,這兩條曲線都很陡峭的,曲線下的面積AUC都為0.94999,表示模型的預(yù)測(cè)效果很好,如圖6-11所示。圖6-11決策樹模型的ROC曲線(3)模型應(yīng)用訓(xùn)練好了員工離職決策樹模型后,可以使用“應(yīng)用”節(jié)點(diǎn)基于訓(xùn)練好的決策樹預(yù)測(cè)模型對(duì)公司其他未離職的員工進(jìn)行預(yù)測(cè)。預(yù)測(cè)的分析工作流如圖6-12所示?!皯?yīng)用”節(jié)點(diǎn)有兩個(gè)輸入端口:數(shù)據(jù)表和模型,將訓(xùn)練好的決策數(shù)據(jù)模型和新數(shù)據(jù)表與“應(yīng)用”節(jié)點(diǎn)相連接,執(zhí)行該節(jié)點(diǎn),它會(huì)在原始數(shù)據(jù)的基礎(chǔ)上增加新的兩列,一列為目標(biāo)變量預(yù)測(cè)值(Predicted_Class),另一列為概率值(Confidence_Value),即可信度,如圖6-13所示。通過(guò)“過(guò)濾”節(jié)點(diǎn)可以將可能有離職傾向的員工篩選出來(lái),提交給人力資源管理部門,留住優(yōu)秀人才。本案例通過(guò)決策樹算法構(gòu)建了針對(duì)優(yōu)秀的有經(jīng)驗(yàn)的員工的離職預(yù)測(cè)模型,該模型可以對(duì)員工的離職進(jìn)行預(yù)測(cè),能夠提前預(yù)判,在員工產(chǎn)生離職想法之前,及時(shí)提供解決方案,留住優(yōu)秀有經(jīng)驗(yàn)的人才。同時(shí)識(shí)別出影響優(yōu)秀員工辭職的主要因素,如對(duì)公司的滿意度、員工的工作年限、績(jī)效評(píng)估以及平均每月工作時(shí)長(zhǎng)。圖6-12員工離職預(yù)測(cè)分析工作流4.分析過(guò)程-基于Python(1)數(shù)據(jù)讀取與預(yù)處理首先讀取員工離職數(shù)據(jù)集,代碼如下:圖6-13應(yīng)用節(jié)點(diǎn)的預(yù)測(cè)結(jié)果第2行代碼用read_excel()函數(shù)讀取Excel文件數(shù)據(jù)賦給變量df。第3行代碼用df.head()查看表格的前5行,結(jié)果如下所示:“是否離職”列中的數(shù)字1代表離職,數(shù)字0代表未離職。第4行代碼用或“|”運(yùn)算符來(lái)篩選優(yōu)秀員工,優(yōu)秀員工的定義請(qǐng)參考前面,并賦給變量df。使用df.shape可以查看篩選后的行數(shù)為9772行。第5行代碼用replace()函數(shù)對(duì)“薪資水平”列的內(nèi)容需要進(jìn)行數(shù)值化處理,將文本“l(fā)ow”、“medium”、“high”分別替換為數(shù)字0、1、2。第6行代碼用get_dummies()函數(shù)來(lái)創(chuàng)建啞特征,get_dummies默認(rèn)會(huì)對(duì)DataFrame中所有字符串類型的列進(jìn)行獨(dú)熱編碼。特征編碼后的數(shù)據(jù)結(jié)果如下所示:雖然決策樹算法本身是天然支持離散型變量的機(jī)器學(xué)習(xí)算法,但是Scikit-Learn中的決策樹算法只支持?jǐn)?shù)值型變量,因此需要對(duì)離散型變量先進(jìn)行特征編碼,將其轉(zhuǎn)換為數(shù)值型變量,在這個(gè)例子里對(duì)于“薪資水平”變量使用數(shù)字編碼,因?yàn)樽兞孔陨泶嬖陧樞颍怯行蜃兞?。?duì)于“職位”變量使用獨(dú)熱編碼。(2)提取特征變量和目標(biāo)變量建模前,首先將特征變量和目標(biāo)變量分別提取出來(lái),代碼如下:第1行代碼用drop()函數(shù)刪除“是否離職”列,將剩下的數(shù)據(jù)作為特征變量賦給變量X。第2行代碼用DataFrame使用列名提取具體列的方式提取“是否離職”列作為目標(biāo)變量,并賦給變量y。(3)劃分訓(xùn)練集和測(cè)試集提取完特征變量和目標(biāo)變量后,還需要將原始數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集。訓(xùn)練集用于進(jìn)行模型訓(xùn)練,測(cè)試集用于檢驗(yàn)?zāi)P陀?xùn)練的結(jié)果,代碼如下:第1行代碼從Scikit-Learn庫(kù)中引入train_test_split()函數(shù)。第2行代碼用train_test_split()函數(shù)劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測(cè)試集,其中X_train、y_train為訓(xùn)練集數(shù)據(jù),X_test、y_test為測(cè)試集數(shù)據(jù),訓(xùn)練集數(shù)據(jù)有6840條,測(cè)試集數(shù)據(jù)有2932條。案例中,test_size設(shè)置為0.3,表示選取30%的數(shù)據(jù)用于測(cè)試。如果數(shù)據(jù)量較多,也可以將其設(shè)置為0.1,即分配更少比例的數(shù)據(jù)用于測(cè)試,分配更多比例的數(shù)據(jù)用于訓(xùn)練。因?yàn)閠rain_test_split()函數(shù)每次劃分?jǐn)?shù)據(jù)都是隨機(jī)的,所以如果想讓每次劃分?jǐn)?shù)據(jù)的結(jié)果保持一致,可以設(shè)置random_state參數(shù),這里設(shè)置的數(shù)字123沒有特殊含義,它只是一個(gè)隨機(jī)數(shù)種子,也可以設(shè)置成其他數(shù)字。(4)模型構(gòu)建劃分好訓(xùn)練集和測(cè)試集之后,就可以從Scikit-Learn庫(kù)中引入決策樹模型進(jìn)行模型訓(xùn)練了,代碼如下:第1行代碼從Scikit-Learn庫(kù)中引入分類決策樹模型DecisionTreeClassifier。第2行代碼設(shè)置決策樹的參數(shù)max_depth(樹的最大深度)為5,并設(shè)置隨機(jī)狀態(tài)參數(shù)random_state為數(shù)字123,使每次程序運(yùn)行的結(jié)果保持一致,最后將其賦給變量dt_model。第3行代碼用fit()函數(shù)進(jìn)行模型訓(xùn)練,傳入的參數(shù)就是前面劃分出的訓(xùn)練集數(shù)據(jù)。(5)模型評(píng)估與預(yù)測(cè)訓(xùn)練好模型后,需要使用測(cè)試集對(duì)模型進(jìn)行評(píng)估。直接預(yù)測(cè)是否離職這里把測(cè)試集中的數(shù)據(jù)導(dǎo)入模型中進(jìn)行預(yù)測(cè),代碼如下,其中model就是前面訓(xùn)練好的決策樹模型:predict()函數(shù)將直接打印預(yù)測(cè)結(jié)果,其中0為預(yù)測(cè)不離職,1為預(yù)測(cè)離職。想要查看測(cè)試集的預(yù)測(cè)準(zhǔn)確度,可以使用accuracy_score()函數(shù),代碼如下:將score打印輸出,結(jié)果為0.9696,即模型對(duì)整個(gè)測(cè)試集的預(yù)測(cè)準(zhǔn)確度為96.96%。
上面是用accuracy_score()函數(shù)來(lái)獲取模型評(píng)分,其實(shí)Scikit-Learn庫(kù)的決策樹分類算法自帶模型評(píng)分功能,代碼如下:這里的dt_model為上面訓(xùn)練好的決策樹模型,score()函數(shù)會(huì)自動(dòng)根據(jù)X_test的值計(jì)算出預(yù)測(cè)值,然后去和實(shí)際值進(jìn)行比對(duì),從而計(jì)算出預(yù)測(cè)準(zhǔn)確度,最后同樣可以得到評(píng)分score為0.9696。2)預(yù)測(cè)不離職和離職的概率決策樹分類模型在本質(zhì)上預(yù)測(cè)的并不是精確的0或1的分類,而是預(yù)測(cè)屬于某一分類的概率。想要查看預(yù)測(cè)為各個(gè)分類的概率,可以通過(guò)如下代碼:第1行代碼獲得的y_pred_proba是一個(gè)二維數(shù)組,數(shù)組左列為分類=0的概率,右列為分類=1的概率。第2行代碼將其轉(zhuǎn)換為DataFrame格式以方便查看。前面直接預(yù)測(cè)是否離職,其實(shí)是看屬于哪種分類的概率更大。例如,第1行數(shù)據(jù)的不離職概率0.983850大于離職概率0.016150,所以預(yù)測(cè)結(jié)果為不離職。3)模型預(yù)測(cè)效果評(píng)估對(duì)于分類模型,不僅要關(guān)心整體的預(yù)測(cè)準(zhǔn)確度,也關(guān)心模型在每一類樣本里面的表現(xiàn),此時(shí)可以使用混淆矩陣來(lái)查看,python中使用confusion_matrix()函數(shù),代碼如下:第1行代碼引入confusion_matrix()函數(shù);第2行代碼為confusion_matrix傳入測(cè)試集的目標(biāo)變量真實(shí)值y_test和預(yù)測(cè)值y_pred。將混淆矩陣cf_mat打印輸出,結(jié)果如下所示:可以看到,實(shí)際離職的594(67+527)人中有527人被準(zhǔn)確預(yù)測(cè),命中率(TPR)為527/594=88.72%;實(shí)際未離職的2338(2316+22)人中有22人被誤判為離職,假警報(bào)率(FPR)為22/2338=0.94%。需要注意的是,這里的TPR和FPR都是在閾值為50%的條件下計(jì)算的。Python還可以通過(guò)如下代碼計(jì)算命中率,無(wú)須手動(dòng)計(jì)算:運(yùn)行結(jié)果如下所示:其中recall對(duì)應(yīng)的就是命中率(又稱召回率和查全率),可以看到,對(duì)于分類為1的命中率為0.89,和之前手動(dòng)計(jì)算的結(jié)果0.8872一致。accuracy表示整體準(zhǔn)確度,其值為0.97,和之前計(jì)算出的0.9696是一致的;support表示樣本數(shù),其中2338為實(shí)際類別是0的樣本數(shù),348為實(shí)際類別是1的樣本數(shù),2932為測(cè)試集的全部樣本數(shù)。此外,模型的
precision(精準(zhǔn)率)為0.96,因此,模型在測(cè)試集上的預(yù)測(cè)效果還不錯(cuò)。對(duì)于分類模型,還可以繪制ROC曲線來(lái)評(píng)估模型。我們希望在閾值相同的情況下,假警報(bào)率盡可能小,命中率盡可能高,即ROC曲線盡可能陡峭,其對(duì)應(yīng)的AUC值(ROC曲線下方的面積)盡可能高。在Python中,通過(guò)如下代碼就可以求出不同閾值下的命中率(TPR)和假警報(bào)率(FPR)的值,從而繪制出ROC曲線:第1行代碼引入roc_curve()函數(shù);第2行代碼為roc_curve()函數(shù)傳入測(cè)試集的目標(biāo)變量y_test及預(yù)測(cè)的離職概率y_pred_proba[:,1],計(jì)算出不同閾值下的命中率和假警報(bào)率,并將三者分別賦給變量fpr(假警報(bào)率)、tpr(命中率)、thres(閾值)。此時(shí)獲得的fpr、tpr、thres為3個(gè)一維數(shù)組,通過(guò)第3~6代碼可以將三者合并成一個(gè)二維數(shù)據(jù)表。通過(guò)打印roc_table查看不同閾值下的假警報(bào)率和命中率,結(jié)果如下所示:可見隨著閾值的下降,命中率和假警報(bào)率都在上升。其中,第一個(gè)閾值無(wú)含義,常設(shè)置為最大閾值,保證無(wú)記錄被選中。表格第2行表示只有當(dāng)某員工被預(yù)測(cè)為離職的概率≥100%(因?yàn)楦怕什粫?huì)超過(guò)100%,所以其實(shí)就是被預(yù)測(cè)為離職的概率等于100%),才判定其會(huì)離職,此時(shí)命中率為48.48%,即所有實(shí)際離職的員工中被預(yù)測(cè)為離職的員工占48.48%,在這種極端閾值條件下,該命中率已算很高了。第3行表示只有當(dāng)某員工被預(yù)測(cè)為離職的概率≥93.19%,才判定其會(huì)離職,此時(shí)命中率為88.72%,假警報(bào)率為0.94%,依此類推。已知不同閾值下的假警報(bào)率和命中率,可使用Matplotlib庫(kù)中的plot()函數(shù)繪制ROC曲線,代碼如下:第2行代碼是基于假警報(bào)率和命中率,用plot()函數(shù)繪制很陡峭的ROC曲線如圖6-14。圖6-14ROC曲線要求出ROC曲線下的AUC值,則可以通過(guò)如下代碼實(shí)現(xiàn):第1行代碼引入roc_auc_score()函數(shù);第2行代碼為roc_auc_score()函數(shù)傳入測(cè)試集的目標(biāo)變量y_test及預(yù)測(cè)的離職概率。使用print函數(shù)輸出AUC值為0.9664,預(yù)測(cè)效果還是不錯(cuò)的。6.4K近鄰算法6.4.1K近鄰算法介紹
6.4.2
K近鄰算法實(shí)現(xiàn)K近鄰算法是一種lazy-learning算法,算法不需要使用訓(xùn)練集進(jìn)行訓(xùn)練。K近鄰分類算法的工作原理是:存在一個(gè)樣本數(shù)據(jù)集合,也稱作為訓(xùn)練樣本集,并且樣本集中每個(gè)數(shù)據(jù)都存在標(biāo)簽,即已知樣本集中每一個(gè)數(shù)據(jù)與所屬分類的對(duì)應(yīng)關(guān)系。輸入沒有標(biāo)簽的新數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較,然后算法提取樣本最相似(最近鄰)數(shù)據(jù)的分類標(biāo)簽。一般來(lái)說(shuō),選擇樣本數(shù)據(jù)集中前K個(gè)最相似的數(shù)據(jù),這就是K近鄰算法中K的出處,通常K是不大于20的整數(shù)。最后,選擇K個(gè)最相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類,作為新數(shù)據(jù)的分類。K近鄰分類算法的實(shí)現(xiàn)步驟如下:計(jì)算距離:計(jì)算新數(shù)據(jù)與訓(xùn)練集中每個(gè)樣本的距離,按照距離從小到大的順序排序。選擇近鄰:選取與新數(shù)據(jù)距離最小的前K個(gè)點(diǎn)。判定類別:計(jì)算前K個(gè)點(diǎn)所在類別的出現(xiàn)頻率,返回出現(xiàn)頻率最高的類別作為新數(shù)據(jù)的預(yù)測(cè)分類。
6.4.3
K近鄰算法應(yīng)用案例1.案例概述圖像識(shí)別是機(jī)器學(xué)習(xí)領(lǐng)域一個(gè)非常重要的應(yīng)用場(chǎng)景,本節(jié)通過(guò)一個(gè)較為經(jīng)典的手寫數(shù)字識(shí)別模型來(lái)講解如何在實(shí)戰(zhàn)中應(yīng)用K近鄰算法。。2.數(shù)據(jù)集手寫數(shù)字識(shí)別,或者說(shuō)圖像識(shí)別的本質(zhì)就是把如圖6-15所示的圖片中的數(shù)字轉(zhuǎn)換成計(jì)算機(jī)能夠處理的數(shù)字形式。(1)圖像二值化通過(guò)圖像二值化可以將圖片大小為32×32的手寫數(shù)字“4”的圖片轉(zhuǎn)換成由0和1組成的“新的數(shù)字4”,如圖6-16所示。數(shù)字1代表有顏色的地方,數(shù)字0代表無(wú)顏色的地方,這樣就完成了手寫數(shù)字識(shí)別的第一步。圖6-16數(shù)字4的二值化表示(2)二維數(shù)組轉(zhuǎn)換為一維數(shù)組經(jīng)過(guò)圖像二值化處理獲得32×32的0-1矩陣,為了方便進(jìn)行機(jī)器學(xué)習(xí)建模,還需要對(duì)這個(gè)二維矩陣進(jìn)行簡(jiǎn)單的處理:在第1行數(shù)字之后依次拼接第2~32行的數(shù)字,得到一個(gè)1×1024的一維數(shù)組。利用這種一維數(shù)組就可以計(jì)算不同手寫數(shù)字之間的距離,或者說(shuō)這些手寫數(shù)字的相似度,從而進(jìn)行手寫數(shù)字識(shí)別。MNIST數(shù)據(jù)集是一個(gè)手寫體識(shí)別數(shù)據(jù)集,來(lái)自美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所。它包含了各種手寫數(shù)字圖片以及每張圖片對(duì)應(yīng)的數(shù)字標(biāo)簽,圖片大小為28*28,且為黑白圖片。其中,60000張手寫數(shù)字圖片作為訓(xùn)練數(shù)據(jù),由來(lái)自250個(gè)不同人手寫的數(shù)字構(gòu)成,其中50%是高中學(xué)生,50%來(lái)自人口普查局的工作人員;10000張圖片作為測(cè)試數(shù)據(jù)。本案例使用的數(shù)據(jù)集共有1934個(gè)二值化處理好的手寫數(shù)字0~9,每一行是一個(gè)手寫數(shù)字的一維數(shù)組。“對(duì)應(yīng)數(shù)字”列是手寫數(shù)字,也是目標(biāo)變量;其余列為該手寫數(shù)字對(duì)應(yīng)的1024維特征值,也是預(yù)測(cè)變量。3.分析過(guò)程-大數(shù)據(jù)應(yīng)用平臺(tái)在大數(shù)據(jù)應(yīng)用平臺(tái)的工作流功能模塊中,使用分析組件構(gòu)建分析工作流,實(shí)現(xiàn)手寫數(shù)字預(yù)測(cè)模型的構(gòu)建和評(píng)估,模型構(gòu)建和評(píng)估的分析流程如圖6-17所示:(1)劃分訓(xùn)練集和測(cè)試集在進(jìn)行模型構(gòu)建和評(píng)估前,通過(guò)“數(shù)據(jù)分割”節(jié)點(diǎn),將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。本案例將原始數(shù)據(jù)集中的20%劃分為測(cè)試集,同時(shí)選擇“對(duì)應(yīng)數(shù)字”列為分層列,以避免少數(shù)類沒有參與訓(xùn)練建模的問(wèn)題。數(shù)據(jù)分割后,訓(xùn)練集共1548條,用于進(jìn)行模型訓(xùn)練;測(cè)試集共386條,用于檢驗(yàn)?zāi)P托阅艿膬?yōu)劣。(2)模型構(gòu)建本案例使用“K近鄰”節(jié)點(diǎn)計(jì)算新樣本與原始訓(xùn)練集中各個(gè)樣本的歐氏距離,取新樣本的K個(gè)近鄰點(diǎn),并以大多數(shù)近鄰點(diǎn)所在的分類作為新樣本的分類。將“數(shù)據(jù)分割”節(jié)點(diǎn)的訓(xùn)練集輸出端口和“K近鄰”節(jié)點(diǎn)相連接,并對(duì)K近鄰節(jié)點(diǎn)的參數(shù)進(jìn)行設(shè)置,K近鄰節(jié)點(diǎn)的參數(shù)如下:預(yù)測(cè)變量:從表中選擇若干列作為預(yù)測(cè)變量,可以接受數(shù)值的列。這里選擇“對(duì)應(yīng)數(shù)字”列外的所有其他列。目標(biāo)變量:只能從表中選擇一列,且只接受字符型的列。這里選擇“對(duì)應(yīng)數(shù)字”列。近鄰數(shù):最近鄰居的數(shù)目,默認(rèn)值為1。這里設(shè)置為5,即選擇5個(gè)近鄰點(diǎn)來(lái)判定新樣本的分類。距離算法:用來(lái)計(jì)算數(shù)據(jù)點(diǎn)之間距離的方法,包括明氏距離、歐氏距離、曼氏距離和切比雪夫距離。這里選擇歐氏距離。(3)模型評(píng)估在測(cè)試集上,對(duì)“K近鄰”算法的性能進(jìn)行評(píng)估?!胺诸愒u(píng)估”節(jié)點(diǎn)可以實(shí)現(xiàn)分類模型的評(píng)估,點(diǎn)擊該節(jié)點(diǎn)可以查看分類評(píng)估報(bào)告,如圖6-18所示。圖6-17手寫數(shù)字預(yù)測(cè)模型構(gòu)建和評(píng)估的分析流程K-近鄰算法構(gòu)建的手寫數(shù)字預(yù)測(cè)模型,在測(cè)試集上總體錯(cuò)誤率為9.326%,總體預(yù)測(cè)正確率達(dá)到了90%以上。從評(píng)估報(bào)告中,數(shù)字3的預(yù)測(cè)精準(zhǔn)率比較低,為81.25%,低于其他類別,而數(shù)字4、8和9的查全率比較低,分別為78.38%、77.78%和73.17%,有超過(guò)20%的手寫圖片被錯(cuò)誤地預(yù)測(cè)為其他的數(shù)字。但總體上說(shuō),結(jié)果還比較好,可以保存該K-近鄰模型到用戶空間,便于在模型應(yīng)用階段在新數(shù)據(jù)集上預(yù)測(cè)手寫數(shù)字。另外,也可以利用ROC曲線來(lái)評(píng)估其預(yù)測(cè)效果,其評(píng)估方法與決策樹模型的評(píng)估方法是一樣的。(4)模型應(yīng)用根據(jù)評(píng)估結(jié)果,將“K近鄰”節(jié)點(diǎn)的模型輸出并保存到用戶空間,將得到的模型通過(guò)“應(yīng)用”節(jié)點(diǎn),應(yīng)用到新數(shù)據(jù)上,即可預(yù)測(cè)新數(shù)據(jù)集的手寫圖形的數(shù)字類別。預(yù)測(cè)的分析工作流如圖6-19所示。圖6-19模型應(yīng)用工作流執(zhí)行“應(yīng)用”節(jié)點(diǎn),在原始數(shù)據(jù)的基礎(chǔ)上增加新的兩列,一列為目標(biāo)變量的預(yù)測(cè)值(Predicted_Class),另一列為概率值(Confidence_Value),即可信度。
4.分析過(guò)程-基于Python(1)數(shù)據(jù)讀取首先通過(guò)pandas庫(kù)讀取數(shù)據(jù),代碼如下:通過(guò)打印df.head()查看表格的前5行,結(jié)果如下所示:其中第1列“對(duì)應(yīng)數(shù)字”為目標(biāo)變量y,其余1024列為特征變量X,接下來(lái)我們將利用這些數(shù)據(jù)搭建手寫數(shù)字識(shí)別模型。(2)提取特征變量和目標(biāo)變量在建模前,首先將特征變量和目標(biāo)變量分別提取出來(lái),代碼如下:(3)劃分訓(xùn)練集和測(cè)試集提取完特征變量和目標(biāo)變量后,將數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集,代碼如下:這里將test_size設(shè)置為0.2,表示選取20%的數(shù)據(jù)用于測(cè)試。random_state設(shè)置為123,使每次運(yùn)行程序得到的數(shù)據(jù)劃分結(jié)果保持一致。(4)模型構(gòu)建劃分好訓(xùn)練集和測(cè)試集之后,可以從Scikit-Learn庫(kù)中引入K近鄰算法進(jìn)行模型訓(xùn)練,代碼如下:第1行代碼從Scikit-Learn庫(kù)中引入K近鄰算法分類算法KNeighborsClassifier。第2行代碼設(shè)置參數(shù)n_neighbors為5來(lái)初始化KNN模型,并賦給變量knn_model,n_neighbors=5表示選擇5個(gè)近鄰點(diǎn)來(lái)決定新樣本的類別標(biāo)記。第3行代碼用fit()函數(shù)進(jìn)行模型訓(xùn)練,傳入的參數(shù)就是前面劃分出的訓(xùn)練集數(shù)據(jù)。(5)模型評(píng)估與預(yù)測(cè)通過(guò)如下代碼即可對(duì)測(cè)試集數(shù)據(jù)進(jìn)行預(yù)測(cè),預(yù)測(cè)對(duì)應(yīng)的數(shù)字,同時(shí)可以使用accuracy_score()函數(shù),查看測(cè)試集所有數(shù)據(jù)的預(yù)測(cè)準(zhǔn)確度:將score打印輸出,結(jié)果為0.9793,也就是說(shuō),模型對(duì)整個(gè)測(cè)試集的預(yù)測(cè)準(zhǔn)確度為97.93%。對(duì)于分類模型,不僅關(guān)心整體的預(yù)測(cè)準(zhǔn)確度,也關(guān)心模型在每一類樣本里面的表現(xiàn),Python可以通過(guò)如下代碼計(jì)算每一個(gè)類別的精準(zhǔn)率和命中率:代碼運(yùn)行結(jié)果如右表所示:可以看到,對(duì)于各個(gè)數(shù)字分類,模型的precision(精準(zhǔn)率)和recall(命中率)都比較高,超過(guò)90%。因此,模型在測(cè)試集上的預(yù)測(cè)效果還不錯(cuò)。另外,也可以利用ROC曲線來(lái)評(píng)估其預(yù)測(cè)效果,其評(píng)估方法與決策樹模型的評(píng)估方法是一樣的。6.5
樸素貝葉斯算法6.5.1
貝葉斯定理貝葉斯定理由英國(guó)數(shù)學(xué)家托馬斯·貝葉斯(ThomasBayes)提出的,用來(lái)描述兩個(gè)條件概率之間的關(guān)系。通常,事件A在事件B發(fā)生的條件下與事件B在事件A發(fā)生的條件下,它們兩者的概率并不相同,但是它們兩者之間存在一定的相關(guān)性,并具有以下公式,稱之為貝葉斯公式:其中:P(A)表示事件A發(fā)生的概率,是事件A的先驗(yàn)概率。比如在投擲骰子時(shí),P(2)指的是骰子出現(xiàn)數(shù)字“2”的概率,這個(gè)概率是六分之一。P(B)表示事件B發(fā)生的概率,是事件B的先驗(yàn)概率。P(B|A)是條件概率,表示在事件A
發(fā)生的條件下,事件B
發(fā)生的概率,條件概率是“貝葉斯公式”的關(guān)鍵所在,它也被稱為“似然概率”,
一般是通過(guò)歷史數(shù)據(jù)統(tǒng)計(jì)得到,一般不把它叫做先驗(yàn)概率,但從定義上也符合先驗(yàn)定義。P(A|B)是條件概率,表示在事件B
發(fā)生的條件下,事件A發(fā)生的概率,這個(gè)計(jì)算結(jié)果也被稱為“后驗(yàn)概率”,是在條件B下,A的后驗(yàn)概率。由上述描述可知,貝葉斯公式可以預(yù)測(cè)事件發(fā)生的概率,兩個(gè)本來(lái)相互獨(dú)立的事件,發(fā)生了某種“相關(guān)性”,此時(shí)就可以通過(guò)“貝葉斯公式”實(shí)現(xiàn)預(yù)測(cè)。6.5.2
樸素貝葉斯算法實(shí)現(xiàn)貝葉斯分類法是基于貝葉斯定理的統(tǒng)計(jì)學(xué)分類方法,是機(jī)器學(xué)習(xí)中應(yīng)用極為廣泛的分類算法之一。它通過(guò)預(yù)測(cè)一個(gè)給定的元組屬于一個(gè)特定類的概率,來(lái)進(jìn)行分類。樸素貝葉斯是貝葉斯模型當(dāng)中最簡(jiǎn)單的一種,其算法核心為貝葉斯定理。所有事物之間的特征都是相互獨(dú)立的,彼此互不影響,這就時(shí)“樸素”定義的由來(lái)。樸素貝葉斯分類假定一個(gè)屬性值對(duì)給定類的影響?yīng)毩⒂谄渌鼘傩缘闹?,該假定稱作類條件獨(dú)立。
6.5.3
樸素貝葉斯算法應(yīng)用案例本節(jié)以腫瘤預(yù)測(cè)模型為例,應(yīng)用樸素貝葉斯模型來(lái)預(yù)測(cè)腫瘤為良性或是惡性腫瘤。1.案例概述腫瘤性質(zhì)的判斷影響著患者的治療方式和痊愈速度。傳統(tǒng)的做法是醫(yī)生根據(jù)數(shù)十個(gè)指標(biāo)來(lái)判斷腫瘤的性質(zhì),預(yù)測(cè)效果依賴于醫(yī)生的個(gè)人經(jīng)驗(yàn)而且效率較低,而通過(guò)機(jī)器學(xué)習(xí)有望能快速預(yù)測(cè)腫瘤的性質(zhì)2.數(shù)據(jù)集本案例使用的數(shù)據(jù)集共有569組樣本。其中,良性腫瘤211例、惡性腫瘤358例。數(shù)據(jù)集中變量的詳細(xì)描述如表6-5所示,表格中的“腫瘤性質(zhì)”列為目標(biāo)變量,剩下的字段為特征變量,本案例只選取了6個(gè)特征變量,在醫(yī)療行業(yè)中實(shí)際用于判斷腫瘤性質(zhì)的特征變量要多得多。本案例的目的是根據(jù)這些數(shù)據(jù)搭建樸素貝葉斯模型,幫助醫(yī)生提高判斷效率,從而及早展開治療。表6-5腫瘤數(shù)據(jù)集字段含義說(shuō)明3.分析過(guò)程-大數(shù)據(jù)應(yīng)用平臺(tái)在大數(shù)據(jù)應(yīng)用平臺(tái)的工作流功能模塊中,使用分析組件構(gòu)建分析工作流,如圖6-20所示,實(shí)現(xiàn)腫瘤類型預(yù)測(cè)模型的構(gòu)建、評(píng)估和應(yīng)用的分析。(1)目標(biāo)變量類型轉(zhuǎn)換由于“腫瘤數(shù)據(jù)”表中的“腫瘤性質(zhì)”列是數(shù)值型,而樸素貝葉斯節(jié)點(diǎn)的目標(biāo)變量只接受字符型列,因此需要使用“列類型轉(zhuǎn)換”節(jié)點(diǎn)將列的類型從數(shù)值型轉(zhuǎn)換成字符型。(2)特征分析在建模之前,可以探索哪些變量與區(qū)分腫瘤的性質(zhì)有密切的相關(guān)?在大數(shù)據(jù)應(yīng)用平臺(tái)的自助報(bào)告中,采用箱型圖探索連續(xù)型變量與腫瘤性質(zhì)的關(guān)系,如圖6-21所示。圖6-20腫瘤類型預(yù)測(cè)模型分析工作流程從箱型圖上可以看出,“最大周長(zhǎng)”、“最大凹陷度”、“平均凹陷度”、“最大面積”、“最大半徑”和“平均灰度值”這六個(gè)變量在良性組中的中位數(shù)明顯高于惡性組,表現(xiàn)出了明顯的差異,說(shuō)明這些特征變量與目標(biāo)變量可能都有比較密切的關(guān)系。(3)劃分訓(xùn)練集和測(cè)試集在進(jìn)行模型構(gòu)建和評(píng)估前,通過(guò)“數(shù)據(jù)分割”節(jié)點(diǎn),將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。本案例的569組數(shù)據(jù)并不算多,因此設(shè)定“測(cè)試集百分比”為20,即按8∶2的比例來(lái)劃分訓(xùn)練集和測(cè)試集。數(shù)據(jù)分割后,訓(xùn)練集共456條,用于進(jìn)行模型訓(xùn)練;測(cè)試集共113條,用于檢驗(yàn)?zāi)P托阅艿膬?yōu)劣。(4)模型構(gòu)建在訓(xùn)練集上,采用“樸素貝葉斯”算法建立模型。如圖6-22所示。將“數(shù)據(jù)分割”節(jié)點(diǎn)的訓(xùn)練集輸出端口與“樸素貝葉斯”節(jié)點(diǎn)相連接,并對(duì)樸素貝葉斯節(jié)點(diǎn)的參數(shù)進(jìn)行設(shè)置:預(yù)測(cè)變量:從表中可選擇若干列作,接受數(shù)值型或者字符型的列。這里選擇“最大周長(zhǎng)”、“最大凹陷度”、“平均凹陷度”、“最大面積”、“最大半徑”和“平均灰度值”。目標(biāo)變量:只能從表中選擇一列,且只接受字符型的列。這里選擇“腫瘤性質(zhì)”。先驗(yàn)概率:采用數(shù)據(jù)集默認(rèn)的值。(5)模型評(píng)估樸素貝葉斯算法構(gòu)建的腫瘤預(yù)測(cè)模型,如圖6-23在測(cè)試集上總體錯(cuò)誤率為4.425%,總體準(zhǔn)確率為98.23%。這里關(guān)注的并不是模型的總體準(zhǔn)確率,而更關(guān)注預(yù)測(cè)惡性腫瘤的準(zhǔn)確性。從評(píng)估報(bào)告中,見惡性腫瘤(類名=1)的查準(zhǔn)率等于94.94%,這說(shuō)明提供的預(yù)測(cè)可能是惡性腫瘤的病人名單中最后有94.94%的病人真的被診斷位惡性腫瘤,惡性腫瘤預(yù)測(cè)的準(zhǔn)確性很高。另外,還需要關(guān)注提供的病人名單是不是盡可能地覆蓋了所有可能是惡性腫瘤的病人名單,即查全率??梢姁盒阅[瘤的查全率等于98.68%。因此,模型在測(cè)試集上的預(yù)測(cè)腫瘤性質(zhì)的效果不錯(cuò),提供的病人名單在準(zhǔn)確性和覆蓋度上都比較好,可以保存該樸素貝葉斯模型到用戶空間,便于在模型應(yīng)用階段在新的病人數(shù)據(jù)集上使用。另外,也可以利用ROC曲線來(lái)評(píng)估其預(yù)測(cè)效果。圖6-22樸素貝葉斯節(jié)點(diǎn)(6)模型應(yīng)用最后,將得到的腫瘤預(yù)測(cè)模型通過(guò)“應(yīng)用”節(jié)點(diǎn),應(yīng)用到新數(shù)據(jù)上,得到預(yù)測(cè)結(jié)果。如圖6-24所示。圖6-23樸素貝葉斯模型的分類評(píng)估報(bào)告執(zhí)行該節(jié)點(diǎn),它會(huì)在原始數(shù)據(jù)的基礎(chǔ)上增加新的兩列,一列為目標(biāo)變量的預(yù)測(cè)值(Predicted_Class),另一列為概率值(Confidence_Value),即可信度。通過(guò)“過(guò)濾”節(jié)點(diǎn)可以將可能有是惡性腫瘤的病人篩選出來(lái),輔助醫(yī)生提高診斷效率,從而及早展開治療。圖6-24樸素貝葉斯模型應(yīng)用4.分析過(guò)程-基于Python(1)數(shù)據(jù)讀取首先通過(guò)pandas庫(kù)讀取數(shù)據(jù),代碼如下:通過(guò)打印df.head()查看表格的前5行,結(jié)果如右圖所示:其中
“腫瘤性質(zhì)”為目標(biāo)變量y,其余6列為特征變量X,接下來(lái)將利用這些數(shù)據(jù)搭建腫瘤性質(zhì)預(yù)測(cè)模型。(2)提取特征變量和目標(biāo)變量在建模前,首先將特征變量和目標(biāo)變量分別提取出來(lái),代碼如下:第1行代碼用drop()函數(shù)刪除“腫瘤性質(zhì)”列,即目標(biāo)變量,其余的作為特征變量賦給變量X。第2行代碼提取“腫瘤性質(zhì)”列作為目標(biāo)變量賦給y。(3)劃分訓(xùn)練集和測(cè)試集提取完特征變量和目標(biāo)變量后,將數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集,代碼如下:這里將test_size設(shè)置為0.2,表示選取20%的數(shù)據(jù)用于測(cè)試。stratify=y,表示劃分后的訓(xùn)練集和測(cè)試集中的腫瘤性質(zhì)類別的比例與目標(biāo)變量y中腫瘤性質(zhì)類別的比例保持一致。random_state設(shè)置為123,使每次運(yùn)行程序得到的數(shù)據(jù)劃分結(jié)果保持一致。劃分后的訓(xùn)練集有455組數(shù)據(jù),測(cè)試集有114組數(shù)據(jù)。(4)模型構(gòu)建劃分好訓(xùn)練集和測(cè)試集之后,可以從Scikit-Learn庫(kù)中引入K近鄰算法進(jìn)行模型訓(xùn)練,代碼如下:第1行代碼從Scikit-Learn庫(kù)中引入樸素貝葉斯模型(naive_bayes),并使用應(yīng)用場(chǎng)景最為廣泛的高斯樸素貝葉斯模型(GaussianNB),它適用于任何連續(xù)數(shù)值型的數(shù)據(jù)集。第2行代碼將模型賦給變量nb_model,這里沒有設(shè)置參數(shù),即使用默認(rèn)參數(shù)。第3行代碼用fit()函數(shù)訓(xùn)練模型,其中傳入的參數(shù)就是前面獲得的訓(xùn)練集數(shù)據(jù)X_train、y_train。至此,一個(gè)樸素貝葉斯模型便搭建完成了,之后就可以利用模型來(lái)進(jìn)行預(yù)測(cè)。(5)模型評(píng)估與預(yù)測(cè)通過(guò)如下代碼即可對(duì)測(cè)試集數(shù)據(jù)進(jìn)行預(yù)測(cè),預(yù)測(cè)腫瘤的性質(zhì)。通過(guò)打印輸出y_pred[0:100]查看前100個(gè)預(yù)測(cè)結(jié)果。想要查看測(cè)試集的預(yù)測(cè)準(zhǔn)確度,可以使用accuracy_score()函數(shù),python代碼如下:將score打印輸出,結(jié)果為0.9824,也就是說(shuō),模型對(duì)整個(gè)測(cè)試集的預(yù)測(cè)準(zhǔn)確度為0.9824。說(shuō)明114組測(cè)試集數(shù)據(jù)中,約112組數(shù)據(jù)預(yù)測(cè)正確,2組數(shù)據(jù)預(yù)測(cè)錯(cuò)誤。對(duì)于分類模型,不僅要關(guān)心整體的預(yù)測(cè)準(zhǔn)確度,也要關(guān)心模型在每一類樣本里面的表現(xiàn),Python可以通過(guò)如下代碼計(jì)算每一個(gè)類別的精準(zhǔn)率和命中率:運(yùn)行結(jié)果為:可以看到,對(duì)于惡性腫瘤的預(yù)測(cè),模型的precision(精準(zhǔn)率)=0.99和recall(命中率)=0.99都比較高,因此,模型對(duì)于預(yù)測(cè)腫瘤性質(zhì)的效果還不錯(cuò)。6.6
支持向量機(jī)算法6.6.1
支持向量機(jī)算法介紹支持向量機(jī)(SupportVectorMachine,SVM)是一種基于統(tǒng)計(jì)學(xué)習(xí)理論的模式識(shí)別方法,
屬于有監(jiān)督學(xué)習(xí)模型,主要用于解決數(shù)據(jù)分類問(wèn)題。SVM將每個(gè)樣本數(shù)據(jù)表示為空間中的點(diǎn),使不同類別的樣本點(diǎn)盡可能明顯地區(qū)分開。通過(guò)將樣本的向量映射到高維空間中,尋找最優(yōu)區(qū)分兩類數(shù)據(jù)的超平面,使各分類到超平面的距離最大化,距離越大表示SVM的分類誤差越小。通常SVM用于二元分類問(wèn)題,對(duì)于多元分類可將其分解為多個(gè)二元分類問(wèn)題,再進(jìn)行分類,主要的應(yīng)用場(chǎng)景有圖像分類、文本分類、面部識(shí)別、垃圾郵件檢測(cè)等領(lǐng)域。SVM的主要思想可以概括以下兩點(diǎn):(1)高維映射:對(duì)于線性不可分的情況,通過(guò)使用非線性高維映射,將低維輸入空間線性不可分的樣本轉(zhuǎn)化到高維特征空間,如圖6-25所示,使其線性可分,從而使得高維特征空間采用線性算法對(duì)樣本的非線性特征進(jìn)行線性分析成為可能。這個(gè)非線性高維映射稱之為核函數(shù),選擇不同的核函數(shù),可以生成不同的SVM。(2)最佳超平面:基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化理論在特征空間中構(gòu)建最優(yōu)分割超平面,一個(gè)最優(yōu)超平面可以盡最大可能地把正負(fù)類樣本分開,使得學(xué)習(xí)器得到全局最優(yōu)化。圖6-25
經(jīng)過(guò)高維映射后,二維分布的樣本點(diǎn)變成了三維分布6.6.2
支持向量機(jī)算法實(shí)現(xiàn)支持向量機(jī)模型由簡(jiǎn)單到復(fù)雜分為以下三種:線性可分支持向量機(jī)(LinearSupportVectorMachineInLinearlySeparableCase),樣本是線性可分,對(duì)應(yīng)的最大間隔類型為硬間隔最大化,即分類超平面要嚴(yán)格滿足每個(gè)樣本都分類正確。線性支持向量機(jī)(LinearSupportVectormachine),當(dāng)樣本近似線性可分,引入松弛因子,可以得到一個(gè)線性分類器,對(duì)應(yīng)的最大間隔類型為軟間隔最大化,即戰(zhàn)略性地將那些噪聲數(shù)據(jù)放棄,得到一個(gè)對(duì)于大部分樣本都可以正確分類的超平面。非線性支持向量機(jī)(Non-LinearSupportVectorMachine),當(dāng)樣本非線性可分時(shí),即使引入松弛因子也不能得到一個(gè)近似線性可分的結(jié)果時(shí),采用核技術(shù)進(jìn)行特征映射,在高維空間采用軟間隔最大化方法得到一個(gè)非線性模型,對(duì)應(yīng)的最大間隔類型為核映射+軟間隔最大化。在實(shí)際應(yīng)用中很少有線性問(wèn)題,支持向量機(jī)模型應(yīng)用最多的是第三種模型。然而,復(fù)雜模型是簡(jiǎn)單模型的改進(jìn),而且通過(guò)核函數(shù)映射就能將低維的非線性問(wèn)題轉(zhuǎn)化為高維空間的線性問(wèn)題。1.線性可分支持向量機(jī)首先假設(shè)有兩分類數(shù)據(jù),如圖6-26所示。圖6-26數(shù)據(jù)分布圖現(xiàn)在要找出一條最佳的分割線,將兩類數(shù)據(jù)分隔開。對(duì)于線性可分兩分類數(shù)據(jù),支持向量機(jī)就是條直線,對(duì)于高維數(shù)據(jù)點(diǎn)就是一個(gè)超平面,如圖6-27所示的三條直線都可以將上圖中的兩類數(shù)據(jù)分開來(lái)。當(dāng)然,除了a、b、c外還有無(wú)數(shù)條分割線,那么,在這些分割線中哪條是最完美的呢?目標(biāo)是選擇一條具有較強(qiáng)分類能力的直線,即較穩(wěn)定的分類結(jié)果和較強(qiáng)的抗噪聲能力。圖6-27多種分隔方法假如在上圖中又增加了一些數(shù)據(jù),如圖6-28所示。由于新增了樣本數(shù)據(jù),相對(duì)于直線b而言,直線a與c對(duì)樣本變化的適應(yīng)性變差,使用直線a進(jìn)行分類,標(biāo)記的圓形點(diǎn)會(huì)被分到三角形中,使用直線c進(jìn)行分類,標(biāo)記的三角形點(diǎn)會(huì)被分到圓形中。如何找到最優(yōu)分類數(shù)據(jù)的分割線,使得具有最優(yōu)的數(shù)據(jù)分類能力呢?這條分界線要盡可能地遠(yuǎn)離兩類數(shù)據(jù)點(diǎn),即數(shù)據(jù)集的邊緣點(diǎn)到分界線的距離d最大,這里虛線穿過(guò)的邊緣點(diǎn)就叫作支持向量,分類間隔2d,如圖6-29所示。這里的數(shù)據(jù)點(diǎn)到超平面的距離就是間隔(margin),當(dāng)間隔越大,這條分割線(分類器)也就越健壯,當(dāng)有新的數(shù)據(jù)點(diǎn)的時(shí)候,使用這條分割線得到的分類結(jié)果也就越可信。圖6-29最優(yōu)分界線圖6-28增加樣本后的數(shù)據(jù)分布假設(shè)b為最優(yōu)分割線,那么此分割線方程為:現(xiàn)在將式(6-26)轉(zhuǎn)化成向量形式:式(6-27)只是在二維形式上的表示,如果擴(kuò)展到n維,那么式(6-27)將變成:所以可以根據(jù)式(6-28)將超平面方程寫成更一般的表達(dá)形式:現(xiàn)在已經(jīng)把超平面的函數(shù)表達(dá)式推導(dǎo)出來(lái),用函數(shù)區(qū)分兩類數(shù)據(jù),為每個(gè)樣本點(diǎn)x設(shè)置一個(gè)類別標(biāo)簽yi:則:由于超平面距離兩類數(shù)據(jù)支持向量的距離相等,且最大值為d,那么:注:這里D(t)為向量t到超平面的距離。由式(6-31)和式(6-32)處理可得:
對(duì)于式(6-33)兩邊同乘yi進(jìn)行歸一化處理:那么此時(shí)的分類間隔為:所以這里便轉(zhuǎn)化成求:而最大化2/||w||等價(jià)于最小化||w||,當(dāng)然也等價(jià)于最小化||w||2。為了下面優(yōu)化過(guò)程中對(duì)函數(shù)求導(dǎo)的方便,將求min(‖w‖)轉(zhuǎn)化為求式(6-37),即線性SVM最優(yōu)化問(wèn)題的數(shù)學(xué)描述:
其對(duì)偶形式為:
將式(6-38)帶入式(6-40)可得:將式(6-42)帶入式(6-39)可得最終優(yōu)化表達(dá)式:
其中,c為可選的常數(shù)。線性核函數(shù)是原始輸入空間的內(nèi)積,即特征空間和輸入空間的維度是一樣的,參數(shù)較少,運(yùn)算速度較快。一般情況下,在特征數(shù)量相對(duì)于樣本數(shù)量非常多時(shí),適合采用線性核函數(shù)。(2)多項(xiàng)式核函數(shù)多項(xiàng)式核函數(shù)(PolynomialKernel)的參數(shù)比較多,當(dāng)多項(xiàng)式階數(shù)高時(shí),復(fù)雜度會(huì)很高,對(duì)于正交歸一化后的數(shù)據(jù),可優(yōu)先選此核函數(shù),其表達(dá)式如下:
(4)Sigmoid核函數(shù)Sigmoid核函數(shù)來(lái)源于感知機(jī)中的激活函數(shù),SVM使用Sigmoid相當(dāng)于一個(gè)兩層的感知機(jī)網(wǎng)絡(luò),Sigmoid核函數(shù)表達(dá)式如下:
3)使用SMO等算法得到最佳超平面得到最佳分類面的表達(dá)式。非線性支持向量機(jī)模型核函數(shù)的選擇非常關(guān)鍵,而選定核函數(shù)后,核函數(shù)中的參數(shù)也直接影響了模型性能。因此,在非線性支持向量機(jī)模型中,需要優(yōu)化的超參數(shù)有懲罰參數(shù)C及核函數(shù)的參數(shù),如多項(xiàng)式核函數(shù)的階次p、高斯核函數(shù)的核函數(shù)寬度σ。6.6.3支持向量機(jī)算法應(yīng)用案例1.案例概述信用卡盜刷一般發(fā)生在持卡人信息被不法分子竊取后,復(fù)制卡片進(jìn)行消費(fèi)或信用卡被他人冒領(lǐng)后激活并消費(fèi)等情況下。一旦發(fā)生信用卡盜刷,持卡人和銀行都會(huì)遭受一定的經(jīng)濟(jì)損失。本節(jié)要運(yùn)用支持向量機(jī)分類算法搭建一個(gè)金融反欺詐模型。2.數(shù)據(jù)集本案例使用的數(shù)據(jù)集共有1000條客戶信用卡的交易數(shù)據(jù)。其中,有400個(gè)欺詐樣本,600個(gè)非欺詐樣本。數(shù)據(jù)集中變量的詳細(xì)描述如表6-6所示,表格中的“欺詐標(biāo)簽”列為目標(biāo)變量,若是盜刷信用卡產(chǎn)生的交易則標(biāo)記為1,代表欺詐,正常交易則標(biāo)記為0。剩下的字段為特征變量,本案例只選取了5個(gè)特征變量,在實(shí)際中使用的特征變量遠(yuǎn)比本案例多得多,根據(jù)這些數(shù)據(jù)搭建支持向量機(jī)模型。表6-6金融反欺詐數(shù)據(jù)集字段含義說(shuō)明3.分析過(guò)程-大數(shù)據(jù)應(yīng)用平臺(tái)在大數(shù)據(jù)應(yīng)用平臺(tái)的工作流功能模塊中,使用分析組件構(gòu)建分析工作流,實(shí)現(xiàn)金融發(fā)欺詐模型的構(gòu)建和評(píng)估,模型構(gòu)建和評(píng)估的分析流程如圖6-30所示:圖6-30金融反欺詐模型構(gòu)建和評(píng)估的分析流程(1)劃分訓(xùn)練集和測(cè)試集在進(jìn)行模型構(gòu)建和評(píng)估前,通過(guò)“數(shù)據(jù)分割”節(jié)點(diǎn),將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。本案例將原始數(shù)據(jù)集中的20%劃分為測(cè)試集,同時(shí)選擇“欺詐標(biāo)簽”列為分層列,以避免少數(shù)類沒有參與訓(xùn)練建模的問(wèn)題。數(shù)據(jù)分割后,訓(xùn)練集共800條,用于進(jìn)行模型訓(xùn)練;測(cè)試集共200條,用于檢驗(yàn)?zāi)P托阅艿膬?yōu)劣。(2)模型構(gòu)建本案例使用“支持向量機(jī)”節(jié)點(diǎn)來(lái)構(gòu)建金融發(fā)欺詐模型。將“數(shù)據(jù)分割”節(jié)點(diǎn)的訓(xùn)練集輸出端口和“支持向量”節(jié)點(diǎn)相連接,并對(duì)支持向量機(jī)節(jié)點(diǎn)的參數(shù)進(jìn)行設(shè)置,支持向量機(jī)節(jié)點(diǎn)的參數(shù)說(shuō)明如下:預(yù)測(cè)變量:從表中選擇若干列作為預(yù)測(cè)變量,可以接受數(shù)值的列。這里選擇除“欺詐標(biāo)簽”列之外的所有其他列。目標(biāo)變量:只能從表中選擇一列,且只接受字符型的列。這里選擇“欺詐標(biāo)簽”列。SVM類型:選擇SVM類型,有C-SVC、nu-SVC和one-classSVM三種分類方法,默認(rèn)為C-SVC。這里使用默認(rèn)值。成本參數(shù)C:若SVM類型為C-SVC,設(shè)置成本參數(shù)C,默認(rèn)值為1。這里設(shè)置為0.6。nu值:
若SVM類型為nu-SVC和one-classSVM時(shí),設(shè)置nu值。默認(rèn)值為0.5。階數(shù):
若核函數(shù)為多項(xiàng)式時(shí),需指定階數(shù),默認(rèn)值為3。Gamma:
除線性核函數(shù)外,其他三個(gè)核函數(shù)需要指定gamma,如果設(shè)為0,則使用1/樣本數(shù)。自動(dòng)標(biāo)準(zhǔn)化:是否需要對(duì)預(yù)測(cè)變量進(jìn)行規(guī)范化,默認(rèn)值為False。(3)模型評(píng)估在測(cè)試集上,對(duì)“支持向量機(jī)”算法的性能進(jìn)行評(píng)估?!胺诸愒u(píng)估”節(jié)點(diǎn)可以說(shuō)實(shí)現(xiàn)分類模型的評(píng)估,分類評(píng)估報(bào)告如圖6-31所示。支持向量機(jī)算法構(gòu)建的金融欺詐模型,在測(cè)試集上總體錯(cuò)誤率為22%。除了模型的總體準(zhǔn)確率,更應(yīng)關(guān)注識(shí)別欺詐的查準(zhǔn)率和查全率。從評(píng)估報(bào)告中可以看到欺詐(類名=1)的查準(zhǔn)率等于73.08%,這說(shuō)明提供的預(yù)測(cè)可能存在欺詐的客戶名單中最后有73.08%的客戶真的存在欺詐行為。另外,還需要關(guān)注提供的客戶名單是不是盡可能地覆蓋了所有可能有欺詐行為的客戶名單,即查全率。欺詐的查全率等于71.25%,即提供的預(yù)測(cè)可能存在欺詐的客戶名單占實(shí)際發(fā)生了欺詐的客戶的71.25%。因此,如果模型在測(cè)試集上的預(yù)測(cè)效果還不錯(cuò),可以保存該支持向量機(jī)模型到用戶空間,以便于在模型應(yīng)用階段在新的客戶數(shù)據(jù)集上使用。(4)模型應(yīng)用根據(jù)評(píng)估結(jié)果,將“支持向量機(jī)”節(jié)點(diǎn)的模型輸出并保存到用戶空間,將得到的模型通過(guò)“應(yīng)用”節(jié)點(diǎn),應(yīng)用到新數(shù)據(jù)上,即可預(yù)測(cè)新數(shù)據(jù)集的欺詐。預(yù)測(cè)的分析工作流如圖6-32所示。執(zhí)行“應(yīng)用”節(jié)點(diǎn),它會(huì)在原始數(shù)據(jù)的基礎(chǔ)上增加新的兩列,一列為目標(biāo)變量的預(yù)測(cè)值(Predicted_Class),另一列為概率值(Confidence_Value),即可信度。4.分析過(guò)程-基于Python(1)數(shù)據(jù)讀取首先通過(guò)pandas庫(kù)讀取數(shù)據(jù),代碼如下:通過(guò)打印df.head()查看表格的前5行,結(jié)果如下所示:其中第1列“欺詐標(biāo)簽”為目標(biāo)變量y,其余5列為特征變量X,接下來(lái)我們將利用這些數(shù)據(jù)搭建手寫數(shù)字識(shí)別模型。(2)提取特征變量和目標(biāo)變量首先將特征變量和目標(biāo)變量分別提取出來(lái),代碼如下:第1行代碼用drop()函數(shù)刪除“欺詐標(biāo)簽”列,即目標(biāo)變量,其余的作為特征變量賦給變量X。第2行代碼提取“欺詐標(biāo)簽”列作為目標(biāo)變量賦給y。(3)劃分訓(xùn)練集和測(cè)試集提取完特征變量和目標(biāo)變量后,將數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集,代碼如下:這里將test_size設(shè)置為0.2,表示選取20%的數(shù)據(jù)用于測(cè)試。random_state設(shè)置為123,使每次運(yùn)行程序得到的數(shù)據(jù)劃分結(jié)果保持一致。(4)模型構(gòu)建劃分好訓(xùn)練集和測(cè)試集之后,導(dǎo)入sklearn中的SVM工具包,核函數(shù)采用線性核函數(shù)進(jìn)行模型訓(xùn)練,代碼如下:第1行代碼從Scikit-Learn庫(kù)中引入支持向量機(jī)分類算法SVC;第2行代碼設(shè)置參數(shù)kernel為linear來(lái)初始SVC模型,并賦給變量svm_model。第3行代碼用fit()函數(shù)進(jìn)行模型訓(xùn)練,傳入的參數(shù)就是前面劃分出的訓(xùn)練集數(shù)據(jù)。(5)模型評(píng)估與預(yù)測(cè)想要查看測(cè)試集的預(yù)測(cè)準(zhǔn)確度,可以使用accuracy_score()函數(shù),如下代碼:將score打印輸出,結(jié)果為0.785,也就是說(shuō),模型對(duì)整個(gè)測(cè)試集的預(yù)測(cè)準(zhǔn)確度為78.5%。對(duì)于分類模型,需要關(guān)注查準(zhǔn)率和查全率,Python可以通過(guò)如下代碼計(jì)算每一個(gè)類別的查準(zhǔn)率和查全率:運(yùn)行結(jié)果如下所示:可見對(duì)于判斷是否欺詐,模型的precision(查準(zhǔn)率)為0.82,查準(zhǔn)率比較高,但是recall(查全率)為0.59,命中率不夠高,表示有一些實(shí)際是欺詐的客戶模型沒能識(shí)別出來(lái),遺漏了。因此,可以再調(diào)節(jié)模型的參數(shù),以獲得更優(yōu)的預(yù)測(cè)效果。
6.7
線性回歸
圖
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《誠(chéng)信管理》課件
- 《證券投資操作教程》課件
- 《病毒營(yíng)銷的應(yīng)用》課件
- 《纖維植物資源》課件
- 單位管理制度合并選集【職工管理】十篇
- 2024標(biāo)準(zhǔn)工程委托合同(28篇)
- 單位管理制度范例選集員工管理篇
- 《監(jiān)理對(duì)現(xiàn)場(chǎng)消防安》課件
- 《家庭財(cái)富管理》課件
- 《中醫(yī)婦科學(xué)》課程標(biāo)準(zhǔn)
- 人工智能 課件 第五章 機(jī)器學(xué)習(xí)
- 2024-2025學(xué)年上學(xué)期杭州初中英語(yǔ)八年級(jí)期末試卷
- 【MOOC】人因工程學(xué)-東北大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 中考數(shù)學(xué)復(fù)習(xí)第二章方程(組)與不等式(組)第三節(jié)分式方程及其應(yīng)用課件
- 中國(guó)慢性阻塞性肺疾病基層診療指南(2024年)解讀
- 水肥一體化智能種植管理技術(shù)實(shí)施方案
- 《中華人民共和國(guó)學(xué)前教育法》專題培訓(xùn)
- 《房產(chǎn)稅法》課件
- 產(chǎn)品質(zhì)量培訓(xùn)
- 海洋氣象預(yù)測(cè)研究
- 2024急性心梗護(hù)理常規(guī)
評(píng)論
0/150
提交評(píng)論