4.4.2分類模型評判指標(三)
簡介
KS曲線是用來衡量分型別模型準確度的工具。KS曲線與ROC曲線非常的類似。其指標的計算方法與混淆矩陣、ROC基本一致。它只是用另一種方式呈現分類模型的準確性。KS值是KS圖中兩條線之間最大的距離,其能反映出分類器的劃分能力。
一句話概括版本:
KS曲線是兩條線,其橫軸是閾值,縱軸是TPR與FPR。兩條曲線之間之間相距最遠的地方對應的閾值,就是最能劃分模型的閾值。
KS值是MAX(TPR - FPR),即兩曲線相距最遠的距離。
資料分析與挖掘體系位置
KS曲線也是評判模型結果的指標,因此屬於模型評估的一部分。此方法在整個資料分析與挖掘體系中的位置如下圖所示。
KS曲線的定義
瞭解ROC曲線的人會知道其橫軸與縱軸分別是混淆矩陣中的FPR與TPR。而線上的每一個點,都是在不同閾值在得到的FPR與TPR的集合。
如果知道這一事實,那麼理解KS就會十分簡單。因為KS曲線就是把ROC曲線由原先的一條曲線拆解成了兩條曲線。原先ROC的橫軸與縱軸都在KS中變成了縱軸,而橫軸變成了不同的閾值。
所以總結一下就是:
橫軸的計算:
橫軸的指標,是閾值(Threshold)。
分類器的輸出一般都為[0,1]之間的概率(Possibilities),那麼多少機率我們認為會發生事件,多少機率我們認為不會發生時間。界定“發生”與“不發生”的臨界值,就叫做閾值。
比如,我們認為下雨機率高於(含等於)0.7時,天氣預報就會顯示有雨;而下雨機率低於0.7時,天氣預報就不會顯示有雨。那麼這個0.7,就是閾值。他也是KS曲線的橫軸。
縱軸的計算:
KS曲線中有兩條線,這兩條線有共同的橫軸,但是縱軸分別有兩個指標:FPR與TPR。
KS曲線的解讀
如下圖所示,這就是一個典型的KS曲線。
縱軸分別是TPR(綠色線),FPR(紅色線)與TPR與FPR的距離(粉色的線)。
橫軸我們並未選擇傳統的閾值(即0-1),我們將橫軸變為邏輯迴歸中預測值Y的概率結果,所以橫軸突破了1。在閾值為0.4117361的時候,TPR-FPR的差距是最大的,為0.902215。
因此,我們認為邏輯迴歸的模型應該將閾值定為41.17%。在這個時候,TPR很高,FPR很低。是最好的輸出結果。
KS曲線的在R中的實現
rm(list=ls())
# 引入library
library(reshape2)
library(ROCR)
library(stringr)
# 引入樣本,劃分Train與Test
diamonds$is_expensive <- diamonds$price > 2400
is_test <- runif(nrow(diamonds)) > 0.75
train <- diamonds[is_test==FALSE,]
test <- diamonds[is_test==TRUE,]
# 擬合模型
fit_A <- glm(is_expensive ~ carat + cut + clarity, data=train)
# 預測模型
prob_A <- predict(fit_A, newdata=test, type="response")
pred_A <- prediction(prob_A, test$is_expensive)
perf_A <- performance(pred_A, measure = "tpr", x.measure = "fpr")
# 預測值以概率的形式儲存在“ [email protected]”中
# 真實值以“TRUE”/“FALSE”的形式儲存在“[email protected]”中
unlist([email protected])
unlist([email protected])
# 首先,我們需要將TRUE/FALSE轉化為0/1
df <- data.frame(rep = unlist([email protected]))
# 替換
df$rep=str_replace(df$rep,'TRUE',"1")
df$rep=str_replace(df$rep,'FALSE',"0")
# 之後,需要再將資料轉化為integer
# 所以,as.integer(unlist(df$rep))是真實的Y值
# 定義公式
myKS <- function(pre,label){
true <- sum(label)
false <- length(label)-true
tpr <- NULL
fpr <- NULL
o_pre <- pre[order(pre)] # let the threshold in an order from small to large
for (i in o_pre){
tp <- sum((pre >= i) & label)
tpr <- c(tpr,tp/true)
fp <- sum((pre >= i) & (1-label))
fpr <- c(fpr,fp/false)
}
plot(o_pre,tpr,type = "l",col= "green",xlab="threshold",ylab="tpr,fpr")
lines(o_pre,fpr,type="l", col = "red")
KSvalue <- max(tpr-fpr)
sub = paste("KS value =",KSvalue)
title(sub=sub)
cutpoint <- which(tpr-fpr==KSvalue)
thre <- o_pre[cutpoint]
lines(c(thre,thre),c(fpr[cutpoint],tpr[cutpoint]),col = "blue")
cat("KS-value:",KSvalue,mean(thre))
}
# 輸出結果
myKS(unlist([email protected]),as.integer(unlist(df$rep)) )
相關推薦
4.4.2分類模型評判指標(三)
簡介 KS曲線是用來衡量分型別模型準確度的工具。KS曲線與ROC曲線非常的類似。其指標的計算方法與混淆矩陣、ROC基本一致。它只是用另一種方式呈現分類模型的準確性。KS值是KS圖中兩條線之間最大的距離,其能反映出分類器的劃分能力。 一句話概括版本: KS曲線是兩條線,其
4.4.2分類模型評判指標(一)
簡介混淆矩陣是ROC曲線繪製的基礎,同時它也是衡量分型別模型準確度中最基本,最直觀,計算最簡單的方法。一句話解釋版本:混淆矩陣就是分別統計分類模型歸錯類,歸對類的觀測值個數,然後把結果放在一個表裡展示出來。這個表就是混淆矩陣。資料分析與挖掘體系位置混淆矩陣是評判模型結果的指標
二分類問題F-score評判指標(轉載)
ati ria 比例 csdn 但是 https 假設 tail rgb 小書匠深度學習分類方法常用的評估模型好壞的方法.
R語言︱機器學習模型評價指標+(轉)模型出錯的四大原因及如何糾錯
筆者寄語:機器學習中交叉驗證的方式是主要的模型評價方法,交叉驗證中用到了哪些指標呢?交叉驗證將資料分為訓練資料集、測試資料集,然後通過訓練資料集進行訓練,通過測試資料集進行測試,驗證集進行驗證。模型預測
顯著性目標檢測模型評價指標(一)——平均絕對誤差:Mean Absolute Error(MAE)
顯著性目標檢測模型評價指標 之 平均絕對誤差(MAE)原理與實現程式碼 目錄 一、顯著性目標檢測簡介 顯著性目標(Salient Object): 當我們在看一張圖片時,注意力首先會落在我們所感興趣的物體部分。比如我們看到一張畫有羊
顯著性目標檢測模型評價指標(二)——PR曲線
顯著性目標檢測模型評價指標 之 PR曲線原理與實現程式碼 目錄 一、PR曲線原理 在顯著目標提取中(關於視覺顯著性的簡要介紹點此處連結),PR曲線是用來評估模型效能的重要指標之一,PR曲線中的P(Precision)和R(Recall)分
Android4.4 CTS測試Fail項修改總結(三)
---------------------------------------------------------------------- add 2015.05.19 Android5.1上的CTS測試 1、android.net.http.cts.ApacheHt
使用MyEclipse開發Java EE應用:用XDoclet創建EJB 2 Session Bean項目(三)
str 文件存儲 字段 des 管理 新版 enter ecif class MyEclipse限時秒殺!活動火熱開啟中>> 【MyEclipse最新版下載】 三、配置XDoclet支持的項目 默認情況下,MyEclipse EJB項目未配置使用XDocle
CentOS7.5Kubernets(k8s)1.12.2之Helm部署Dashboard(三)
Helm部署Dashboarddashboard所需映象(v1.10.0)地址:連結:https://pan.baidu.com/s/1vkdYNGjQD0hD_Q0_I_2t3A提取碼:7i7k1、#helm install --name dashboard --namespace=kube-system
zigbee 之ZStack-2.5.1a原始碼分析(三)無線資料傳送和接收
前面說過SampleApp_Init和SampleApp_ProcessEvent是我們重點關注的函式,接下來分析無線傳送和接收相關的程式碼: 在SampleApp_ProcessEvent函式中: if ( events & SYS_EVENT_MSG ) { &nbs
指標(三)————指標與陣列
指標與陣列 指標和陣列是密切相關的。事實上,指標和陣列在很多情況下是可以互換的。例如,一個指向陣列開頭的指標,可以通過使用指標的算術運算或陣列索引來訪問陣列。 #include <iostream> using namespace std; const int MAX = 3
caffe目標檢測模型訓練全過程(三)目標檢測第一步
遍歷整圖查詢蝴蝶位置 2018/04/22 訓練模型對於識別背景和蝴蝶有比較好的效果,基本對不會識別錯誤,接下來,將通過整圖遍歷的原始而又野蠻的方式對一張原始圖片進行處理,進而查詢到蝴蝶的具體位置。具體思路如下圖。對原圖進行縮放成理想大小,例如, 最小邊長縮放為227*6畫素,最大邊長等比
聊聊高併發(三十五)Java記憶體模型那些事(三)理解記憶體屏障
硬體層提供了一系列的記憶體屏障 memory barrier / memory fence(Intel的提法)來提供一致性的能力。拿X86平臺來說,有幾種主要的記憶體屏障 1. lfence,是一種Load Barrier 讀屏障 2. sfence, 是一種Store
【Swift 2.2】iOS開發筆記(三)
1、UITableView 中呼叫 UIButton 的 setTitle 會閃 滾動列表時比較明顯,解決辦法: buttonType 改成 custom 即可,但是這樣一來 UIButton 的高亮效果也沒了,但可以自己手動配置 State Config 2018-
Retrofit 2.0 超能實踐(三),輕鬆實現檔案/多圖片上傳/Json字串
通過前兩篇姿勢的入門 通過對Retrofit2.0的前兩篇的基礎入門和案例實踐,掌握了怎麼樣使用Retrofit訪問網路,加入自定義header,包括加入SSL證書,基本的除錯基礎,coolkie同步,但很多需求需要檔案的上傳,今天主題就來分享怎麼
HTTP/2 與 WEB 效能優化(三)
提醒:本文最後更新於 1320 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 在連續寫了兩篇關於「HTTP/2 與 WEB 效能優化」的文章後,今天來寫這個系列的最後一篇。在正式開始之前,我們先來簡單回顧下之前兩篇文章: 「HTTP/2 與 WEB 效能優化(一)」的結論是:HTTP/2
Linux裝置驅動模型框架分析(三)——LDDM的實體bus_type、device和device_driver
在Linux裝置模型中,Bus(匯流排)是一類特殊的裝置,它是連線處理器和其它裝置之間的通道(channel)。為了方便裝置模型的實現,核心規定,系統中的每個裝置都要連線在一個Bus上,這個Bus可以是一個內部Bus、虛擬Bus或者Platform Bus。 device
c++指標(三)——指標和陣列名的關係
這一篇文章揭祕指標和陣列名的關係~~~(1)、陣列的定義int array[10];//定義了一個數組array,並且初始化都為0,陣列為{0,0,0,0,0} int array[10]={1,2};//定義了一個數組array,並且初始化都為0,但是第一,第二個元素又被改
kinect 2.0 SDK學習筆記(三)--生成3D點雲
生成3D點雲 本文在上一教程座標對映基礎上,構建3D點雲並顯示出來。 1. 獲得深度幀和彩色幀: hr = m_pDepthFrameReader->AcquireLatestFra
最新eclipse整合Struts2.3.29+Hibernate5.2.1+Spring4.3.1(三)Struts+Hibernate+spring篇
繼續,我又新建一個專案sshTest,把shDemo的程式碼都移進去(shDemo拿去幹別的事了) 1.引入spring所需jar包 這裡不僅需要spring的jar包 還需要hibernate中兩個資料來源包 另外還有一個aspectjweaver.jar包,這個包