
R語言與分類算法的績效評估
關于分類算法我們之前也討論過了KNN、決策樹、naivebayes、SVM、ANN、logistic回歸。關于這么多的分類算法,我們自然需要考慮誰的表現更加的優秀。
既然要對分類算法進行評價,那么我們自然得有評價依據。到目前為止,我們討論分類的有效性都是基于分類成功率來說的,但是這個指標科學嗎?我們不妨考慮這么一個事實:一個樣本集合里有95個正例,5個反例,分類器C1利用似然的思想將所有的實例均分成正例,分類成功率為95%;分類器C2成功分出了80個正例,3個反例,分類成功率僅83%。我們可以說分類器C2不如C1嗎?這就充分表明了,分類成功率掩蓋了樣本是如何被分錯的事實。
那么我們怎么來充分反映分類的好壞呢?一個普遍使用的辦法就是報告分類矩陣(又稱混淆矩陣),他可以幫助我們更好地理解分類情況,許多的分類評價指標都是基于分類矩陣發展起來的。
一、考察數據與考察方法
當然,分類器在一個數據集上的好壞說明不了任何問題。以一個數據集的表現來評價分類器性能對分類器而言是極端不公正的也是極端不科學的。但是我們這里因為篇幅限制,也只能通過一個數據集來看看分類的好壞。我們使用一個在信用評分領域里大名鼎鼎的免費數據集,German Credit Dataset,你可以在UCI Machine LearningRepository找到(下載;數據描述)。
我們把這個數據分為兩部分,訓練數據train和測試數據test,我們感興趣的二分變量是good_bad,取值為{good, bad}。
信用評分指幫助貸款機構發放消費信貸的一整套決策模型及其支持技術。一般地,信用評分技術將客戶分為好客戶與壞客戶兩類,比如說,好客戶(good)能夠按期還本付息(履約),違約的就是壞客戶(bad)。具體做法是根據歷史上每個類別(履約、違約)的若干樣本,從已知的數據中考察借款人的哪些特征對其拖欠或違約行為有影響,從而測量借款人的違約風險,為信貸決策提供依據。
二、分類矩陣
一個完美的分類模型就是,如果一個客戶實際上(Actual)屬于類別good,也預測成(Predicted)good,處于類別bad,也就預測成bad。但從上面我們看到,一些實際上是good的客戶,根據我們的模型,卻預測他為bad,對一些原本是bad的客戶,卻預測他為good。我們需要知道,這個模型到底預測對了多少,預測錯了多少,分類矩陣就把所有這些信息,都歸到一個表里:
真實結果
+1-1
預測結果+1真正例(TP)偽正例(FP)
-1偽反例(FN)真反例(TN)
FP和FN就是我們常說的第一類錯誤與第二類錯誤,以這四個基本指標可以衍生出多個分類器評價指標。
我們來看看KNN、決策樹、naivebayes、SVM、ANN、logistic回歸這6
種基分類器的分類矩陣。
好了,分類矩陣全部算出來了,現在我們需要考慮的便是應該定義怎樣的評價指標了。
三、具體的靜態分類指標
常見的分類指標大致有如下幾個:
真實結果
+1-1
預測結果+1真正例(TP)偽正例(FP)
-1偽反例(FN)真反例(TN)
使用這些評價標準可以對分類器進行評估,尤其是其中的準確度或錯誤率,是比較常用的分類器性能評價標準。(在某些如推薦或信息獲取領域還會組合使用precision-recall作為評價指標)但是,所有這些性能評價標準都只在一個操作點有效,這個操作點即是選擇使得錯誤概率最小的點(我們這里選擇的是R中默認的分類,與最優閾值下的分類還是有很大差別的)。而且,其中大部分評價標準都有一個共同的弱點,即它們對于類別分布的改變顯得不夠穩健。當測試集中正例和反例的比例改變時,它們可能不再具有良好的性能,有時甚至不能被接受。
構造一個高正確率(precision)或者高召回率(recall)的分類器不難,但是要保證兩者同時成立卻是很難的。顯然如果任何樣本都判為正例,那么召回率很高但是正確率很難保證。構造一個同時使正確率和召回率最大的分類器也是具有挑戰性的。
我們來看看各種方法的各個指標情況:(上面是訓練集下面是測試集的數據)
methodFP ratespecificityrecallprecisionaccuracyF-score
logistic35.10%64.90%76.87%83.71%73.29%64.35%
Test36.36%63.64%76.55%84.73%73.00%64.86%
ANN50.61%49.39%87.93%79.74%76.13%70.11%
Test58.18%41.82%86.21%79.62%74.00%68.64%
SVM57.96%42.04%77.12%75.09%66.38%57.91%
Test58.18%41.82%80.00%78.38%69.50%62.70%
naive bayes44.49%55.51%84.32%81.11%75.50%68.39%
Test60.00%40.00%82.76%78.43%71.00%64.91%
C4.537.55%62.45%86.31%83.89%79.00%72.40%
Test60.00%40.00%82.76%78.43%71.00%64.91%
CART78.37%21.63%98.20%73.95%74.75%72.62%
Test85.45%14.55%96.55%74.87%74.00%72.28%
KNN21.63%78.37%95.14%90.88%90.00%86.46%
Test54.55%45.45%82.07%79.87%72.00%65.55%
將各個指標按降序排列看看哪個方法更好:
可以看到,對于這組非平衡數據,CART分類的結果是很棒的(主要考慮測試集),ANN也有不錯的表現,相比之下,在平衡數據里表現不俗的SVM反而表現很差,我們再來看看在業界應用很多的logistic回歸的表現:從recall的角度(預測為正例的真實正例占所有的真實正例的比例)來看,logistic回歸并不占優,也就是利用這個模型銀行決定發放貸款的人群僅占了值得給予貸款的人群的一小部分;再來看precision,從這個角度(預測為正例的比例在真正正例的比例)來看,logistic表現很好,也就是銀行估計你不會違約那么你違約發生的可能性真心不大,所以就可靠性來說,這個做法有一定的合理性;再看整個預測的準確性,logistic表現也很好(測試集角度)??赡苡捎贏NN的隱藏結點個數的選擇,CART的剪枝不太好把握,所以銀行選擇logistic模型作為貸款評估是有一定道理的?,F代分類器很多都不是簡單地給出一個0或1 的分類判定,而是給出一個分類的傾向程度,比如貝葉斯分類器輸出的分類概率。對于這些分類器,當你取不同閾值,就可以得到不同的分類結果及分類器評價指標。我們還可以看到,隨著閾值的減小(更多的客戶就會被歸為正例),recall和1-Specificity也相應增加(也即Specificity相應減少)。那么我們要動態的評價,一個合理的辦法就是把基于不同的閾值而產生的一系列recall和Specificity描繪到直角坐標上,就能更清楚地看到它們的對應關系。由于recally和Specificity的方向剛好相反,我們把sensitivity和1-Specificity描繪到同一個圖中,它們的對應關系,就得到了傳說中的ROC曲線,全稱是receiver operating characteristic curve,中文叫“接受者操作特性曲線”。
四、ROC曲線與AUC
受試者工作特征曲線 (receiver operatingcharacteristic curve,簡稱ROC曲線),又稱為感受性曲線(sensitivity curve)。得此名的原因在于曲線上各點反映著相同的感受性,它們都是對同一信號刺激的反應,只不過是在幾種不同的判定標準下所得的結果而已。接受者操作特性曲線就是以虛報概率為橫軸,擊中概率為縱軸所組成的坐標圖,和被試在特定刺激條件下由于采用不同的判斷標準得出的不同結果畫出的曲線。
(摘自:百度百科)
要分析ROC曲線,就得回到分類矩陣上,我們再來看看分類矩陣:
ROC繪制的就是在不同的閾值p下,TPR和FPR的點圖。所以ROC曲線的點是由不同的p造成的。所以你繪圖的時候,就用不同的p就行。
上圖便是利用logistic模型測算違約率的模型的ROC曲線(訓練集),我們可以看到在ROC曲線上會報告兩條線:一條實線,代表閾值變化時分類模型給出的TPR與FPR的變化情況;一條虛線,代表隨機猜測的TPR與FPR的變化情況。如果實線在虛線之上,那么恭喜你,你的預測模型比胡亂猜測要優秀的。如果在虛線之下,那么你還是放棄你的猜測辦法好了。
顯然,一個理想的模型會盡可能的處于左上角,這意味著兩類錯誤的都很低。這就告訴我們,可以計算ROC實線上的每一個點與(0,1)的距離,距離最小的那個點對應最佳閾值。我們分類時就應該這么去設置閾值,而非單純的設置0.5,上圖我們可以看出閾值取0.4時比0.5會好一些,我們來看看是不是這樣的:
當閾值為0.4時的分類矩陣:
訓練集 good bad 測試集 good bad
good45394 good11423
bad102151 bad3132
我們還可以利用R算出最優閾值0.4408,此時的分類矩陣(訓練集最優)
訓練集 good bad 測試集 good bad
good45187 good11422
bad104158 bad3133
與0.5時的分類矩陣相比:
訓練集goodbad測試集goodbad
good44286good11120
bad133159bad3435
可以看到分類效果還是有所改善的。
名稱訓練集測試集
閾值0.50.40.440.50.40.44
FP rate35.10%38.37%35.51%36.36%41.82%40.00%
specificity64.90%61.63%64.49%63.64%58.18%60.00%
recall76.87%81.62%81.26%76.55%78.62%82.29%
precision83.71%82.82%83.83%84.73%83.21%86.75%
accuracy73.29%75.50%76.13%73.00%73.00%76.96%
F-score64.35%67.60%68.12%64.86%65.42%71.38%
關于ROC下的最優閾值,簡單理解下的話,保證TPR同時代價FPR要盡量的小,那么我們建立max(TPR+(1-FPR))的模型,然后選合適的閾值p_0。這就說明用ROC比用一些靜態指標是要好很多的。而且ROC有一個更大的優點,就是可以基于成本效益來判決分類器好壞,比如說銀行處在擴張的階段,它吸納一個偽客戶的后果遠比放棄一個真客戶的后果要輕,于是我們比較分類器就應該在控制棄真錯誤的基礎上比較誰犯的取偽錯誤更少來評價。在這樣的指導思想下,我們可以判斷下圖的A與B誰更優秀。這是靜態指標肯定做不到的。
ROC曲線是根據與45度線的偏離來判斷模型好壞。圖示的好處是直觀,不足就是不夠精確。到底好在哪里,好了多少?一個自然的想法就是對曲線下的面積進行比較,這就傳說中的AUC(Area Under the ROC Curve,ROC曲線下的面積),不過也不是新東西,只是ROC的一個派生而已?;氐较惹澳菑圧OC曲線圖。45度線下的面積是0.5,ROC曲線與它偏離越大,ROC曲線就越向左上方靠攏,它下面的面積(AUC)也就應該越大。我們就可以根據AUC的值與0.5相比,來評估一個分類模型的預測效果(我們這里logistic分類器訓練集的auc約為0.78)。但是AUC僅僅給出的是分類器的平均性能值,這是不能代替對整條曲線的觀察的。
我們現在來說說ROC曲線的做法。為了畫出ROC曲線,分類器必須提供每個樣例被判為正例或者反例的可信度的值(在一些文獻中稱之為score)。如naive Bayes提供了一個可能性,logistic回歸中輸入到sigmoid函數中的數值或者sigmoid函數的輸出值,SVM中輸到sign函數里的數值都可以看做分類器預測強度的衡量值。為了畫出ROC曲線,首先要將分類樣例按照其預測強度排序,先從排名最低的開始,所有排名更低的都被判為反例,所有排名更高的都被判為正例,這就得到了對應的點(1,1)。然后,將其移到排名次低的樣例中去,如果該樣例是正例,那么修改TPR,否則修改FPR;依次做下去,可以得到ROC。
上述過程聽起來不是那么的明白,不妨閱讀以下下列代碼,就會發現一切是那么的一目了然。(以logistic模型考慮客戶分類為例)
reg1<-glm(good_bad~checking+history+duration+savings+property,data=trainset,family="binomial")
reg2<-step(reg1)
summary(reg2)
p<-predict(reg2,trainset)
TPR<-rep(0,length(p))
FPR<-rep(0,length(p))
for(i in 1:length(p)){
p0<-p[order(p)[i]];
label.true<-ifelse(trainset[,6]=="good",1,0)
label.pred<-1*(p>p0)
TPR[i]<-sum(label.pred*label.true)/sum(label.true)
FPR[i]<-sum(label.pred*(1-label.true))/sum(1-label.true)
}
plot(FPR,TPR,type="l",col=2)
points(c(0,1),c(0,1),type="l",lty=2)
得到如下圖形(與之前R給出的ROC相比是不是幾乎一樣的):
運行下列代碼還可以得到近似的AUC:
pos.label<-p[trainset[,6]=="good"]
neg.label<-p[trainset[,6]=="bad"]
mean(sample(pos.label,500000,replace=T) > sample(neg.label,500000,replace=T))
aucs<-replicate(1000,mean(sample(pos.label,1000,replace=T) > sample(neg.label,1000,replace=T)))
這里我解釋一下為什么這么算。首先我們回到ROC曲線的定義上,我們可以清楚的看到曲線下方的點都是正例得分超過反例的點。這也再次說明了AUC給出了分類器的平均性能值。于是,利用蒙特卡羅的辦法就可以輕松地得到面積。aucs<-replicate(1000,mean(sample(pos.label,1000,replace=T)> sample(neg.label,1000,replace=T)))代碼是為了利用bootstrap的辦法來看看模擬計算的好壞而寫的,可以忽略不看。
(tips:蒙特卡羅算面積的一個很直觀的解釋.假設你要計算上圖的面積,我們可以將這個圖片用1*1的紙張打印出來,倒1000顆豆子到紙上(假定豆子全在紙上),那么大數定律告訴我們,落在曲線下方的豆子數/總豆子數可以看做任取一點那一點落在曲線下方的概率=曲線下方的面積/總面積,總面積已知,故求出曲線下方的面積)
我們將logistic回歸,人工神經網絡(ANN)、支持向量機(SVM)、樸素貝葉斯(naivebayes)的ROC曲線繪制如下(訓練數據集):
在看看測試數據集的ROC曲線:
從上圖我們可以很容易理解為何業界人士那么喜歡logistic回歸作為信用評分的標準了吧,它不僅簡單而且好用。
為了精確的比較,我們還是來報告一下AUC:
LogisticANNSVMBayes
訓練集0.781950.797820.606070.77650
測試集0.760750.690720.674980.73241
除了ANN可能是我設計的不是那么的合理(隱藏結點取5有些magic number的味道)導致其AUC可能超過logistic而沒有超過外,其他的都能看到logistic在AUC指標下表現不俗。但是我們從整個ROC曲線來看。Logistic的優勢在于logistic很好的控制住了FPR,所以在兩類錯誤代價不一致時,如何選取還得仔細分析。正如同我們前面說的數據分析是一門藝術而不是一門技術,具體問題還需具體分析。
五、ROC的延續
ROC曲線的所有內容都是分類矩陣提供的,我們可以運用ROC類似的辦法來定義一些新的曲線來衡量分類器性能的好壞。我們這里還是先回顧一下分類矩陣:
1、PR曲線
我們之前在評述靜態分類指標時就說過,在某些如推薦或信息獲取領域還會組合使用precision-recall作為評價指標。那么我們不妨來看看precision與recall展示到二維空間后評估了什么?合理的解釋又是什么?Precision-Recall曲線,這個東西應該是來源于信息檢索中對相關性的評價,用我們的例子來講,Precision 就是我們決定發放貸款的人群中有多少是會按時還款的,Recall就是所有值得發放貸款的人有多少被銀行挑選出來給予服務了。放到檢索中來說,Precision 就是檢索出來的條目中(比如網頁)有多少是準確的,Recall就是所有準確的條目有多少被檢索出來了。這也就是為什么IR中很多算法的評估都用到Precision和Recall來評估好壞。
我們來看看logistic回歸在測試集上PR曲線的表現:
Logistic回歸在訓練集上的表現:
與ROC曲線的做法類似,我們這里不再詳述PR曲線的做法,我們直接上代碼:
reg1<-glm(good_bad~checking+history+duration+savings+property,data=trainset,family="binomial")
reg2<-step(reg1)
summary(reg2)
p<-predict(reg2,testset)
Precision<-rep(0,length(p))
Recall<-rep(0,length(p))
label.true<-ifelse(testset[,6]=="good",1,0)
for(i in 1:length(p)){
p0<-p[order(p)[i]]
label.pred<-1*(p>=p0)
Recall[i]<-sum(label.pred*label.true)/sum(label.true)
Precision[i]<-ifelse(is.nan(sum(label.pred*label.true)/sum(label.pred)),1,
sum(label.pred*label.true)/sum(label.pred))
}
plot(Recall, Precision, col=4,lwd=5, type="l",xlab="Recall",ylab="Precision", main="PR Curve")
我們來看看PR意義下不同分類器的績效(左訓練集右測試集):
2、lift曲線
我們再一次回到分類矩陣:
考慮lift曲線,意味著我們需要重新加入一個指標:lift。為了敘述的簡便,在說lift之前我們引入指標:depth、k。Depth=proportionallocated to class 1=(TP+FP)/(P+N),表示預測成正例的樣例占總樣例的比例。
K=P/(P+N),表示總樣例中正例所占的比例。
Precision表明如果采用了分類器,正例的識別比例;而k表明如果不用分類器,用隨機的方式抽取出正例的比例。這二者相比自然就解決了如果使用者用分類器分類會使得正類產生的比例會增加多少的問題。這就自然而然的定義了提升值lift:Lift=precision/K,意味著與不利用模型相比,模型的預測能力“變好”了多少。顯然,lift(提升指數)越大,模型的運行效果越好。如果這個模型的預測能力跟似然的.
結果一樣(lift等于1),這個模型就沒有任何“提升”了。光有lift一個指標是不夠的,那么還有一個指標是什么呢?depth(有的書稱為RPP:
正類預測比例,Rate of positive predictions的縮寫)。之所以選擇depth是因為隨著閾值的減小,更多的客戶就會被歸為正例,也就是depth(預測成正例的比例)變大。當閾值設定得足夠的小,那么幾乎所有的觀測值都會被歸為正例(depth幾乎為1)——這時分類的效果就跟似然的結果差不多了,相對應的lift值就接近于1。
lift曲線是數據挖掘分類器最常用的方式之一,與ROC曲線不同的是lift考慮分類器的準確性,也就是使用分類器獲得的正類數量和不使用分類器隨機獲取正類數量的比例。
那么在一個合理的depth范圍內,我們要尋找最大的提升。這就是比較模型的依據。我們先來看看logistic回歸模型的lift圖:
一個常用的利用lift圖作為模型比較依據的辦法:lift圖把驗證數據集中的觀測數據根據它們的分數以升序或降序排列,分數是基于訓練數據集估計的響應事件(成功)的概率。把這些分數再細分成10分位點,然后對驗證數據集中的每個10分位點計算和圖示成功的預測概率。如果這些成功的預測概率與估計概率具有相同的順序(升序或降序),那么模型就是有效的。 我們以下圖為例:
圖中可看出分數以降序排列,所以曲線減少越多表明模型越好。因此模型classification tree看起來比另一個更好,特別是在第3個10分位點,它具有較好的成功率。
用每個曲線的值除以基本線,可得到性能的相對指標,稱為lift,它測量一個模型的價值。
對于模型classification tree,在第3個10分位點的lift值為2.77(即2.27%/1.0%),這意味著使用模型classification tree的成功率是隨機選擇(基本線)的3倍。
我們來看看lift意義下不同分類器的績效(左訓練集右測試集):
當然這里有必要指出的是lift這個指標就是作為單純的靜態指標也是很常用的,而且可以這么說lift作為靜態指標比作為這樣的動態指標更常用,畢竟比起用哪一類模型我們更關心確定的那一個模型的好壞。通常來說lift大于2就說明分類效果可以了。但是對于有偏數據來說,似然估計的準確率已經很高了,希望lift達到2或者更高基本不太現實。
3、Gains曲線
有了lift的基礎,我們要說的增益曲線就變得異常簡單了,lift曲線不是以lift作為評價指標嘛,我們換成precision作為評價指標,畫precision-depth曲線就是傳說中的gains曲線了。
4、Lorenz曲線
既然gains曲線選擇了precision作為縱軸,那我們選recall可不可以呢?當然可以,傳說中的lorenz曲線就是他了。lorenz曲線的橫軸就是lift曲線中涉及到的深度depth,也就是:將樣本的預測為1的概率從大到小排序后,取前百分之幾。通常會簡化成十分位點,0%,10%,20%,...,90%,100%。而曲線的縱軸其實就是相對應的TPR。形象地說,就是我們面對著一堆人(1000個),這堆人里面有20個壞人,我們的目標就是抓壞人。通過模型計算,我們把這堆人按照可能是壞人的概率從大到小地排了隊,然后我們抓取前一百名,在這前一百名里面,可能就有13個壞人了(因為這一百個人的是壞人的概率比較高嘛),也就是說我們只抓取10%的樣本,但是抓到了65%的目標。從lift的角度也可以很好地理解這種提升效果,而lorenz則更形象地展示了這種投入產出比的含義。
以上提到的ROC、Lift、Gains、Lorenz,都是基于混淆矩陣及其派生出來的幾個指標。
如果愿意,你隨意組合幾個指標,展示到二維空間,就是一種跟ROC平行的評估圖。
六、R實現
R提供了各種各樣的函數來實現分類的績效評估。我們為了保持行文的一貫性,我們使用鳶尾花數據(僅考慮后兩種花的分類)SVM模型來說說R是如何實現績效評估的。
有些指標在另一群人的眼中是這樣的:
Sensitivity(覆蓋率,True Positive Rate)=正確預測到的正例數/實際正例總數PV+ (命中率,Precision,Positive Predicted Value) =正確預測到的正例數/預測正例總數Specificity (負例的覆蓋率,True Negative Rate) =正確預測到的負例個數/實際負例總數
我們來看看最熟悉的分類矩陣(data僅為鳶尾花的51到150行的數據):
library(e1071)
m1 <- svm(Species~.,data=data,cross=10,type="C-classification",kernel="sigmoid")
pred1<-predict(m1,data)
table(pred1,data[,5])
之后是ROC圖:
library(ROCR)
pred<-predict(m1,data,decision.values = TRUE)
p<--attr(pred,"decision.values")
pred <- prediction(p, data[,5])
perf <- performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)
grid(5, 5, lwd = 1)
points(c(0,1), c(0,1), type="l", lty=2, lwd=2, col="grey")
函數筆記:ROCR包提供了ROC圖的繪制函數,他的主要函數有:
prediction(predictions, labels, label.ordering = NULL)
參數說明:
Predictions:是評價的得分向量
Labels:真實的分類向量
performance(prediction.obj, measure, x.measure="cutoff", ...)
參數說明:
Prediction.obj:由prediction生成的對象
Measure:各種評價指標,如recall、precision、actual等,詳見幫助文檔,x.measure類似
計算AUC:
auc.tmp <- performance(pred,"auc")
auc <- as.numeric(auc.tmp@y.values)
auc <- round(auc, 4)
計算ROC意義下的最佳閾值:
library(Daim)
roc1<-roc(-p,data[,5],"versicolor")
summary(roc1)
函數筆記:Daim包的roc函數提供了roc曲線的繪制,最佳cutoff點的求解,auc求解等功能。
roc(x, labels, labpos, thres=NULL, ...)
參數說明:
X:評價得分向量
Labels:實際分類向量
Thres:正例名稱
Tips:你可以嘗試plot(roc1)
繪制PR曲線:(默認以加載ROCR包,下同)
pred <- prediction(p, data[,5])
perf <- performance(pred,measure="prec", x.measure="rec")
plot(perf,colorize=TRUE)
繪制lift曲線:
pred<- prediction(p, data[,5])
perf<- performance(pred,measure="lift", x.measure="rpp")
plot(perf,colorize=TRUE)
繪制Gain曲線
pred<- prediction(p, data[,5])
perf<- performance(pred,measure="prec", x.measure="rpp")
plot(perf,colorize=TRUE)
繪制Lorenz曲線:
pred<- prediction(p, data[,5])
perf<- performance(pred,measure="rec", x.measure="rpp")
plot(perf,colorize=TRUE)
grid(5,5, lwd = 1)
points(c(0,1),c(0,1), type="l", lty=2, lwd=2, col="grey")
除此以外,你還可以嘗試Sensitivity/specificity曲線(試著解釋一下它)
pred<- prediction(p, data[,5])
perf<- performance(pred,measure="sens", x.measure="spec")
plot(perf,colorize=TRUE)
tips:基本上你可以拿任何兩種指標填入measure與x.measure里便可以得到一幅圖,
還有很多幅圖都是可以畫的,你可以逐一去嘗試他們,這里就不一一介紹了。
七、小結
前面說了那么多,我們考慮GermanCredit Dataset這個例子,把我們所說的東西的含義簡單的總結一下。
我們所說的增益gain意味著從30%的人里抓到了50%的欺騙者,這就是gain曲線(0.3,0.5)
這一坐標點的含義。對角線意味著利用似然想法隨意抓人的收益。
我們所說的提升lift意味著從30%的人里抓,抓到5個,比隨便抓,抓到3個要好了5/3=1.7,這就是lift曲線(0.3,1.7)這一點的含義
我們所說的ROC曲線意味著從30%的人里面抓到了欺騙者的50%(5/10),抓錯了好人20%(4/20),這就是ROC曲線上(0.2,0.5)的含義。對角線意味著胡亂抓人(每人都有50%的可能是欺騙者)的情況。
Lorenz曲線與K-S指標見下圖:
(上圖的坐標軸標注不是很準確:紅線是lorenz bad,藍線是lorenzgood)
Reference:
這次不提供further reading,這篇文章參考但不限于下列文獻:
百度百科:ROC曲線
波波頭一頭:二分類模型性能評價2.0(ROC曲線,lift曲線,lorenz曲線)
胡江堂:分類模型的性能評估系列文章(混淆矩陣、ROC和AUC、lift和gain)
丕子:再理解下ROC曲線和PR曲線
不周山:分類器評價、混淆矩陣與ROC曲線
預告
我們花了這么大的力氣來討論分類算法的績效,目的便是如何提高分類效率。下面我們將討論組合的方法提高分類效率。這次我們看到對于不平衡數據來說,不同分類器的表現很是不同,之前我們很倚重的SVM就在信用評分上表現不佳,所以如果可能,我們不妨也來討論一下非均衡分類問題。我們將待寫的文章預告如下:
算法提升:組合方法提高分類效率
算法討論:非均衡分類問題
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24