99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀機器學習算法常用指標總結(jié)
機器學習算法常用指標總結(jié)
2017-03-11
收藏

機器學習算法常用指標總結(jié)

考慮一個二分問題,即將實例分成正類(positive)或負類(negative)。對一個二分問題來說,會出現(xiàn)四種情況。如果一個實例是正類并且也被 預測成正類,即為真正類(True positive),如果實例是負類被預測成正類,稱之為假正類(False positive)。相應地,如果實例是負類被預測成負類,稱之為真負類(True negative),正類被預測成負類則為假負類(false negative)。
  TP:正確肯定的數(shù)目;
  FN:漏報,沒有正確找到的匹配的數(shù)目;
  FP:誤報,給出的匹配是不正確的;
  TN:正確拒絕的非匹配對數(shù);
  列聯(lián)表如下表所示,1代表正類,0代表負類:
     預測1    預測0
實際1    True Positive(TP)    False Negative(FN)
實際0    False Positive(FP)    True Negative(TN)
1. TPR、FPR&TNR
  從列聯(lián)表引入兩個新名詞。其一是真正類率(true positive rate ,TPR), 計算公式為
TPR = TP / (TP + FN)
刻畫的是分類器所識別出的 正實例占所有正實例的比例。
  另外一個是負正類率(false positive rate, FPR),計算公式為
FPR = FP / (FP + TN)
計算的是分類器錯認為正類的負實例占所有負實例的比例。
  還有一個真負類率(True Negative Rate,TNR),也稱為specificity,計算公式為
TNR = TN /(FP + TN) = 1 - FPR
2. 精確率Precision、召回率Recall和F1值
  精確率(正確率)和召回率是廣泛用于信息檢索和統(tǒng)計學分類領(lǐng)域的兩個度量值,用來評價結(jié)果的質(zhì)量。其中精度是檢索出相關(guān)文檔數(shù)與檢索出的文檔總數(shù)的比率,衡量的是檢索系統(tǒng)的查準率;召回率是指檢索出的相關(guān)文檔數(shù)和文檔庫中所有的相關(guān)文檔數(shù)的比率,衡量的是檢索系統(tǒng)的查全率。
  一般來說,Precision就是檢索出來的條目(比如:文檔、網(wǎng)頁等)有多少是準確的,Recall就是所有準確的條目有多少被檢索出來了,兩者的定義分別如下:
Precision = 提取出的正確信息條數(shù) /  提取出的信息條數(shù)     
Recall = 提取出的正確信息條數(shù) /  樣本中的信息條數(shù)    
  為了能夠評價不同算法的優(yōu)劣,在Precision和Recall的基礎(chǔ)上提出了F1值的概念,來對Precision和Recall進行整體評價。F1的定義如下:
F1值  = 正確率 * 召回率 * 2 / (正確率 + 召回率)
  不妨舉這樣一個例子:
  某池塘有1400條鯉魚,300只蝦,300只鱉?,F(xiàn)在以捕鯉魚為目的。撒一大網(wǎng),逮著了700條鯉魚,200只蝦,100只鱉。那么,這些指標分別如下:
  正確率 = 700 / (700 + 200 + 100) = 70%
  召回率 = 700 / 1400 = 50%
  F1值 = 70% * 50% * 2 / (70% + 50%) = 58.3%
  不妨看看如果把池子里的所有的鯉魚、蝦和鱉都一網(wǎng)打盡,這些指標又有何變化:
  正確率 = 1400 / (1400 + 300 + 300) = 70%
  召回率 = 1400 / 1400 = 100%
  F1值 = 70% * 100% * 2 / (70% + 100%) = 82.35%        
  由此可見,正確率是評估捕獲的成果中目標成果所占得比例;召回率,顧名思義,就是從關(guān)注領(lǐng)域中,召回目標類別的比例;而F值,則是綜合這二者指標的評估指標,用于綜合反映整體的指標。
  當然希望檢索結(jié)果Precision越高越好,同時Recall也越高越好,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜索出了一個結(jié)果,且是準確的,那么Precision就是100%,但是Recall就很低;而如果我們把所有結(jié)果都返回,那么比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高。如果是做實驗研究,可以繪制Precision-Recall曲線來幫助分析。
3. 綜合評價指標F-measure
  Precision和Recall指標有時候會出現(xiàn)的矛盾的情況,這樣就需要綜合考慮他們,最常見的方法就是F-Measure(又稱為F-Score)。

F-Measure是Precision和Recall加權(quán)調(diào)和平均:

  當參數(shù)α=1時,就是最常見的F1。因此,F(xiàn)1綜合了P和R的結(jié)果,當F1較高時則能說明試驗方法比較有效。
4. ROC曲線和AUC
  4.1 為什么引入ROC曲線?
  Motivation1:在一個二分類模型中,對于所得到的連續(xù)結(jié)果,假設(shè)已確定一個閥值,比如說 0.6,大于這個值的實例劃歸為正類,小于這個值則劃到負類中。如果減小閥值,減到0.5,固然能識別出更多的正類,也就是提高了識別出的正例占所有正例 的比類,即TPR,但同時也將更多的負實例當作了正實例,即提高了FPR。為了形象化這一變化,引入ROC,ROC曲線可以用于評價一個分類器。
  Motivation2:在類不平衡的情況下,如正樣本90個,負樣本10個,直接把所有樣本分類為正樣本,得到識別率為90%。但這顯然是沒有意義的。單純根據(jù)Precision和Recall來衡量算法的優(yōu)劣已經(jīng)不能表征這種病態(tài)問題。
  4.2 什么是ROC曲線?
  ROC(Receiver Operating Characteristic)翻譯為"接受者操作特性曲線"。曲線由兩個變量1-specificity 和 Sensitivity繪制. 1-specificity=FPR,即負正類率。Sensitivity即是真正類率,TPR(True positive rate),反映了正類覆蓋程度。這個組合以1-specificity對sensitivity,即是以代價(costs)對收益(benefits)。
       此外,ROC曲線還可以用來計算“均值平均精度”(mean average precision),這是當你通過改變閾值來選擇最好的結(jié)果時所得到的平均精度(PPV)。
  為了更好地理解ROC曲線,我們使用具體的實例來說明:
  如在醫(yī)學診斷中,判斷有病的樣本。那么盡量把有病的揪出來是主要任務(wù),也就是第一個指標TPR,要越高越好。而把沒病的樣本誤診為有病的,也就是第二個指標FPR,要越低越好。
  不難發(fā)現(xiàn),這兩個指標之間是相互制約的。如果某個醫(yī)生對于有病的癥狀比較敏感,稍微的小癥狀都判斷為有病,那么他的第一個指標應該會很高,但是第二個指標也就相應地變高。最極端的情況下,他把所有的樣本都看做有病,那么第一個指標達到1,第二個指標也為1。
  我們以FPR為橫軸,TPR為縱軸,得到如下ROC空間。

  我們可以看出,左上角的點(TPR=1,FPR=0),為完美分類,也就是這個醫(yī)生醫(yī)術(shù)高明,診斷全對。點A(TPR>FPR),醫(yī)生A的判斷大體是正確的。中線上的點B(TPR=FPR),也就是醫(yī)生B全都是蒙的,蒙對一半,蒙錯一半;下半平面的點C(TPR<FPR),這個醫(yī)生說你有病,那么你很可能沒有病,醫(yī)生C的話我們要反著聽,為真庸醫(yī)。上圖中一個閾值,得到一個點。現(xiàn)在我們需要一個獨立于閾值的評價指標來衡量這個醫(yī)生的醫(yī)術(shù)如何,也就是遍歷所有的閾值,得到ROC曲線。

還是一開始的那幅圖,假設(shè)如下就是某個醫(yī)生的診斷統(tǒng)計圖,直線代表閾值。我們遍歷所有的閾值,能夠在ROC平面上得到如下的ROC曲線。

  曲線距離左上角越近,證明分類器效果越好。

  如上,是三條ROC曲線,在0.23處取一條直線。那么,在同樣的低FPR=0.23的情況下,紅色分類器得到更高的PTR。也就表明,ROC越往上,分類器效果越好。我們用一個標量值A(chǔ)UC來量化它。
  4.3 什么是AUC?
  AUC值為ROC曲線所覆蓋的區(qū)域面積,顯然,AUC越大,分類器分類效果越好。
  AUC = 1,是完美分類器,采用這個預測模型時,不管設(shè)定什么閾值都能得出完美預測。絕大多數(shù)預測的場合,不存在完美分類器。
  0.5 < AUC < 1,優(yōu)于隨機猜測。這個分類器(模型)妥善設(shè)定閾值的話,能有預測價值。
  AUC = 0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。
  AUC < 0.5,比隨機猜測還差;但只要總是反預測而行,就優(yōu)于隨機猜測。
  AUC的物理意義:假設(shè)分類器的輸出是樣本屬于正類的socre(置信度),則AUC的物理意義為,任取一對(正、負)樣本,正樣本的score大于負樣本的score的概率。
  4.4 怎樣計算AUC?
  第一種方法:AUC為ROC曲線下的面積,那我們直接計算面積可得。面積為一個個小的梯形面積之和。計算的精度與閾值的精度有關(guān)。
  第二種方法:根據(jù)AUC的物理意義,我們計算正樣本score大于負樣本的score的概率。取N*M(N為正樣本數(shù),M為負樣本數(shù))個二元組,比較score,最后得到AUC。時間復雜度為O(N*M)。

第三種方法:與第二種方法相似,直接計算正樣本score大于負樣本的概率。我們首先把所有樣本按照score排序,依次用rank表示他們,如最大score的樣本,rank=n(n=N+M),其次為n-1。那么對于正樣本中rank最大的樣本,rank_max,有M-1個其他正樣本比他score小,那么就有(rank_max-1)-(M-1)個負樣本比他score小。其次為(rank_second-1)-(M-2)。最后我們得到正樣本大于負樣本的概率為。數(shù)據(jù)分析師培訓

  時間復雜度為O(N+M)。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }