混淆矩陣
*true positive(tp):將正類**為正類的數量.
準確率(accuracy)
a cc
=tp+
tntp
+tn+
fp+f
na c c=\frac
acc=tp
+tn+
fp+f
ntp+
tn
精確率(precision)
p =t
ptp+
fpp=\frac
p=tp+f
ptp
召回率(recall, sensitivity, true positive rate)
r =t
ptp+
fnr=\frac
r=tp+f
ntp
f1值——精確率和召回率的調和均值
2 f1
=1p+
1rf1
=2tp
2tp+
fp+f
n\begin \frac} &=\frac+\frac \\ f_ &=\frac \end
f12f
1=
p1+
r1=
2tp+
fp+f
n2tp
只有當精確率和召回率都很高時,f1值才會高
roc受試者工作特徵曲線(receiver operating characteristic):
反映敏感性和特異性連續變數的綜合指標,
概念:縱軸:
真正類率(true postive rate)tpr: tp/(tp+fn),代表分類器**的正類中實際正例項佔所有正例項的比例。sensitivity
橫軸:負正類率(false postive rate)fpr: fp/(fp+tn),代表分類器**的正類中實際負例項佔所有負例項的比例。1-specificity
roc曲線越靠近(0, 1)點,越偏離45度對角線越好
畫roc曲線
解釋:隨機抽取乙個正例和乙個反例,當前分類演算法計算得到的score值為正例值大於負例的概率
評價:roc曲線下的面積,介於0-1之間。auc作為數值可以直觀的評價分類器的好壞,auc值越大越好
auc計算:
最直觀的,根據auc這個名稱,我們知道,計算出roc曲線下面的面積,就是auc的值。事實上,這也是在早期 machine learning文獻中常見的auc計算方法。由於我們的測試樣本是有限的。我們得到的auc曲線必然是乙個階梯狀的。因此,計算的auc也就是這些階梯 下面的面積之和。這樣,我們先把score排序(假設score越大,此樣本屬於正類的概率越大),然後一邊掃瞄就可以得到我們想要的auc。但是,這麼 做有個缺點,就是當多個測試樣本的score相等的時候,我們調整一下閾值,得到的不是曲線乙個階梯往上或者往右的延展,而是斜著向上形成乙個梯形。此 時,我們就需要計算這個梯形的面積。由此,我們可以看到,用這種方法計算auc實際上是比較麻煩的。
乙個關於auc的很有趣的性質是,它和wilcoxon-mann-witney test是等價的。這個等價關係的證明留在下篇帖子中給出。而wilcoxon-mann-witney test就是測試任意給乙個正類樣本和乙個負類樣本,正類樣本的score有多大的概率大於負類樣本的score。有了這個定義,我們就得到了另外一中計 算auc的辦法:得到這個概率。我們知道,在有限樣本中我們常用的得到概率的辦法就是通過頻率來估計之。這種估計隨著樣本規模的擴大而逐漸逼近真實值。這 和上面的方法中,樣本數越多,計算的auc越準確類似,也和計算積分的時候,小區間劃分的越細,計算的越準確是同樣的道理。具體來說就是統計一下所有的 m×n(m為正類樣本的數目,n為負類樣本的數目)個正負樣本對中,有多少個組中的正樣本的score大於負樣本的score。當二元組中正負樣本的 score相等的時候,按照0.5計算。然後除以mn。實現這個方法的複雜度為o(n^2)。n為樣本數(即n=m+n)
3. 第三種方法實際上和上述第二種方法是一樣的,但是複雜度減小了。它也是首先對score從大到小排序,然後令最大score對應的sample 的rank為n,第二大score對應sample的rank為n-1,以此類推。然後把所有的正類樣本的rank相加,再減去m-1種兩個正樣本組合的情況。得到的就是所有的樣本中有多少對正類樣本的score大於負類樣本的score。然後再除以m×n。即
公式解釋:
1、為了求的組合中正樣本的score值大於負樣本,如果所有的正樣本score值都是大於負樣本的,那麼第一位與任意的進行組合score值都要大,我們取它的rank值為n,但是n-1中有m-1是正樣例和正樣例的組合這種是不在統計範圍內的(為計算方便我們取n組,相應的不符合的有m個),所以要減掉,那麼同理排在第二位的n-1,會有m-1個是不滿足的,依次類推,故得到後面的公式m*(m+1)/2,我們可以驗證在正樣本score都大於負樣本的假設下,auc的值為1
2、根據上面的解釋,不難得出,rank的值代表的是能夠產生score前大後小的這樣的組合數,但是這裡包含了(正,正)的情況,所以要減去這樣的組(即排在它後面正例的個數),即可得到上面的公式
另外,特別需要注意的是,再存在score相等的情況時,對相等score的樣本,需要 賦予相同的rank(無論這個相等的score是出現在同類樣本還是不同類的樣本之間,都需要這樣處理)。具體操作就是再把所有這些score相等的樣本 的rank取平均。然後再使用上述公式。
參考:周志華.機器學習
MySQL explain 最全解釋
explain命令用來檢視sql語句的執行計畫,檢視該sql語句有沒有使用上了索引,有沒有做全表掃瞄 表的讀取順序。對應id 資料讀取操作的操作型別。對應select type 哪些索引可以使用。對應possible keys 哪些索引被實際使用。對應key 表直接的引用。對應ref 每張表有多少行...
ROC AUC的程式設計實現
之前筆試的時候看到的問題,通常我們都知道auc是roc去下面覆蓋的面積,計算的方式也是計算每個小梯形的面積然後疊加出來的。後來我查閱了一下,發現了兩個更為簡單的方法,所以在此記錄一下 auc的物理意義是任取乙個正例和任取乙個負例,正例排序在負例之前的概率。其中m是正樣本的個數,n是負樣本的個數。對於...
前端處理跨域(最全面的解釋)
首先明確一點,跨域是在瀏覽器產生的,伺服器之間不產生跨越,脫離了瀏覽器,跨域是不存在的。跨域只存在於開發環境,就是我們寫 的時候,在真正的生產環境中是不存在跨域的,前端可以通過 的方式幫我們實現跨越。我們在用執行專案的時候,瀏覽器會為我們生成乙個開發伺服器。位址就是我們npm run serve之後...