1. 程式人生 > >4.4.2分類模型評判指標(三)

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.1Struts+Hibernate+spring篇

繼續,我又新建一個專案sshTest,把shDemo的程式碼都移進去(shDemo拿去幹別的事了) 1.引入spring所需jar包 這裡不僅需要spring的jar包 還需要hibernate中兩個資料來源包 另外還有一個aspectjweaver.jar包,這個包