工作中用到的模型診斷指數

2021-08-15 07:11:29 字數 4293 閱讀 8822

均值、方差、最小值、最大值、1%分位數、5%分位數、 10%分位數、25%分位數、 50%分位數、75%分位數、90%分位數、 95%分位數、 99%分位數。

一般要將資料排序後才能求得分位數。

1.1  對每個model(seg_a、seg_b、seg_c、all),計算score向量的統計量

1.2  對seg_a、seg_b、seg_c、all,計算每signal向量的統計量

其公式為:

其中: 0.8-1.0     

極強相關

0.6-0.8     

強相關0.4-0.6     

中等程度相關

0.2-0.4     

弱相關0.0-0.2     

極弱相關或無相關

2.1  對每個model(只有seg_a),計算signal與tag的相關係數。

2.2對

seg_a、seg_b、s

eg_c、all,計算每兩個signal向量之間的相關係數。

psi(population stability index)是衡量模型的**值與實際值偏差大小的指標。psi 小於 0.25 意味偏差在可以接受的範圍裡。

3.1對每個model(seg_a、seg_b、seg_c),計算score向量的psi

(1).  將基準score劃分為10個區間,將**score按照相同的邊界值劃分為10個區間

(2).  分別統計各個分割槽基準score的個數c1、**score的個數c2

(3).  分別統計各個分割槽基準score的個數比例p1、**score的個數比例p2

(4).  計算 psi = sum ( ( p1[i] - p2[i]  ) / ( log p1[i] -   log p2[i] ) )

3.2seg_a、seg_b、seg_c、all,計算signal的psi

(1).  將基準signal劃分為10個區間,將**signal按照相同的邊界值劃分為10個區間

(2).  分別統計各個分割槽基準score的個數c1、**score的個數c2

(3).  分別統計各個分割槽基準score的個數比例p1、**score的個數比例p2

(4).  計算 psi = sum ( ( p1[i] - p2[i]  ) / ( log p1[i] -   log p2[i] ) )

群體穩定性指標(population stability index),

公式: psi = sum((實際佔比-預期佔比)*ln(實際佔比/預期佔比))

舉個例子解釋下,比如訓練乙個logistic回歸模型,**時候會有個概率輸出p。你測試集上的輸出設定為p1吧,將它從小到大排序後10等分,如0-0.1,0.1-0.2,......。

現在你用這個模型去對新的樣本進行**,**結果叫p2,按p1的區間也劃分為10等分。

實際佔比就是p2上在各區間的使用者佔比,預期佔比就是p1上各區間的使用者佔比。

意義就是如果模型跟穩定,那麼p1和p2上各區間的使用者應該是相近的,佔比不會變動很大,也就是**出來的概率不會差距很大。

一般認為psi小於0.1時候模型穩定性很高,0.1-0.25一般,大於0.25模型穩定性差,建議重做。

方差膨脹因子(variance inflation factor,vif):容忍度的倒數,vif越大,顯示共線性越嚴重。經驗判斷方法表明:當0<vif<10,不存在多重共線性;當10≤vif<100,存在較強的多重共線性;當vif≥100,存在嚴重多重共線性。

計算方法:  對自變數作中心標準化,則x'x 為自變數的相關陣,定義

則矩陣c的主對角線元素 vif(i) 為自變數x(i) 的方差擴大因子vif。 若x(i) 與其餘自變數的復決定係數為r(i)^2,vif  與 復決定係數關係為:

4.1 對每個model的seg_a、seg_b、seg_c、all,計算每個signal的vif:

(1). signal的全矩陣為x

(2). 從x取得一列signal y,從x中刪除y得x'

(3). 對x',y作線性回歸建模,得到模型lr

(4). 使用lr,輸入x,得到y的**值y_pred

(5). 求得y的vif= sum((y- y_mean)^2)/sum((y- y_pred)^2)

(6).從第二步開始重複,計算每個signal的vif

受試者工作特徵曲線 (receiver operating characteristic curve,簡稱roc曲線): 是反映敏感性和特異性連續變數的綜合指標,是用構圖法揭示敏感性和特異性的相互關係,它通過將連續變數設定出多個不同的臨界值,從而計算出一系列敏感性和特異性,再以敏感性為縱座標、(1-特異性)為橫座標繪製成曲線,曲線下面積越大,診斷準確性越高。在roc曲線上,最靠近座標圖左上方的點為敏感性和特異性均較高的臨界值。

5.1. 對每個model(只有seg_a),計算score與tag的roc曲線:

(1). 將score 降序排列

(2).  score劃分為10等份(每份個數相同)

(3).  計算每乙份tag的總和即命中個數,score的最大、最小值

(4).  計算每乙份的未命中個數 = 個數- 命中個數

(5).  轉化為累加矩陣,計算累加命中率、累加未命中率

(6). 計算 ks = max ( abs (累加命中率[i] - 累加未命中率[i]) ) 

(7).  計算 auroc = sum ( (累加命中率[i] + 累加命中率[i-1])*( 累加未命中率[i] -  累加未命中率[i-1]) )/2 ,  即求積分

(8).  計算累加前每層實際命中率、累加前每層**命中率、每層累加率

(9).  roc 曲線:x軸為累加未命中率[i]),y軸為累加命中率[i]。

area under the roc curve,roc 曲線下的面積,auc 值在0.5 到1 之間。

6.1    對每個model(只有seg_a),計算score與tag的auroc見5.1:

auroc = sum ( (累加命中率[i] + 累加命中率[i-1])*( 累加未命中率[i] -  累加未命中率[i-1]) )/2 ,求積分

6.1    對每個model(只有seg_a),計算score與tag的auc見6.1:

ks = max ( abs (累加命中率 - 累加未命中率) ) 

condition index  條件指數:用於診斷多重共線性。

ci > 100

強 多重共線性

ci > 30

中等多重共線性

ci > 10

弱多重共線性

condition index  條件指數 計算方法:計算矩陣x『x 的特徵值,則條件數k和條件指數ci分別為:

8.1. 對每個model(seg_a、seg_bseg_c),計算signal的ci:

(1). 求出回歸矩陣s『s

(2).求出矩陣s『s

的特徵值lam1、lam2........lamn

(3). 求最大特徵值/最小特徵值 的平方根

9.1. 對每個model(只有seg_a),計算signal與tag的logit關係:

(1). 若signal 是標籤型別,則計算其值分別為0、1時候,對應的tag的數量、均值

(2). 若signal 是數值型別,則將signal劃分為最多10個區間,計算各個區間對應的tag的數量、均值

10.1 對每個model(只有seg_a),計算score與tag 之間的線性關係:

(1).  按照score降序排列

(2).  劃分為10個等份,求出每乙份的score和tag的均值

(3).  使用score均值和tag均值進行線性回歸建立模型lr

(4).  按照模型lr,使用score均值作為變數,帶入模型lr中,計算出**的tag均值

工作中用到的模型診斷指數

均值 方差 最小值 最大值 1 分位數 5 分位數 10 分位數 25 分位數 50 分位數 75 分位數 90 分位數 95 分位數 99 分位數。一般要將資料排序後才能求得分位數。1.1 對每個model seg a seg b seg c all 計算score向量的統計量 1.2 對seg ...

工作中用到的命令

svn checkout username password 點評 1 將檔案checkout到本地目錄 svn checkout path path是伺服器上的目錄 例如 svn checkout svn 簡寫 svn co 2 往版本庫中新增新的檔案 svn add file 例如 svn ad...

工作中用到的Linux

1.top命令檢視cpu使用率 備註 在自己機器上不斷提供cpu使用率以獲取health alert命令 for i in seq 1 cat proc cpuinfo grep physical id wc l do while true do true done done2.scp命令跨伺服器遠...