1. 程式人生 > >推薦演算法中模型評估標準——AUC和 NE

推薦演算法中模型評估標準——AUC和 NE

廣告電商等推薦演算法中,評估模型質量的指標,目前用的較多的有:AUC,NE, Bias.

AUC(area under curve):  名字曲線下面積,曲線指的的是ROC曲線,ROC曲線如下圖(a)所示,其中橫座標是假正率(負樣本預測為正的比率),縱座標是真正率(正樣本預測為正的比率),很顯然,假正率越低同時真正率越高的越好。但這些比率和分類閾值有關,相關比率曲線如圖(b),閾值取得越低,更多的樣本被預測為正,真正率將會很高,但假正率也增高;反之閾值過高,假正率會很低,但真正率也會變低。我們儘量希望假正率低且虛警率高,所以曲線應該儘可能低靠近左上角。

在推薦演算法中,我們不太關心閾值怎麼取的問題,因為我們只需要對全部item進行打分並排序就夠了,排在前面的N個(N由業務需求決定)推薦給使用者。如果在分類問題中,需要制定一個閾值,一般來說,我們會選擇一個比較折中的閾值,在圖(a)的equal error rate位置,這個位置是左上角到右下角連線與ROC曲線的交點,這時候假正率和假負率相等,認為比較平衡。

AUC是曲線下面積,這個值越接近1,表面曲線越靠近左上角,認為模型效能越好。auc的直觀含義是任意取一個正樣本和負樣本,正樣本得分大於負樣本的概率。

NE(normized entropy):是由facebook提出的模型評估標準。它的定義為每次曝光時預測得到的log loss(交叉熵損失)的平均值,除以整個資料集原本的資訊熵,如下所示:

其中N是樣本數量,yi是預測值{+1,-1},pi是預測為+1的概率(在LR演算法模型中的評分值,p是整體CTR。對於好的預測:當yi=1時,即樣本為正,pi約接近1越好;當yi=-1,即樣本為負,pi約接近0越好。我們發現,在好的預測時,NE的分子項都接近於0,而不好的預測,NE會增大。因此,NE越小,通常認為模型越好。

為什麼需要將整個資料集的資訊熵作為NE公式的分母呢,即為什麼要normlize?這主要是解決樣本分佈不均衡的情況。設想一下,如果樣本99%都是負樣本(或者正樣本),模型將所有樣本都預測為負樣本(或正樣本),如果不進行normalize,NE會很小,但這樣的模型顯然是沒有意義的。為了抵消掉訓練資料樣本分佈不平衡帶來的影響,我們利用整體CTR的資訊熵作為分母,為什麼是資訊熵呢?我們可以看下面二進熵的函式曲線,我們發現樣本不平衡時(正樣本概率接近0或1),資訊熵很小,作為分母抵消掉分子過小的問題。

相關推薦

推薦演算法模型評估標準——AUC NE

廣告電商等推薦演算法中,評估模型質量的指標,目前用的較多的有:AUC,NE, Bias. AUC(area under curve):  名字曲線下面積,曲線指的的是ROC曲線,ROC曲線如下圖(a)所示,其中橫座標是假正率(負樣本預測為正的比率),縱座標是真正率(正樣本預

python 機器學習模型評估調參

劃分 gif osi 最終 http 都沒有 select enume 沒有 在做數據處理時,需要用到不同的手法,如特征標準化,主成分分析,等等會重復用到某些參數,sklearn中提供了管道,可以一次性的解決該問題 先展示先通常的做法 import pandas as

常用排序演算法的時間複雜度空間複雜度

排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 O(n2) O(n2) 穩定 O(1) 快速排序 O(n2) O(n*log2n) 不穩定 O(log2n)~O(n) 選擇排序 O(n2) O(n2) 不穩定

【轉】分類/迴歸模型評估—ROC,AUC,RMSE等指標/調參—Grid Search

看到此篇文章內容乾貨較多,轉載過來學習。 連結:https://www.52ml.net/20410.html 模型評估的方法         一般情況來說,F1評分或者R平方(R-Squared value)等數值評分可以告訴我們訓練的機器學習模型的好壞。也有

機器學習-淺談模型評估的方法指標

以處理流程為骨架來學習方便依照框架的充實細節又不失概要(參考下圖機器學習處理流程的一個例項<<Python資料分析與挖掘實戰>>),今天就充實一下模型評估(模型評價)的部分吧. 圖-1-機器學習處理流程例項 本"故事"以<<Py

關於DPM(Deformable Part Model)演算法模型結構的解釋

含有n個部件的目標模型可以形式上定義為一個(n+2)元組:(F0,P1,..., Pn, b),F0是根濾波器,Pi是第i個部件的模型,b是表示偏差的實數值。每個部件模型用一個三元組定義:(Fi,vi, di),Fi是第i個部件的濾波器;vi是一個二維向量,指定第i個

模型評估指標AUC(area under the curve)

AUC在機器學習領域中是一種模型評估指標。根據維基百科的定義,AUC(area under the curve)是ROC曲線下的面積。所以,在理解AUC之前,要先了解ROC是什麼。而ROC的計算又需要藉助混淆矩陣,因此,我們先從混淆矩陣開始談起。 混淆矩陣

模型評估標準常用指標

一、分類指標 樣本中存在兩種兩種標籤:樣本真實標籤和模型預測標籤。 根據這兩個標籤可以得到一個混淆矩陣: 每一行代表樣本的真實類別,資料總數表示該類別的樣本總數。 每一列代表樣本的預測類別,資料總數表示該類別的樣本總數。 分類模型的評價指標主要基於混淆矩陣。

購物網站的推薦演算法-個性化推薦演算法如何處理買了還推

1. 引言 目前在工業界推薦中廣泛使用的協同過濾演算法(Collaborative Filtering)主要分為user-based和item-based兩種型別,user-based多用於挖掘那些有共同興趣的小團體;而item-based側重於挖掘item之間

機器學習-分類模型評估標準

          對模型的泛化效能進行評估,不僅需要有效可行的實驗估計方法,還需要有衡量模型泛化能力的評價標準,這就是效能度量(performance measure),迴歸任務最常用的效能度量是"均方誤差" (mean squared error)。下面主要介紹分類模型的

機器學習模型評估標準選擇循環圖

分享 his 技術分享 選擇 sta 目標 rac 學習 code 要根據不同的目標選取合適的評估指標。 進行二分類問題的時候,數據集之間的不平衡,會導致評價指標accuracy很高,但是卻不能反應模型的好壞。

機器學習 模型評估的 精確率、召回率、F1、ROC、AUC

文章目錄 1 混淆矩陣 1.2 多分類的例子 2.2 二分類的例子 2.3 二分類真實數值計算 2 各類指標的優缺點 1 混淆矩陣 準確率對於分類器的效能分析來說,並不是一個很好地衡量指標,因為如果資料

主題模型LDA及其在微博推薦&廣告演算法的應用--第1期

因為原文偶爾會出現訪問不了的情況,所以特拷貝於此。 @吳宇WB 【前言】本篇文章中所涉及的大部分理論知識,都是由微博的推薦演算法和廣告演算法團隊共同收集,共同學習的,而現在這兩個團隊也合併成為一個更大的-

mxnet自定義損失函式評估標準

mxnet中使用MakeLoss自定義損失函式 mxnet.symbol.MakeLoss(data=None, grad_scale=_Null, valid_thresh=_Null, normalization=_Null, name=None, a

模型評估:K-S值AUC的區別

(原創作者:陳玓玏) 在模型建立之後,必須對模型的效果進行評估,因為資料探勘是一個探索的過程,評估-優化是一個永恆的過程。在分類模型評估中,最常用的兩種評估標準就是K-S值和AUC值。 可能有人會問了,為什麼不直接看正確率呢?你可以這麼想,如果一批樣本中,

機器學習模型評估混淆矩陣、ROC曲線AUC以及PR曲線

       在機器學習中,當我們基於某個業務建立模型並訓練後,接下來我們需要評判模型好壞的時候需要基於混淆矩陣,ROC和AUC等來進行輔助判斷。 混淆矩陣也叫精度矩陣,是用來表示精度評價,為N *N的矩陣,用來判別分類好壞的指標。 混淆矩陣中有以下幾個概念: TP(T

TensorFlow用於評估模型在訓練集測試集上的準確度的幾個常用函式說明

1. tf.argmax() | tf.argmin() tf.argmax(input=tensor,dimention=axis) 找到給定的張量tensor中在指定軸axis上的最大值/最小值的位置。 a=tf.get_variable(nam

機器學習:模型評估選擇

val 上一個 bootstrap 自助法 break all 誤差 rec 數據集 2.1 經驗誤差與擬合 精度(accuracy)和錯誤率(error rate):精度=1-錯誤率 訓練誤差(training error)或經驗誤差(empirical error) 泛

機器學習推薦系統的評測指標—準確率(Precision)、召回率(Recall)、F值(F-Measure)簡介

模型 可擴展性 決策樹 balance rman bsp 理解 多個 缺失值 數據挖掘、機器學習和推薦系統中的評測指標—準確率(Precision)、召回率(Recall)、F值(F-Measure)簡介。 引言: 在機器學習、數據挖掘、推薦系統完成建模之後,需要對模型的

機器學習-Python訓練模型的保存再使用

ext model job 模型保存 PE dir code pre del 模型保存 BP:model.save(save_dir) SVM: from sklearn.externals import joblib joblib.dump(clf, save_dir)