成人精品三级_99综合在线_亚洲一二三在线_一区二区三区在线资源

當前位置:第一POS網 > pos機知識點 >

falsepositive機器學習

瀏覽:133 發布日期:2023-05-15 00:00:00 投稿人:佚名投稿

1、如何提高機器學習算法的召回率

最近在做文本分類,遇到了一些問題,想問問大家有沒有好的方法。為了節省時間,我只采取了部分數據來跑算法(全部數據跑了之后的結果和這個差不多)
訓練集:4837 documents
測試集:2074 documents
樣本比例:正樣本:負樣本 = 1:3
預測結果中,有的算法在正樣本中預測的精確率還行(0.95-1.00之間),但是召回率非常差,通常只有0.01和0.02左右,KNeighbors和DecisionTree的精確率和召回率都是0,只有NaiveBayes和BernoulliNB的PR和Recall比較平均,但是也沒有到0.8。
問題:我查了一下那些召回率較低(0.01)的算法,475個樣本中(正樣本),實際上只有5個被預測正確了的,但是具體原因沒有查出來。
我想請問一下:1.召回率低是因為樣本極度不平衡造成的嗎?(雖然我認為1:3的比例不算極度不平衡。)2.在這種樣本不平衡的問題上,有沒有什么好的方法可以提高召回率?我試過SMOTE方法(過采樣和欠采樣都有試過),但對于我的數據集并沒有什么好的效果,不止到有沒有有什么好的方法可以解決這個問題?!
添加評論
分享

查看全部 11 個回答

0贊同反對,不會顯示你的姓名
Elvin 全是細枝末節,做一個樂于分享的人
兩個問題一并回答一下,根據你的描述,我覺得問題應該不是出在正負樣本比上,1比3這個比例不但不是非常不均衡,相反在我看來已經是非常均衡了。以前做比賽有處理過正負比1比10000的數據,我覺得這才叫不平衡,才需要使用類似上采樣,下采樣,以及SMOTE算法(都用過),而且這樣的情況下recall,F1等指標的提升是顯著的。我覺得正負比例在1:1至1:100間差別都不會太大,需要根據具體問題做離線交叉驗證去找到最好的比例。

所以我建議你不用再糾結正負樣本比的問題,可以再回頭看一看你的數據集,一方面看一看代碼是否有誤?數據集是否太小?(總覺得你的數據集太小,而且測試集相對于訓練集太大)另外訓練集,測試集的劃分是否正確?或者重新劃分一下訓練測試集做一下交叉驗證看一看各項指標再具體研究。 TP —— True Positive (真正, TP)被模型預測為正的正樣本;可以稱作判斷為真的正確率
TN —— True Negative(真負 , TN)被模型預測為負的負樣本 ;可以稱作判斷為假的正確率
FP ——False Positive (假正, FP)被模型預測為正的負樣本;可以稱作誤報率
FN——False Negative(假負 , FN)被模型預測為負的正樣本;可以稱作漏報率
True Positive Rate(真正率 , TPR)或靈敏度(sensitivity)   TPR = TP /(TP + FN)   正樣本預測結果數 / 正樣本實際數
True Negative Rate(真負率 , TNR)或特指度(specificity)   TNR = TN /(TN + FP)   負樣本預測結果數 / 負樣本實際數
False Positive Rate (假正率, FPR)   FPR = FP /(FP + TN)   被預測為正的負樣本結果數 /負樣本實際數
False Negative Rate(假負率 , FNR)   FNR = FN /(TP + FN)   被預測為負的正樣本結果數 / 正樣本實際數

2、機器學習中對數幾率回歸中為什么把y看作x為正例的概率

考慮二問題即實例類(positive)或負類(negative)二問題說現四種情況實例類并且預測類即真類(Truepositive),實例負類預測類稱假類(Falsepositive)相應實例負類預測負類稱真負類(Truenegative),類預測負類則假負類(falsenegative)列聯表表所示1代表類0代表負類預測10合計實際1TruePositive(TP)FalseNegative(FN)ActualPositive(TP+FN)0FalsePositive(FP)TrueNegative(TN)ActualNegative(FP+TN)合計PredictedPositive(TP+FP)PredictedNegative(FN+TN)TP+FP+FN+TN列聯表引入兩新名詞其真類率(truepositiverate,TPR),計算公式TPR=TP/(TP+FN)刻畫類器所識別實例占所實例比例另外假類率(falsepositiverate,FPR),計算公式FPR=FP/(FP+TN)計算類器錯認類負實例占所負實例比例真負類率(TrueNegativeRateTNR)稱specificity,計算公式TNR=TN/(FP+TN)=1-FPR二類模型于所連續結假設已確定閾值比說0.6于值實例劃歸類于值則劃負類減閾值減0.5固能識別類提高識別例占所例比例即TPR同負實例作實例即提高FPR形象化變化引入ROCReceiverOperatingCharacteristic,翻譯接受者操作特性曲線夠拗口曲線由兩變量1-specificitySensitivity繪制.1-specificity=FPR即假類率Sensitivity即真類率TPR(Truepositiverate),反映類覆蓋程度組合1-specificitysensitivity,即代價(costs)收益(benefits)表邏輯歸結實數值按劃10數相同部Percentile實例數例數1-特異度(%)敏度(%)10618048792.7334.6420618028049.8054.55306180216518.2269.92406180150628.0180.6250618098738.9087.6260618052950.7491.3870618036562.9393.9780618029475.2696.0690618029787.5998.171006177258100.00100.00其例數部實際類數說邏輯歸結按排列倘若前10%數值作閥值即前10%實例都劃歸類6180其確數4879占所類4879/14084*100%=34.64%即敏度;另外6180-4879=1301負實例錯劃類占所負類1301/47713*100%=2.73%,即1-特異度兩組值別作x值y值excel作散點圖ROC曲線

3、機器學習中roc曲線的accuracy怎么求

考慮一個二分問題,即將實例分成正類(positive)或負類(negative)。對一個二分問題來說,會出現四種情況。如果一個實例是正類并且也被預測成正類,即為真正類(Truepositive),如果實例是負類被預測成正類,稱之為假正類(Falsepositive)。相應地,如果實例是負類被預測成負類,稱之為真負類(Truenegative),正類被預測成負類則為假負類(falsenegative)。列聯表如下表所示,1代表正類,0代表負類。預測10合計實際1TruePositive(TP)FalseNegative(FN)ActualPositive(TP+FN)0FalsePositive(FP)TrueNegative(TN)ActualNegative(FP+TN)合計PredictedPositive(TP+FP)PredictedNegative(FN+TN)TP+FP+FN+TN從列聯表引入兩個新名詞。其一是真正類率(truepositiverate,TPR),計算公式為TPR=TP/(TP+FN),刻畫的是分類器所識別出的正實例占所有正實例的比例。另外一個是假正類率(falsepositiverate,FPR),計算公式為FPR=FP/(FP+TN),計算的是分類器錯認為正類的負實例占所有負實例的比例。還有一個真負類率(TrueNegativeRate,TNR),也稱為specificity,計算公式為TNR=TN/(FP+TN)=1-FPR。在一個二分類模型中,對于所得到的連續結果,假設已確定一個閾值,比如說0.6,大于這個值的實例劃歸為正類,小于這個值則劃到負類中。如果減小閾值,減到0.5,固然能識別出的正類,也就是提高了識別出的正例占所有正例的比例,即TPR,但同時也將的負實例當作了正實例,即提高了FPR。為了形象化這一變化,在此引入ROC。ReceiverOperatingCharacteristic,翻譯為接受者操作特性曲線,夠拗口的。曲線由兩個變量1-specificity和Sensitivity繪制.1-specificity=FPR,即假正類率。Sensitivity即是真正類率,TPR(Truepositiverate),反映了正類覆蓋程度。這個組合以1-specificity對sensitivity,即是以代價(costs)對收益(benefits)。下表是一個邏輯回歸得到的結果。將得到的實數值按大到小劃分成10個個數相同的部分。Percentile實例數正例數1-特異度(%)敏感度(%)10618048792.7334.6420618028049.8054.55306180216518.2269.92406180150628.0180.6250618098738.9087.6260618052950.7491.3870618036562.9393.9780618029475.2696.0690618029787.5998.171006177258100.00100.00其正例數為此部分里實際的正類數。也就是說,將邏輯回歸得到的結果按從大到小排列,倘若以前10%的數值作為閥值,即將前10%的實例都劃歸為正類,6180個。其中,正確的個數為4879個,占所有正類的4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301個負實例被錯劃為正類,占所有負類的1301/47713*100%=2.73%,即1-特異度。以這兩組值分別作為x值和y值,在excel中作散點圖。得到ROC曲線如下 你講的是信號檢測論里的吧?ROC曲線縱軸是擊中率,橫軸是虛報率,對角線表示隨機概率.對角線以上鏈接對角向上彎曲的曲線就是ROC曲線.曲率越大越向上表示被試感受性越強.

4、機器學習模型評價指標及R實現

機器學習模型評價指標及R實現
1.ROC曲線
考慮一個二分問題,即將實例分成正類(positive)或負類(negative)。對一個二分問題來說,會出現四種情況。如果一個實例是正類并且也被 預測成正類,即為真正類(True positive),如果實例是負類被預測成正類,稱之為假正類(False positive)。相應地,如果實例是負類被預測成負類,稱之為真負類(True negative),正類被預測成負類則為假負類(false negative)。
列聯表如下表所示,1代表正類,0代表負類。

真正類率(true positive rate ,TPR), 也稱為 Sensitivity,計算公式為TPR=TP/ (TP+ FN),刻畫的是分類器所識別出的 正實例占所有正實例的比例。
假正類率(false positive rate, FPR),計算公式為FPR= FP / (FP + TN),計算的是分類器錯認為正類的負實例占所有負實例的比例。
真負類率(True Negative Rate,TNR),也稱為specificity,計算公式為TNR=TN/ (FP+ TN) = 1 - FPR。 在一個二分類模型中,對于所得到的連續結果,假設已確定一個閾值,比如說 0.6,大于這個值的實例劃歸為正類,小于這個值則劃到負類中。如果減小閾值,減到0.5,固然能識別出更多的正類,也就是提高了識別出的正例占所有正例的比例,即TPR,但同時也將更多的負實例當作了正實例,即提高了FPR。為了形象化這一變化,在此引入ROC。

ROC曲線正是由兩個變量1-specificity(x軸) 和 Sensitivity(y軸)繪制的,其中1-specificity為FPR,Sensitivity為TPR。隨著閾值的改變,就能得到每個閾值所對應的1-specificity和Sensitivity,最后繪制成圖像。
該圖像的面積如果越接近1,那么我們則認為該分類器效果越好。從直覺上來說,假設我們的預測全部100%正確,那么不管閾值怎么變(除了閾值等于0和1時),我們的Sensitivity(真正類)率永遠等于1,1-specificity(1-真負類率)永遠等于0,所以該圖就是個正方形,面積為1,效果最好。

樣例數據集:

library(ROCR)
data(ROCR.simple)
ROCR.simple<-as.data.frame(ROCR.simple)
head(ROCR.simple)
# predictions labels
# 1 0.6125478 1
# 2 0.3642710 1
# 3 0.4321361 0
# 4 0.1402911 0
# 5 0.3848959 0
# 6 0.2444155 1

繪制ROC圖:

pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
perf <- performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)

2.AUC值
AUC值就是ROC曲線下的面積,可以通過以下代碼計算:
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
auc.tmp <- performance(pred,"auc")
auc <- as.numeric(auc.tmp@y.values)
3.Recall-Precision(PR)曲線
同樣是一個二分類的模型的列聯表,我們可以定義:

然后我們通過計算不同的閾值,以Recall為X軸,Precision為Y軸繪制圖像。
PR圖可以有這樣的應用,引用一個例子[1]:
1. 地震的預測
對于地震的預測,我們希望的是RECALL非常高,也就是說每次地震我們都希望預測出來。這個時候我們可以犧牲PRECISION。情愿發出1000次警報,把10次地震都預測正確了;也不要預測100次對了8次漏了兩次。
2. 嫌疑人定罪
基于不錯怪一個好人的原則,對于嫌疑人的定罪我們希望是非常準確的。及時有時候放過了一些罪犯(recall低),但也是值得的。

對于分類器來說,本質上是給一個概率,此時,我們再選擇一個CUTOFF點(閥值),高于這個點的判正,低于的判負。那么這個點的選擇就需要結合你的具體場景去選擇。反過來,場景會決定訓練模型時的標準,比如第一個場景中,我們就只看RECALL=99.9999%(地震全中)時的PRECISION,其他指標就變得沒有了意義。

繪制代碼:

pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
RP.perf <- performance(pred, "prec", "rec")
plot (RP.perf)
#查看閾值為0.1,0.5,0.9下的召回率和精確率
plot(RP.perf, colorize=T, colorkey.pos="top",
print.cutoffs.at=c(0.1,0.5,0.9), text.cex=1,
text.adj=c(1.2, 1.2), lwd=2)

一般這曲線越靠上,則認為模型越好。對于這個曲線的評價,我們可以使用F分數來描述它。就像ROC使用AUC來描述一樣。
4.F1分數

分數定義如下:

我們可以使用R計算F1分數:

pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
f.perf <- performance(pred, "f")
plot(f.perf) #橫坐標為閾值的取值

5.均方根誤差RMSE
回歸模型中最常用的評價模型便是RMSE(root mean square error,平方根誤差),其又被稱為RMSD(root mean square deviation),其定義如下:

其中,yi是第i個樣本的真實值,y^i是第i個樣本的預測值,n是樣本的個數。該評價指標使用的便是歐式距離。
??RMSE雖然廣為使用,但是其存在一些缺點,因為它是使用平均誤差,而平均值對異常點(outliers)較敏感,如果回歸器對某個點的回歸值很不理性,那么它的誤差則較大,從而會對RMSE的值有較大影響,即平均值是非魯棒的。 所以有的時候我們會先剔除掉異常值,然后再計算RMSE。

R語言中RMSE計算代碼如下:

pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
rmse.tmp<-performance(pred, "rmse")
rmse<-rmse.tmp@y.values
6.SAR

SAR是一個結合了各類評價指標,想要使得評價更具有魯棒性的指標。(cf. Caruana R., ROCAI2004):

其中準確率(Accuracy)是指在分類中,使用測試集對模型進行分類,分類正確的記錄個數占總記錄個數的比例:

pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels)
sar.perf<-performance(pred, "sar")
7.多分類的AUC[5]

將二類 AUC 方法直接擴展到多類分類評估中, 存在表述空間維數高、復雜性大的問題。 一般采用將多類分類轉成多個二類分類的思想, 用二類 AUC 方法來評估多類分類器的性能。Fawcett 根據這種思想提出了 F- AUC 方法[4], 該評估模型如下

其中AUC(i,rest)是計算 用 ” 1- a- r”方 法 得 到 的 每 個 二 類 分 類器的 AUC 值,“ 1- a- r”方法思想是 k 類分類問題構造 k 個二類分類器, 第 i 個二類分類器中用第 i 類的訓練樣本作為正例, 其他所有樣本作為負例。 p ( i) 是計算每個類在所有樣本中占有的比例,

5、機器學習除了準確率,召回率,roc,還有沒有其他的評價指標

分類

混淆矩陣1

True Positive(真正, TP):將正類預測為正類數.

True Negative(真負 , TN):將負類預測為負類數.

False Positive(假正, FP):將負類預測為正類數 →→ 誤報 (Type I error).

False Negative(假負 , FN):將正類預測為負類數 →→ 漏報 (Type II error).

精確率(precision)定義為:

P=TPTP+FP(1)(1)P=TPTP+FP

需要注意的是精確率(precision)和準確率(accuracy)是不一樣的,

ACC=TP+TNTP+TN+FP+FNACC=TP+TNTP+TN+FP+FN

在正負樣本不平衡的情況下,準確率這個評價指標有很大的缺陷。比如在互聯網廣告里面,點擊的數量是很少的,一般只有千分之幾,如果用acc,即使全部預測成負類(不點擊)acc 也有 99% 以上,沒有意義。

召回率(recall,sensitivity,true positive rate)定義為:

R=TPTP+FN(2)(2)R=TPTP+FN

此外,還有 F1F1 值,是精確率和召回率的調和均值,

2F1F1=1P+1R=2TP2TP+FP+FN(3)2F1=1P+1R(3)F1=2TP2TP+FP+FN

精確率和準確率都高的情況下,F1F1 值也會高。

通俗版本

剛開始接觸這兩個概念的時候總搞混,時間一長就記不清了。

實際上非常簡單,精確率是針對我們預測結果而言的,它表示的是預測為正的樣本中有多少是對的。那么預測為正就有兩種可能了,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP)。

而召回率是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,一種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測為負類(FN)。

在信息檢索領域,精確率和召回率又被稱為查準率和查全率,

查準率查全率=檢索出的相關信息量檢索出的信息總量=檢索出的相關信息量系統中的相關信息總量查準率=檢索出的相關信息量檢索出的信息總量查全率=檢索出的相關信息量系統中的相關信息總量

ROC 曲線

我們先來看下維基百科的定義,

In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.

比如在邏輯回歸里面,我們會設一個閾值,大于這個值的為正類,小于這個值為負類。如果我們減小這個閥值,那么更多的樣本會被識別為正類。這會提高正類的識別率,但同時也會使得更多的負類被錯誤識別為正類。為了形象化這一變化,在此引入 ROC ,ROC 曲線可以用于評價一個分類器好壞。

ROC 關注兩個指標,

true positive rate:false positive rate:TPR=TPTP+FNFPR=FPFP+TNtrue positive rate:TPR=TPTP+FNfalse positive rate:FPR=FPFP+TN

直觀上,TPR 代表能將正例分對的概率,FPR 代表將負例錯分為正例的概率。在 ROC 空間中,每個點的橫坐標是 FPR,縱坐標是 TPR,這也就描繪了分類器在 TP(真正率)和 FP(假正率)間的 trade-off2。

AUC

AUC(Area Under Curve)被定義為ROC曲線下的面積,顯然這個面積的數值不會大于1。

The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.

翻譯過來就是,隨機挑選一個正樣本以及一個負樣本,分類器判定正樣本的值高于負樣本的概率就是 AUC 值。

簡單說:AUC值越大的分類器,正確率越高3。

AUC=1AUC=1,完美分類器,采用這個預測模型時,不管設定什么閾值都能得出完美預測。絕大多數預測的場合,不存在完美分類器。

0.5<AUC<10.5<AUC<1,優于隨機猜測。這個分類器(模型)妥善設定閾值的話,能有預測價值。

AUC=0.5AUC=0.5,跟隨機猜測一樣(例:丟銅板),模型沒有預測價值。

AUC<0.5AUC<0.5,比隨機猜測還差;但只要總是反預測而行,就優于隨機猜測,因此不存在 AUC<0.5AUC<0.5 的情況。

既然已經這么多評價標準,為什么還要使用ROC和AUC呢?因為ROC曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變。在實際的數據集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反)

回歸4

平均絕對誤差

平均絕對誤差MAE(Mean Absolute Error)又被稱為 l1l1 范數損失(l1-norm loss):

MAE(y,y^)=1nsamples∑i=1nsamples|yi−y^i|MAE(y,y^)=1nsamples∑i=1nsamples|yi−y^i|

平均平方誤差

平均平方誤差 MSE(Mean Squared Error)又被稱為 l2l2 范數損失(l2-norm loss):

MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2MSE(y,y^)=1nsamples∑i=1nsamples(yi−y^i)2

看你要做什么樣的任務,根據任務來定指標。
比如說你如果要做的是檢索方面的任務,那么準確率、召回率還有其衍生出來的F1值是常用的指標。ROC曲線當然也是一個不錯的指標。
如果你做的是預測方面的任務,那么衡量的就是預測的誤差了,這個時候可能就會要用到RMSE(均方根誤差)這樣的指標了。具體的計算公式你可以百度。
如果你要做的是排序方面的任務,還有MAP(平均準確率)、NDCG等等。
所以說,要先確定問題,再根據問題選擇相應的評價指標

轉載請帶上網址:http://www.xingyun520.com/posjitwo/145531.html

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。
聯系我們
訂購聯系:小莉
微信聯系方式
地址:深圳市寶安區固戍聯誠發產業園木星大廈

公司地址:深圳市寶安區固戍聯誠發產業園木星大廈

舉報投訴 免責申明 版權申明 廣告服務 投稿須知 技術支持:第一POS網 Copyright@2008-2030 深圳市慧聯實業有限公司 備案號:粵ICP備18141915號