Універсальний підхід (майже) до будь-якого завдання машинного навчання. Метрики якості ранжирування Метрики якості класифікації, що використовуються в машинному навчанні

У завданнях машинного навчання з метою оцінки якості моделей і порівняння різних алгоритмів використовуються метрики, які вибір і аналіз - неодмінна частина роботи датасатаніста.

У цій статті ми розглянемо деякі критерії якості у завданнях класифікації, обговоримо, що є важливим при виборі метрики і що може бути не так.

Метрики у завданнях класифікації

Для демонстрації корисних функцій sklearnі наочної вистави метрик ми будемо використовувати наш датасет по відтоку клієнтів телеком-оператора, з яким ми познайомилися в першій статті курсу.

Завантажимо необхідні бібліотеки та подивимося на дані

Import pandas як pd import matplotlib.pyplot як лот з matplotlib.pylab import rc, plot import seaborn як sns з скельної. з sklearn.metrics import precision_recall_curve, classification_report з sklearn.model_selection import train_test_split df = pd.read_csv("../../data/telecom_churn.csv")

Df.head(5)


Передобробка даних

# Зробимо мапінг бінарних колонок # і закодуємо dummy-кодуванням штат (для простоти, краще не робити так для дерев'яних моделей) d = ("Yes": 1, "No": 0) df["International plan"] = df[" International plan"].map(d) df["Voice mail plan"] = df["Voice mail plan"].map(d) df["Churn"] = df["Churn"].astype("int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape(- 1, 1)) tmp = pd.

Accuracy, precision та recall

Перед переходом до самих метриків необхідно запровадити важливу концепцію для опису цих метрик у термінах помилок класифікації. confusion matrix(матриця помилок).
Припустимо, що у нас є два класи та алгоритм, що передбачає передбачення належності кожного об'єкта одному з класів, тоді матриця помилок класифікації буде виглядати наступним чином:

True Positive (TP) False Positive (FP)
False Negative (FN) True Negative (TN)

Тут – це відповідь алгоритму на об'єкті, а – справжня мітка класу на цьому об'єкті.
Таким чином, помилки класифікації бувають двох видів: False Negative (FN) та False Positive (FP).

Навчання алгоритму та побудова матриці помилок

X = df.drop("Churn", axis=1) y = df["Churn"] # Ділимо вибірку на train і test, всі метрики оцінюватимемо на тестовому датасеті X_train, X_test, y_train, y_test = train_test_split(X, y , stratify=y, test_size=0.33, random_state=42) # Навчаємо рідну логістичну регресію lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Скористаємося функцією побудови матриці , normalize=False, title="(!LANG:Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Confusion matrix") plt.savefig("conf_matrix.png") plt.show()!}


Accuracy

Інтуїтивно зрозумілою, очевидною і майже не використовується метрикою є accuracy - частка правильних відповідей алгоритму:

Ця метрика марна в задачах з нерівними класами і це легко показати на прикладі.

Допустимо, ми хочемо оцінити роботу спам-фільтра пошти. У нас є 100 неспам листів, 90 з яких наш класифікатор визначив правильно (True Negative = 90, False Positive = 10) та 10 спам-листів, 5 з яких класифікатор також визначив правильно (True Positive = 5, False Negative = 5 ).
Тоді accuracy:

Однак якщо ми просто передбачатимемо всі листи як не-спам, то отримаємо вищу accuracy:

При цьому, наша модель абсолютно не має ніякої передбачувальної сили, тому що ми спочатку хотіли визначати листи зі спамом. Подолати це нам допоможе перехід із загальною для всіх класів метрики до окремих показників якості класів.

Precision, recall та F-міра

Для оцінки якості роботи алгоритму кожному з класів окремо введемо метрики precision (точність) і recall (повнота).

Precision можна інтерпретувати як частку об'єктів, названих класифікатором позитивними і при цьому дійсно позитивними, а recall показує, яку частку об'єктів позитивного класу з усіх об'єктів позитивного класу знайшов алгоритм.

Саме введення precision не дозволяє нам записувати всі об'єкти в один клас, тому що в цьому випадку ми отримуємо зростання рівня False Positive. Recall демонструє здатність алгоритму виявляти цей клас взагалі, а precision – здатність відрізняти цей клас від інших класів.

Як ми зазначали раніше, помилки класифікації бувають двох видів: False Positive та False Negative. У статистиці перший вид помилок називають помилкою І-го роду, а другий - помилкою ІІ-го роду. У нашій задачі з визначення відтоку абонентів, помилкою першого роду буде прийняття лояльного абонента за того, що йде, тому що наша нульова гіпотеза полягає в тому, що ніхто з абонентів не йде, а ми цю гіпотезу відкидаємо. Відповідно, помилкою другого роду буде "перепустка" абонента, що йде, і помилкове прийняття нульової гіпотези.

Precision і recall не залежить, на відміну accuracy, від співвідношення класів і тому застосовні за умов незбалансованих вибірок.
Часто у реальній практиці стоїть завдання знайти оптимальний (для замовника) баланс між цими двома метриками. Класичним прикладом є завдання визначення відпливу клієнтів.
Очевидно, що ми не можемо шукати всіхклієнтів, що йдуть у відтік і тількиїх. Але визначивши стратегію та ресурс для утримання клієнтів, ми можемо підібрати потрібні пороги по precision та recall. Наприклад, можна зосередитися на утриманні лише високоприбуткових клієнтів або тих, хто піде з більшою ймовірністю, оскільки ми обмежені ресурсами колл-центру.

Зазвичай, при оптимізації гіперпараметрів алгоритму (наприклад, у разі перебору по сітці GridSearchCV) використовується одна метрика, покращення якої ми і очікуємо побачити на тестовій вибірці.
Існує кілька різних способів об'єднати precision і recall в агрегований критерій якості. F-мера (в загальному випадку) - середнє гармонійне precision і recall:

В даному випадку визначає вагу точності в метриці, і при цьому середня гармонійна (з множником 2, щоб у випадку precision = 1 і recall = 1 мати )
F-мера досягає максимуму при повноті і точності, що дорівнює одиниці, і близька до нуля, якщо один з аргументів близький до нуля.
У sklearn є зручна функція _metrics.classification reportповертає recall, precision та F-заходу для кожного з класів, а також кількість екземплярів кожного класу.

Report = classification_report(y_test, lr.predict(X_test), target_names=["Non-churned", "Churned"]) print(report)

class precision recall f1-score support
Non-churned 0.88 0.97 0.93 941
Churned 0.60 0.25 0.35 159
avg/total 0.84 0.87 0.84 1100

Тут слід зазначити, що у разі завдань із незбалансованими класами, які превалюють у реальній практиці, часто доводиться вдаватися до технік штучної модифікації датасету для вирівнювання співвідношення класів. Їх існує багато і ми не будемо їх торкатися, можна подивитися деякі методи та вибрати відповідний для вашого завдання.

AUC-ROC та AUC-PR

При конвертації речової відповіді алгоритму (як правило, ймовірності приналежності до класу, окремо див SVM) в бінарну мітку, ми повинні вибрати будь-який поріг, при якому 0 стає 1. Природним і близьким здається поріг, що дорівнює 0.5, але він не завжди виявляється оптимальним, наприклад, при вищезгаданій відсутності балансу класів.

Одним із способів оцінити модель в цілому, не прив'язуючись до конкретного порога, є AUC-ROC (або ROC AUC) - площа ( A rea U nder C urve) під кривою помилок ( R eceiver O perating C haracteristic curve). Дана крива являє собою лінію від (0,0) до (1,1) у координатах True Positive Rate (TPR) та False Positive Rate (FPR):

TPR нам вже відома, це повнота, а FPR показує, яку частку з об'єктів negative класу алгоритм передбачив неправильно. В ідеальному випадку, коли класифікатор робить помилок (FPR = 0, TPR = 1) ми отримаємо площу під кривою, рівну одиниці; в іншому випадку, коли класифікатор випадково видає ймовірності класів, AUC-ROC буде прагнути до 0.5, оскільки класифікатор видаватиме однакову кількість TP та FP.
Кожна точка графіки відповідає вибору деякого порога. Площа під кривою в даному випадку показує якість алгоритму (більше – краще), крім цього, важливою є крутість самої кривої – ми хочемо максимізувати TPR, мінімізуючи FPR, а отже, наша крива в ідеалі має прагнути точки (0,1).

Код відтворення ROC-кривий

sns.set(font_scale=1.5) sns.set_color_codes("muted") plt.figure(figsize=(10, 8)) fpr, tpr, thresholds = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC curve") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("False Positive Rate ") plt.ylabel("True Positive Rate") plt.title("ROC curve") plt.savefig("ROC.png") plt.show()


Критерій AUC-ROC стійкий до незбалансованих класів (спойлер: на жаль, не все так однозначно) і може бути інтерпретований як ймовірність того, що випадково обраний positive об'єкт буде проранжований класифікатором вище (матиме більш високу ймовірність бути positive), ніж випадково обраний negative об'єкт .

Розглянемо наступне завдання: нам необхідно вибрати 100 релевантних документів із 1 мільйона документів. Ми намашинлернили два алгоритми:

  • Алгоритм 1повертає 100 документів, 90 з яких є релевантними. Таким чином,
  • Алгоритм 2повертає 2000 документів, 90 з яких є релевантними. Таким чином,

Швидше за все, ми вибрали б перший алгоритм, який видає дуже мало False Positive на тлі свого конкурента. Але різниця в False Positive Rate між цими двома алгоритмами кончемала – всього 0.0019. Це є наслідком того, що AUC-ROC вимірює частку False Positive щодо True Negative і в завданнях, де нам не так важливий другий (більший) клас, може давати не зовсім адекватну картину порівняння алгоритмів.

Для того, щоб поправити положення, повернемося до повноти та точності:

  • Алгоритм 1
  • Алгоритм 2

Тут уже помітна суттєва різниця між двома алгоритмами – 0.855 в точності!

Precision та recall також використовують для побудови кривої і, аналогічно AUC-ROC, знаходять площу під нею.


Тут можна відзначити, що на маленьких датасетах площа під PR-кривою може бути надто оптимістична, тому що обчислюється за методом трапецій, але зазвичай таких завдань даних достатньо. За подробицями про взаємини AUC-ROC та AUC-PR можна звернутися сюди.

Logistic Loss

Окремо стоїть логістична функція втрат, яка визначається як:

тут це відповідь алгоритму на об'єкті, справжня мітка класу на об'єкті, а розмір вибірки.

Докладно про математичну інтерпретацію логістичної функції втрат вже написано в рамках поста про лінійні моделі.
Дана метрика нечасто виступає у бізнес-вимогах, але часто – у завданнях на kaggle.
Інтуїтивно можна уявити мінімізацію logloss як завдання максимізації accuracy шляхом штрафу за невірні передбачення. Однак необхідно відзначити, що logloss вкрай сильно штрафує за впевненість класифікатора у невірній відповіді.

Розглянемо приклад:

Def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss при невпевненій класифікації %f " % logloss_crutch(1, 0.5)) >> Logloss при невпевненій класифікації 0.693147 print("Logloss при впевненій класифікації та вірній відповіді %f" % logloss_crutch(1, 0.9)) >> Logloss при впевненій класифікації та вірній відповіді"6 print. Logloss при впевненій класифікації та неправильній відповіді %f" % logloss_crutch(1, 0.1)) >> Logloss при впевненій класифікації та неправильній відповіді 2.302585

Зазначимо, як драматично зросла logloss при невірній відповіді та впевненій класифікації!
Отже, помилка одному об'єкті може дати істотне погіршення загальної помилки вибірці. Такі об'єкти часто бувають викидами, які потрібно забувати фільтрувати чи розглядати окремо.
Все стає на свої місця, якщо намалювати графік logloss:


Видно, що чим ближче до нуля відповідь алгоритму при ground truth = 1, тим вище значення помилки і крутіше росте крива.

Підсумуємо:

  • У разі багатокласової класифікації потрібно уважно стежити за метриками кожного з класів та дотримуватися логіки рішення завдання, а не оптимізації метрики
  • У разі нерівних класів потрібно підбирати баланс класів для навчання та метрику, яка коректно відображатиме якість класифікації.
  • mephistopheies і madrugado за допомогу у підготовці статті.

На елементах усередині кожного списку. Частковий порядок зазвичай задається шляхом вказівки оцінки для кожного елемента (наприклад, «релевантний» або «не релевантний»; можливе використання і більш ніж двох градацій). Мета ранжируючої моделі - якнайкраще (у певному сенсі) наблизити і узагальнити спосіб ранжування в навчальній вибірці нові дані.

Навчання ранжирування - це ще досить молода область досліджень, що бурхливо розвивається, що виникла в 2000-і роки з появою інтересу в галузі інформаційного пошуку до застосування методів машинного навчання до завдань ранжирування.

Енциклопедичний YouTube

  • 1 / 5

    Під час навчання ранжируючої моделі і при її роботі, кожна пара документ-запит переводиться в числовий вектор з ранжуючих ознак (також званих ранжуючими факторами або сигналами), що характеризують властивості документа, запиту та їх взаємини. Такі ознаки можна поділити на три групи:

    Нижче наведено деякі приклади ранжуючих ознак, що використовуються в широко відомому в даній галузі досліджень наборі даних LETOR:

    • Значення заходів TF, TF-IDF , BM25 та мовної моделі відповідності запиту різних зон документа (заголовка, URL, основного тексту, тексту посилань);
    • Довжини та IDF-суми зон документа;
    • Ранги документа, отримані різними варіантами таких алгоритмів ранжування посилань, як PageRank і HITS .

    Метрики якості ранжування

    Існує кілька метрик, якими оцінюють і порівнюють якість роботи алгоритмів ранжирування на вибірці з асесорними оцінками. Часто параметри моделі, що ранжирує, прагнуть підігнати так, щоб максимізувати значення однієї з цих метрик.

    Приклади метрик:

    Класифікація алгоритмів

    У своїй статті «Learning to Rank for Information Retrieval» та виступах на тематичних конференціях Тай-Ян Лью з Microsoft Research Asia проаналізував існуючі на той момент методи для вирішення завдання навчання ранжируванню та запропонував їх класифікацію на три підходи, залежно від вхідного представлення, що використовується. даних та функції штрафу:

    Поточковий підхід

    Примітки

    1. Tie-Yan Liu (2009), Learning to Rank for Information Retrieval, Foundations and Trends in Information Retrieval: Vol. 3: No 3, с. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561/1500000016. Доступні слайди з виступу Т. Лью на конференції WWW 2009 року.

    По відтоку клієнтів телеком-оператора.


    Завантажимо необхідні бібліотеки та подивимося на дані

    import pandas as pd import matplotlib.pyplot as plt from matplotlib.pylab import rc, plot import seaborn as sns from sklearn.preprocessing import LabelEncoder, OneHotEncoder from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier з sklearn.metrics import precision_recall_curve, classification_report з sklearn.model_selection import train_test_split df = pd.read_csv("../../data/telecom_churn.csv")


    df.head(5)

    Передобробка даних

    # Зробимо мапінг бінарних колонок # і закодуємо dummy-кодуванням штат (для простоти, краще не робити так для дерев'яних моделей) d = ("Yes": 1, "No": 0) df["International plan"] = df[" International plan"].map(d) df["Voice mail plan"] = df["Voice mail plan"].map(d) df["Churn"] = df["Churn"].astype("int64" ) le = LabelEncoder() df["State"] = le.fit_transform(df["State"]) ohe = OneHotEncoder(sparse=False) encoded_state = ohe.fit_transform(df["State"].values.reshape(- 1, 1)) tmp = pd.

    Accuracy, precision та recall

    Перед переходом до самих метриків необхідно запровадити важливу концепцію для опису цих метрик у термінах помилок класифікації. confusion matrix(матриця помилок).
    Припустимо, що у нас є два класи та алгоритм, що передбачає передбачення належності кожного об'єкта одному з класів, тоді матриця помилок класифікації буде виглядати наступним чином:


    True Positive (TP) False Positive (FP)
    False Negative (FN) True Negative (TN)

    Тут – це відповідь алгоритму на об'єкті, а – справжня мітка класу на цьому об'єкті.
    Таким чином, помилки класифікації бувають двох видів: False Negative (FN) та False Positive (FP).


    Навчання алгоритму та побудова матриці помилок

    X = df.drop("Churn", axis=1) y = df["Churn"] # Ділимо вибірку на train і test, всі метрики оцінюватимемо на тестовому датасеті X_train, X_test, y_train, y_test = train_test_split(X, y , stratify=y, test_size=0.33, random_state=42) # Навчаємо рідну логістичну регресію lr = LogisticRegression(random_state=42) lr.fit(X_train, y_train) # Скористаємося функцією побудови матриці , normalize=False, title="(!LANG:Confusion matrix", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Confusion matrix") plt.savefig("conf_matrix.png") plt.show()!}


    Accuracy

    Інтуїтивно зрозумілою, очевидною і майже не використовується метрикою є accuracy - частка правильних відповідей алгоритму:



    Ця метрика марна в завданнях з нерівними класами, і це легко показати на прикладі.


    Допустимо, ми хочемо оцінити роботу спам-фільтра пошти. У нас є 100 неспам листів, 90 з яких наш класифікатор визначив правильно (True Negative = 90, False Positive = 10), і 10 спам-листів, 5 з яких класифікатор також визначив правильно (True Positive = 5, False Negative = 5).
    Тоді accuracy:



    Однак якщо ми просто передбачатимемо всі листи як не-спам, то отримаємо вищу accuracy:



    При цьому наша модель абсолютно не має ніякої передбачувальної сили, оскільки спочатку ми хотіли визначати листи зі спамом. Подолати це нам допоможе перехід із загальною для всіх класів метрики до окремих показників якості класів.

    Precision, recall та F-міра

    Для оцінки якості роботи алгоритму кожному з класів окремо введемо метрики precision (точність) і recall (повнота).




    Precision можна інтерпретувати як частку об'єктів, названих класифікатором позитивними і при цьому дійсно позитивними, а recall показує, яку частку об'єктів позитивного класу з усіх об'єктів позитивного класу знайшов алгоритм.



    Саме введення precision не дозволяє нам записувати всі об'єкти в один клас, тому що в цьому випадку ми отримуємо зростання рівня False Positive. Recall демонструє здатність алгоритму виявляти цей клас взагалі, а precision – здатність відрізняти цей клас від інших класів.


    Як ми зазначали раніше, помилки класифікації бувають двох видів: False Positive та False Negative. У статистиці перший вид помилок називають помилкою І-го роду, а другий - помилкою ІІ-го роду. У нашій задачі з визначення відтоку абонентів, помилкою першого роду буде прийняття лояльного абонента за того, що йде, тому що наша нульова гіпотеза полягає в тому, що ніхто з абонентів не йде, а ми цю гіпотезу відкидаємо. Відповідно, помилкою другого роду буде "перепустка" абонента, що йде, і помилкове прийняття нульової гіпотези.


    Precision і recall не залежить, на відміну accuracy, від співвідношення класів і тому застосовні за умов незбалансованих вибірок.
    Часто у реальній практиці стоїть завдання знайти оптимальний (для замовника) баланс між цими двома метриками. Класичним прикладом є завдання визначення відпливу клієнтів.
    Очевидно, що ми не можемо шукати всіхклієнтів, що йдуть у відтік і тількиїх. Але, визначивши стратегію та ресурс для утримання клієнтів, ми можемо підібрати потрібні пороги по precision та recall. Наприклад, можна зосередитися на утриманні лише високоприбуткових клієнтів або тих, хто піде з більшою ймовірністю, оскільки ми обмежені ресурсами колл-центру.


    Зазвичай, при оптимізації гіперпараметрів алгоритму (наприклад, у разі перебору по сітці GridSearchCV) використовується одна метрика, покращення якої ми і очікуємо побачити на тестовій вибірці.
    Існує кілька різних способів об'єднати precision і recall в агрегований критерій якості. F-мера (в загальному випадку) - середнє гармонійне precision і recall:



    В даному випадку визначає вагу точності в метриці, і при цьому середня гармонійна (з множником 2, щоб у випадку precision = 1 і recall = 1 мати )
    F-мера досягає максимуму при повноті і точності, що дорівнює одиниці, і близька до нуля, якщо один з аргументів близький до нуля.
    У sklearn є зручна функція _metrics.classification report, що повертає recall, precision та F-заходу для кожного з класів, а також кількість екземплярів кожного класу.


    report = classification_report(y_test, lr.predict(X_test), target_names=["Non-churned", "Churned"]) print(report)
    class precision recall f1-score support
    Non-churned 0.88 0.97 0.93 941
    Churned 0.60 0.25 0.35 159
    avg/total 0.84 0.87 0.84 1100

    Тут слід зазначити, що у разі завдань із незбалансованими класами, які превалюють у реальній практиці, часто доводиться вдаватися до технік штучної модифікації датасету для вирівнювання співвідношення класів. Їх існує багато, і ми не будемо їх торкатися, можна подивитися деякі методи та вибрати відповідний для вашого завдання.

    AUC-ROC та AUC-PR

    При конвертації речової відповіді алгоритму (як правило, ймовірності приналежності до класу, окремо див SVM) в бінарну мітку, ми повинні вибрати будь-який поріг, при якому 0 стає 1. Природним і близьким здається поріг, що дорівнює 0.5, але він не завжди виявляється оптимальним, наприклад, при вищезгаданій відсутності балансу класів.


    Одним із способів оцінити модель в цілому, не прив'язуючись до конкретного порога, є AUC-ROC (або ROC AUC) - площа ( A rea U nder C urve) під кривою помилок ( R eceiver O perating C haracteristic curve). Дана крива являє собою лінію від (0,0) до (1,1) у координатах True Positive Rate (TPR) та False Positive Rate (FPR):




    TPR нам вже відома, це повнота, а FPR показує, яку частку з об'єктів negative класу алгоритм передбачив неправильно. В ідеальному випадку, коли класифікатор робить помилок (FPR = 0, TPR = 1) ми отримаємо площу під кривою, рівну одиниці; в іншому випадку, коли класифікатор випадково видає ймовірності класів, AUC-ROC буде прагнути до 0.5, оскільки класифікатор видаватиме однакову кількість TP та FP.
    Кожна точка графіки відповідає вибору деякого порога. Площа під кривою в даному випадку показує якість алгоритму (більше – краще), крім цього, важливою є крутість самої кривої – ми хочемо максимізувати TPR, мінімізуючи FPR, а отже, наша крива в ідеалі має прагнути точки (0,1).


    Код відтворення ROC-кривий

    sns.set(font_scale=1.5) sns.set_color_codes("muted") plt.figure(figsize=(10, 8)) fpr, tpr, thresholds = roc_curve(y_test, lr.predict_proba(X_test)[:,1], pos_label=1) lw = 2 plt.plot(fpr, tpr, lw=lw, label="ROC curve") plt.plot(, ) plt.xlim() plt.ylim() plt.xlabel("False Positive Rate ") plt.ylabel("True Positive Rate") plt.title("ROC curve") plt.savefig("ROC.png") plt.show()



    Критерій AUC-ROC стійкий до незбалансованих класів (спойлер: на жаль, не все так однозначно) і може бути інтерпретований як ймовірність того, що випадково обраний positive об'єкт буде проранжований класифікатором вище (матиме більш високу ймовірність бути positive), ніж випадково обраний negative об'єкт .


    Розглянемо наступне завдання: нам необхідно вибрати 100 релевантних документів із 1 мільйона документів. Ми намашинлернили два алгоритми:

    • Алгоритм 1повертає 100 документів, 90 з яких є релевантними. Таким чином,

    • Алгоритм 2повертає 2000 документів, 90 з яких є релевантними. Таким чином,


    Швидше за все, ми вибрали б перший алгоритм, який видає дуже мало False Positive на тлі свого конкурента. Але різниця в False Positive Rate між цими двома алгоритмами кончемала – всього 0.0019. Це є наслідком того, що AUC-ROC вимірює частку False Positive щодо True Negative і в завданнях, де нам не так важливий другий (більший) клас, може давати не зовсім адекватну картину порівняння алгоритмів.


    Для того, щоб поправити положення, повернемося до повноти та точності:

    • Алгоритм 1

    • Алгоритм 2


    Тут уже помітна суттєва різниця між двома алгоритмами – 0.855 в точності!


    Precision та recall також використовують для побудови кривої і, аналогічно AUC-ROC, знаходять площу під нею.



    Тут можна відзначити, що на маленьких датасетах площа під PR-кривою може бути надто оптимістична, тому що обчислюється за методом трапецій, але зазвичай таких завдань даних достатньо. За подробицями про взаємини AUC-ROC та AUC-PR можна звернутися сюди.

    Logistic Loss

    Окремо стоїть логістична функція втрат, яка визначається як:



    тут - це відповідь алгоритму на об'єкті, - справжня мітка класу на об'єкті, а розмір вибірки.


    Докладно про математичну інтерпретацію логістичної функції втрат вже написано в рамках поста про лінійні моделі.
    Дана метрика нечасто виступає у бізнес-вимогах, але часто – у завданнях на kaggle.
    Інтуїтивно можна уявити мінімізацію logloss як завдання максимізації accuracy шляхом штрафу за невірні передбачення. Однак необхідно відзначити, що logloss вкрай сильно штрафує за впевненість класифікатора у невірній відповіді.


    Розглянемо приклад:


    def logloss_crutch(y_true, y_pred, eps=1e-15): return - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)) print("Logloss при невпевненій класифікації %f " % logloss_crutch(1, 0.5)) >> Logloss при невпевненій класифікації 0.693147 print("Logloss при впевненій класифікації та вірній відповіді %f" % logloss_crutch(1, 0.9)) >> Logloss при впевненій класифікації та вірній відповіді"6 print. Logloss при впевненій класифікації та невірній відповіді %f" % logloss_crutch(1, 0.1)) >> Logloss при впевненій класифікації та невірній відповіді 2.302585

    Зазначимо, як драматично зросла logloss при невірній відповіді та впевненій класифікації!
    Отже, помилка одному об'єкті може дати істотне погіршення загальної помилки вибірці. Такі об'єкти часто бувають викидами, які потрібно забувати фільтрувати чи розглядати окремо.
    Все стає на свої місця, якщо намалювати графік logloss:



    Видно, чим ближче до нуля відповідь алгоритму при ground truth = 1, тим вище значення помилки і крутіше росте крива.

    Підсумуємо:

    • У разі багатокласової класифікації потрібно уважно стежити за метриками кожного з класів та дотримуватися логіки рішення завдання, а не оптимізації метрики
    • У разі нерівних класів потрібно підбирати баланс класів для навчання та метрику, яка коректно відображатиме якість класифікації.
    • та madrugado за допомогу у підготовці статті.
    1

    В останні роки приділяється багато уваги реконструкції зображень, відповідно оцінка якості є важливим завданням для порівняння різноманітних методів відновлення зображень. У багатьох випадках методи реконструкції призводять до розмиття текстури та структури при відновленні великих областей зі спотвореними значеннями пікселів. Об'єктивна кількісна оцінка результатів відновлення нині відсутня, у зв'язку з чим у багатьох підходах використовується експертна оцінка. У цій статті розглядається новий підхід оцінки якості відновлення зображень на основі машинного навчання з використанням моделі зору людини, який полягає в тому, що локальні області зображень можуть бути представлені дескрипторами у вигляді деяких параметричних розподілів. Далі метод опорних векторів регресії дозволяє передбачити якість відновлених зображень, що сприймається, відповідно до експертної оцінки. У роботі продемонстровано, що оцінка якості, отримана з використанням наведеного підходу, корелює з суб'єктивною оцінкою якості.

    машинне навчання

    візуальна якість

    реконструкція

    обробка зображень

    1. Gastaldo P. Machine розробляє рішення для objective visual quality assessment / 6th international workshop on video processing and quality metrics for consumer electronics, VPQM. - Vol. 12. – 2012.

    2. Bertalmio M., Bertozzi A., Sapiro G. Navier-Stokes, fluid dynamics, image та video inpainting/ Hawaii: Proc. IEEE Computer Vision and Pattern Recognition (CVPR) . - 2001. - PP. 213–226.

    3. Criminisi A., Perez P., Toyama K. Region filling and object removal by exemplar-based image inpainting / IEEE Trans. Image Process. - 13 (9). – 2004. – PP. 28–34.

    4. Vijay M., Cheung, S.S. Eye tracking based perceptual image inpainting quality analysis/ Image Processing (ICIP), 17th IEEE International Conference on IEEE. – 2010. – PP. 1109 – 1112.

    5. Ardis P.A., Singhal A. Visual salience metrics for image inpainting /SPIE Electronic Imaging. International Society for Optics and Photonics. – 2009.

    6. Cheung S.S., Zhao J., Venkatesh V. Efficient object-based video inpainting / Image Processing, 2006 IEEE International Conference on. – 2006. – PP. 705-708.

    7. Перетягін Г.І. Подання зображень випадковими гаусовими полями/ Автометрія. - № 6. - 1984. - С. 42 - 48.

    8. Frantc V.A., Voroni V.V., Marchuk V.I., Sherstobitov A.I., Agaian S., Egiazarian K. Machine вивчає approach для об'єктивного утискання quality assessment/ Proc. SPIE 9120, Mobile Multimedia/Image Processing, Security, and Applications. – Vol. 91200S. - 2014.

    9. Paul A., Singhal A. and. Brown C. Inpainting quality assessment / Journal of Electronic Imaging. – Vol. 19. - 2010. - PP. 011002-011002.

    Об'єктивна метрика якості є важливою частиною систем обробки зображень. Одним із важливих застосувань об'єктивних метрик оцінки якості зображень є оцінка ефективності алгоритмів та систем обробки зображень. Незважаючи на велику кількість публікацій на цю тематику, завдання оцінки якості реконструйованих зображень розглядається лише в небагатьох. У той же час завдання відновлення втрачених областей зображення отримала значну увагу останнім часом.

    Можливі два підходи до оцінки якості зображень: кількісна оцінка за допомогою використання математичних методів (середньоквадратична помилка, Lp-норма, заходи, що враховують особливості сприйняття зображення зорової системи людини) та суб'єктивна оцінка на основі експертних оцінок.

    Оцінка якості, отримана з використанням існуючих підходів, може значно відрізнятись від оцінки, отриманої за допомогою людей-експертів. Більшість існуючих підходів з метою оцінки якості використовують еталонне зображення. Але, на жаль, у багатьох випадках еталонне зображення недоступне. До таких завдань і завдання реконструкції втрачених пікселів. Таким чином, завдання розробки кількісної метрики оцінки якості реконструйованих зображень є актуальним.

    У розробці кількісних оцінок якості зображення досягнуто значних успіхів. Проте запроваджені критерії є досить досконалими. Більшість спроб знайти прийнятні оцінки якості зображення відноситься до окремих випадків. Пропонується певна оцінка, заснована на будь-яких фізіологічних передумовах, а частіше просто зручна для аналізу та обчислень, а потім оцінюються його властивості. Створення досконаліших оцінок якості зображень пов'язані з глибшим вивченням властивостей зорової системи людини.

    Метою даної роботиє розробка метрики оцінки якості зображень під час обробки методами реконструкції з урахуванням машинного навчання.

    Математична модель

    У статті використовуються позначення, аналогічні до позначень, прийнятих у роботі . Все зображення складається з двох областей, що не перетинаються: реконструйованої області, і відомої області. На малюнку 1 показаний приклад розташування цих галузей.

    Рис 1. Модель зображення

    Відомо зображення та область Ω усередині його. Завдання реконструкції полягає у модифікації значень пікселів зображення всередині області Ω, таким чином, щоб область не виділялася на тлі оточення. Ціль реконструкції може полягати у відновленні пошкоджених частин зображення (наприклад, подряпин та тріщин на старих фотографіях) або видалення небажаних об'єктів на зображенні. Показана малюнку 1 область Ω завжди визначається користувачем, тобто. визначення області Ω не є частиною завдання реконструкції.

    Алгоритм оцінки якості відновлення зображень

    Загалом для успішної побудови метрики якості зображення на основі машинного навчання потрібне вирішення трьох наступних завдань:

    1. Визначення простору ознак, що служать описом вхідних сигналів.

    2. Вибір функції відображення з простору ознак у простір оцінок якості.

    3. Навчання системи та перевірка її стійкості (перевірка на перенавчання тощо).

    Структурна схема обраного підходу представлена ​​малюнку 2 і містить такі етапи:

    1. Вибір області інтересу (з використанням картки уваги);

    2. Обчислення низькорівневих ознак зображення;

    3. Побудова дескриптора відновленої області з урахуванням низькорівневих особливостей;

    4. Розв'язання задачі регресії з метою одержання чисельної оцінки якості на основі одержаного вектора-дескриптора.

    Мал. 2. Блок-схема алгоритму

    У роботі показано, що візуальна увага відіграє важливу роль у зоровому сприйнятті людини. У кожний момент часу людське око ясно бачить лише невелику частину сцени, в той же час набагато значніша область сцени сприймається як «розмита». Цієї «розмитої інформації» достатньо для оцінки важливості різних областей сцени та привернення уваги до важливих областей зорового поля. Більшість методів дозволяють отримати карту уваги - двовимірне зображення, в якому значення кожного пікселя пов'язані з важливістю відповідної області.

    Для отримання карток уваги використовується Saliency Toolbox, описаний у роботі . Цей набір інструментів використовує модель зорової системи людини. Важливо відзначити, що немає сенсу порівнювати відновлену область на вихідному та відновленому зображенні, оскільки загальний зміст може значно змінитися. Для вибору областей інтересу пропонується використати наступне вираз:

    .

    Тут - карта уваги для реконструйованого зображення, а значення карти уваги, що відповідає пікселю. У виразі, наведеному вище, щільність погляду обчислюється всередині та зовні відновленої області зображень. Значення використовується як порогове значення при ухваленні рішення про те, які частини зображення будуть використовуватися при оцінці, а які ні. Приймаються до уваги ті області, котрим .

    Як низькорівневі ознаки локальних областей використовуються спектральні уявлення. Далі пропонується аналіз наступних базисів Фур'є, Уолша, Хаара із використанням вектора ефективності. Для коректного обчислення складових системного критерію ефективності за наявності перешкод та спотворень потребує застосування статистичного усереднення.

    p align="justify"> При синтезі алгоритмів обробки сигналів і систем найчастіше використовується критерій мінімуму середнього ризику, що дозволяє врахувати статистику перешкод і сигналів. При реалізації частотних перетворень та оцінці обчислювальних витрат важливе значення має вибір базису спектрального розкладання. Для оптимізації вибору базису розкладання сигналів доцільно використовувати критерій мінімуму середнього ризику. Для цього необхідно, щоб був заданий клас сигналів і процесів і були відомі їх ймовірнісні характеристики.

    Для заданого класу двовимірних процесів передбачається відомою ймовірність кожного з підкласів, де індекс - номер підкласу з деякими загальними властивостями, а - номер реалізації процесу підкласу. Порівнюватимемо деяку сукупність базисних систем Розкладання в узагальнений ряд Фур'є по базисній системі в загальному вигляді має вигляд: .

    При кінцевому числі членів низки Фур'є можна охарактеризувати похибкою: , де - відстань у певній метриці, - часткова сума членів низки Фур'є.

    Апаратурне визначення коефіцієнтів низки Фур'є чи його обчислення пов'язані з певними обчислювальними витратами . Введемо функцію втрат, що враховує як втрати, пов'язані з похибкою усічення ряду Фур'є, так і витрати апаратурних та обчислювальних ресурсів:

    .

    Значення умовного ризику залежить від підкласу сигналів, і від базису і обчислюється шляхом усереднення функції втрат за реалізаціям:

    де - щільність ймовірності аналізованих сигналів та перешкод; а кутові дужки означають операцію статистичного усереднення.

    Середній ризик визначається шляхом усереднення умовного ризику за підкласами сигналів:

    ,

    де - ймовірність -го підкласу сигналів.

    Відповідно до критерію мінімуму середнього ризику з базисів вибирається той, котрим середній ризик мінімальний.

    Для оцінки ефективності системного критерію якості обробки зображень розглядаються тестові зображення як текстур, отриманих з урахуванням моделювання гауссовских полів із заданими кореляційними функціями. Генерування однорідних нормальних випадкових полів, як і стаціонарних нормальних випадкових процесів, найпростіше проводиться методом формуючого фільтра.

    Як приклад у статті розглядається уявлення випадкових реалізацій з різними кореляційними функціями в базисах тригонометричних функцій (Фур'є), Уолша та Хаара. Проведемо аналіз у вибраних базисах для створених моделей зображень розміром 256 на 256 пікселів. Задамося також трьома типами розподілу ймовірностей підкласів: 1) рівномірне: ; 2) спадне: ;
    3) зростаюче: . Виберемо функцію вартості у вигляді: .

    Середній ризик визначається шляхом усереднення умовного ризику підкласів сигналів з використанням прийнятих апріорних ймовірностей підкласів сигналів, розраховані значення представлені в таблиці 1.

    Таблиця 1

    Величини середнього ризику

    Види розподілу ймовірностей

    Результати розрахунків, які у таблиці показують, що з прийнятих моделей двовимірних сигналів і розподілів їх ймовірностей базис Хаара має найменший середній ризик, а базис Фур'є найбільший.

    На основі проведеного аналізу виберемо базис Хаара для представлення локальних областей зображень. Слід зазначити, що розмір відновленої області є різним для різних зображень. У зв'язку з цим з урахуванням низькорівневих ознак слід формувати високорівневе уявлення фіксованого розміру. Як високорівневе уявлення використовується підхід «мішок слів». Процедура побудови дескриптора (сигнатури) відновленої області складається із двох кроків. На першому етапі будується словник. Для цього використовуються низькорівневі особливості, витягнуті зі всіх зображень навчального набору зображень. Для побудови словника вилучені особливості діляться на 100 класів з допомогою алгоритму кластеризації k-средних. Кожен елемент словника є центроїдом одного з класів, знайдених процедурою кластеризації. Кожне слово у словнику перетворює Хаара в блоці зображення розміром 8x8. Отриманий словник використовується другого етапу при побудові гістограм частот для слів зі словника як вектор ознак - дескриптора відновленої області (рис. 3). Набір дескрипторів використовується для навчання машини регресії (Support Vector Regression). Для отримання гістограми частот слів із словника витягуються всі візуально помітні області (помітність визначається з використанням карток уваги) конкретного зображення. Потім до кожного з вилучених блоків застосовується перетворення Хаара і виконується класифікація згідно з отриманим словником на основі евклідової відстані.

    Кожен бін результуючої гістограми містить число низькорівневих особливостей конкретного класу у цій відновленій області. Після нормалізації гістограми виходить «сигнатура» зображення – високорівневе уявлення відновленої області.

    Рис.3. Побудова гістограми

    Оцінка ефективності алгоритму оцінки якості відновлення зображень

    Для оцінки ефективності розробленої метрики використовувався набір тестових зображень. Набір складається із 300 зображень. Як методи відновлення вибрано такі підходи: метод, заснований на пошуку самоподібних областей, метод, заснований на спектральних перетвореннях, метод, заснований на обчисленні приватних похідних. Для кожного зображення було отримано експертну оцінку, із залученням 30 осіб. Результати були поділені на два набори, що не перетинаються. Перший використовувався на навчання, а другий для перевірки результату.

    Експерти оцінювали якість за шкалою, в якій 5 відповідає «Відмінно», а 1 відповідає «Дуже погано». Для оцінки ефективності одержаної метрики використовується коефіцієнт кореляції між векторами одержаних за допомогою об'єктивної метрики та експертним методом оцінок якості. Аналіз отриманих результатів таблиці 2 показує, що запропонований підхід перевершує відомі метрики якості на вибраному наборі тестових даних.

    Таблиця 2

    Коефіцієнт кореляції для різних методів обчислення об'єктивної
    метрики якості зображень

    Запропонований підхід

    Висновок

    У статті представлено об'єктивну метрику оцінки якості зображень на основі машинного навчання. Кількісні заходи якості зображення необхідні проектування та оцінки систем відтворення зображень. Ці заходи багато в чому допоможуть позбавитися трудомісткої та неточної сучасної методики оцінки зображень за допомогою суб'єктивної експертизи. З іншого боку, з урахуванням кількісних заходів можна розвивати методи оптимізації систем обробки зображень. Продемонстровано, що оцінка якості, отримана з використанням наведеного підходу, корелює з суб'єктивною оцінкою якості.

    Робота підтримана Міносвіти Росії в рамках ФЦП «Дослідження та розробки за пріоритетними напрямками розвитку науково-технологічного комплексу Росії на 2014-2020 роки» (угода №14.586.21.0013).

    Рецензенти:

    Федосов В.П., д.т.н., професор, завідувач кафедри ТОР інженерно-технологічної академії Південного Федерального Університету, м. Ростов-на-Дону;

    Марчук В.І., д.т.н., професор, завідувач кафедри «Радіоелектронні та електротехнічні системи та комплекси» ІСОіП (філія ДДТУ), м.Шахти.

    Бібліографічне посилання

    Воронін В.В. ОЦІНКА ЯКОСТІ ВІДНОВЛЕННЯ ЗОБРАЖЕНЬ НА ОСНОВІ МАШИННОГО НАВЧАННЯ // Сучасні проблеми науки та освіти. - 2014. - № 6.;
    URL: http://science-education.ru/ru/article/view?id=16294 (дата звернення: 01.02.2020). Пропонуємо до вашої уваги журнали, що видаються у видавництві «Академія Природознавства»

    У процесі підготовки завдання для вступного випробування на літню школу GoTo ми виявили, що російською мовою практично відсутній якісний опис основних метрик ранжирування (завдання стосувалося окремого випадку задачі ранжування - побудови рекомендаційного алгоритму). Ми в E-Contenta активно використовуємо різні метрики ранжування, тому вирішили виправити це більш непорозуміння, написавши цю статтю.

    Завдання ранжирування зараз виникає всюди: сортування веб-сторінок згідно з заданим пошуковим запитом, персоналізація стрічки новин, рекомендації відео, товарів, музики… Одним словом, тема гаряча. Є навіть спеціальний напрямок у машинному навчанні, яке займається вивченням алгоритмів ранжирування, здатних самонавчатись - навчання ранжування (learning to rank). Щоб вибрати з усього різноманіття алгоритмів та підходів найкращий, необхідно вміти оцінювати їхню якість кількісно. Про найпоширеніші метрики якості ранжування і йтиметься далі.

    Коротко про завдання ранжирування

    Ранжування - завдання сортування набору елементівз їхньої міркування релевантності. Найчастіше релевантність розуміється стосовно когось об'єкту. Наприклад, в задачі інформаційного пошуку об'єкт - це запит, елементи - всілякі документи (посилання на них), а релевантність - відповідність документа запиту, в задачі рекомендацій об'єкт - це користувач, елементи - той чи інший рекомендований контент (товари, відео, музика ), а релевантність - ймовірність того, що користувач скористається (купить/лайкнет/перегляд) даним контентом.

    Формально, розглянемо N об'єктів та M елементів . Реузальтат роботи алгоритму ранжирування елементів для об'єкта - це відображення, яке зіставляє кожному елементу вагу, що характеризує ступінь релевантності елемента об'єкту (чим більше вага, тим об'єкт релевантніший). При цьому, набір ваг задає перестановку на наборі елементів елементів (вважаємо, що безліч елементів упорядковане) виходячи з їх сортування за зменшенням ваги.

    Щоб оцінити якість ранжирування, потрібно мати певний «еталон», з яким можна було б порівняти результати алгоритму. Розглянемо - еталонну функцію релевантності, що характеризує «справжню» релевантність елементів для даного об'єкта (- елемент ідеально підходить, - повністю нерелевантний), а так само відповідну їй перестановку (за спаданням).

    Існує два основних способи отримання:
    1. На основі історичних даних. Наприклад, у разі рекомендацій контенту, можна взяти перегляди (лайки, покупки) користувача та присвоїти переглянутим вагам відповідних елементів 1 (), а решті - 0.
    2. На основі експертної оцінки. Наприклад, у задачі пошуку, для кожного запиту можна залучити команду асесорів, які оцінять вручну релевантності документів запиту.

    Варто зазначити, що коли набуває лише екстремальних значень: 0 і 1, то перестановку зазвичай не розглядають і враховують лише безліч релевантних елементів, для яких .

    Мета метрики якості ранжування- визначити, наскільки отримані алгоритмом оцінки релевантності та відповідна їм перестановка відповідають істиннимзначенням релевантності. Розглянемо основні метрики.

    Mean average precision

    Mean average precision at K ( [email protected]) - одна з найчастіше використовуваних метрик якості ранжування. Щоб розібратися в тому, як вона працює, почнемо з «основ».

    Примітка: "*precision" метрики використовується в бінарних задачах, де приймає лише два значення: 0 та 1.

    Precision at K

    Precision at K ( [email protected]) - точність на K елементах - базова метрика якості ранжування одного об'єкта. Припустимо, наш алгоритм ранжирування видав оцінки релевантності кожному за елемента . Відібравши серед них перші елементи з найбільшим, можна порахувати частку релевантних. Саме це і робить precision at K:

    Зауваження: під розуміється елемент , який у результаті перестановки опинився на позиції. Так, - елемент з найбільшим - елемент з другим за величиною і так далі.

    Average precision at K

    Precision at K – метрика проста для розуміння та реалізації, але має важливий недолік – вона не враховує порядок елементів у «топі». Так, якщо з десяти елементів ми вгадали лише один, то не важливо, на якому місці він був: на першому, або на останньому, - у будь-якому випадку. При цьому очевидно, що перший варіант набагато кращий.

    Цей недолік нівелює метрика ранжирування average precision at K ( [email protected]) , яка дорівнює сумі [email protected]за індексами k від 1 до K тільки для релевантних елементів, Ділено на K:

    Так, якщо з трьох елементів ми релевантним виявився тільки що знаходиться на останньому місці, то якщо вгадали лише той, що був на першому місці, то , а якщо вгадані були всі, то .

    Тепер і [email protected]нам по зубах.

    Mean average precision на K

    Mean average precision at K ( [email protected]) - одна з найчастіше використовуваних метрик якості ранжування. У [email protected]і [email protected]якість ранжирування оцінюється окремо взятого об'єкта (користувача, пошукового запиту). На практиці об'єктів безліч: ми маємо справу із сотнями тисяч користувачів, мільйонами пошукових запитів тощо. Ідея [email protected]полягає в тому, щоб порахувати [email protected]для кожного об'єкта та усереднити:

    Зауваження: ідея ця цілком логічна, якщо припустити, що всі користувачі однаково потрібні та однаково важливі. Якщо ж це не так, то замість простого усереднення можна використовувати виважене, домноживши [email protected]кожного об'єкта на відповідну його «важливість» вагу.

    Normalized Discounted Cumulative Gain

    Normalized discounted cumulative gain (nDCG)- Ще одна поширена метрика якості ранжування. Як і у випадку з [email protected], Почнемо з основ.

    Cumulative Gain at K

    Знову розглянемо один об'єкт та елементів з найбільшим. Cumulative gain at K ( [email protected]) - базова метрика ранжирування, яка використовує просту ідею: що релевантні елементи у цьому топі, то краще:

    Ця метрика має очевидні недоліки: вона не нормалізована і не враховує позицію релевантних елементів.

    Зауважимо, що на відміну від [email protected], [email protected]може використовуватися і у разі небінарних значень еталонної релевантності.

    Discounted Cumulative Gain at K

    Discounted cumulative gain at K ( [email protected]) - модифікація cumulative gain at K, що враховує порядок елементів у списку шляхом примноження релевантності елемента на вагу, що дорівнює зворотному логарифму номера позиції:

    Примітка: якщо приймає тільки значення 0 і 1, то , і формула набуває більш простого вигляду:

    Використання логарифму як функції дисконтування можна пояснити такими інтуїтивними міркуваннями: з точки зору ранжирування позиції на початку списку відрізняються набагато сильніше, ніж позиції його кінці. Так, у разі пошукового движка між позиціями 1 і 11 ціла прірва (лише в кількох випадках зі ста користувач заходить далі першої сторінки пошукової видачі), а між позиціями 101 і 111 особливої ​​різниці немає - до них мало хто доходить. Ці суб'єктивні міркування чудово виражаються за допомогою логарифму:

    Discounted cumulative gain вирішує проблему обліку позиції релевантних елементів, але лише посилює проблему з відсутністю нормування: якщо варіюється в межах , то вже набуває значення на не зовсім зрозуміло відрізку. Вирішити цю проблему покликана наступна метрика

    Normalized Discounted Cumulative Gain at K

    Як можна здогадатися з назви, normalized discounted cumulative gain at K ( [email protected]) - не що інше, як нормалізована версія [email protected]:

    де - це максимальне (I - ideal) значення. Оскільки ми домовилися, що набуває значення , то .

    Таким чином, успадковує облік позиції елементів у списку і, при цьому набуває значення в діапазоні від 0 до 1.

    Зауваження: за аналогією з [email protected]можна порахувати , усереднений по всіх об'єктах.

    Mean reciprocal rank

    Mean reciprocal rank (MRR)- ще одна метрика якості ранжування, що часто використовується. Задається вона такою формулою:

    де - reciproсal rank для -го об'єкта - дуже проста за своєю суттю величина, що дорівнює зворотному ранку першого правильно вгаданого елемента.

    Mean reciprocal rank змінюється у діапазоні та враховує позицію елементів. На жаль він робить це тільки для одного елемента - одного чітко передбаченого, не звертаючи уваги на всі наступні.

    Метрики на основі рангової кореляції

    Окремо варто виділити метрики якості ранжирування, що ґрунтуються на одному з коефіцієнтів. рангової кореляції. У статистиці, ранговий коефіцієнт кореляції - це коефіцієнт кореляції , який враховує не самі значення, лише їх ранг (порядок). Розглянемо два найбільш поширені рангові коефіцієнти кореляції: коефіцієнти Спірмена і Кенделла.

    Ранговий коефіцієнт кореляції Кенделла

    Перший з них - коефіцієнт кореляції Кенделла, який ґрунтується на підрахунку узгоджених.
    (і неузгоджених) пар у перестановок - пар елементів, яким перестановки надали однаковий (різний) порядок:

    Ранговий коефіцієнт кореляції Спірмена

    Другий - ранговий коефіцієнт кореляції Спірмена - насправді є чим іншим як кореляції Пірсона, порахованої на значеннях рангів. Є досить зручна формула, що виражає його з рангів безпосередньо:

    де – коефіцієнт кореляції Пірсона.

    Метрики на основі рангової кореляції мають вже відомі нам недоліки: вони не враховують позицію елементів (ще гірше ніж [email protected], т.к. кореляція вважається за всіма елементами, а не за K елементами з найбільшим рангом). Тому на практиці використовуються дуже рідко.

    Метрики на основі каскадної моделі поведінки

    До цього ми не заглиблювалися у те, як користувач (далі ми розглянемо окремий випадок об'єкта - користувач) вивчає запропоновані йому елементи. Насправді неявно нами було зроблено припущення, що перегляд кожного елемента незалежнийвід переглядів інших елементів – свого роду «наївність». Насправді ж, елементи найчастіше проглядаються користувачем по черзі, і те, чи користувач переглядає наступний елемент, залежить від його задоволеності попередніми. Розглянемо приклад: у відповідь пошуковий запит алгоритм ранжирування запропонував користувачеві кілька документів. Якщо документи позиції 1 і 2 виявилися вкрай релевантні, то ймовірність того, що користувач перегляне документ на позиції 3 мала, т.к. він буде цілком задоволений першими двома.

    Подібні моделі поведінки користувача, де вивчення запропонованих йому елементів відбувається послідовно, і ймовірність перегляду елемента залежить від релевантності попередніх. каскадними.

    Expected reciprocal rank

    Expected reciprocal rank (ERR)- Приклад метрики якості ранжування, заснованої на каскадній моделі. Задається вона такою формулою:

    де ранг розуміється за порядком спадання. Найцікавіше у цій метриці – ймовірності. При їх розрахунку використовуються припущення каскадної моделі:

    де - ймовірність того, що користувач буде задоволений об'єктом з рангом. Ці ймовірності вважаються на основі значень. Так як у нашому випадку, то можемо розглянути простий варіант:

    який можна прочитати, як: справжня релевантність елемента, що опинився на позиції Наприкінці наведемо кілька корисних посилань