Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Метрики | Порівняння Моделей
Класифікація з Python

bookМетрики

До цього моменту основною метрикою для оцінки ефективності моделі була точність. Однак точність має певні обмеження. Далі розглянемо її недоліки та представимо кілька додаткових метрик — на основі TP, TN, FP та FN — які допомагають вирішити ці проблеми.

Точність

Точність відображає частку правильних передбачень:

accuracy=correctcorrect+incorrect=TP+TNTP+TN+FP+FN\text{accuracy} = \frac{\text{correct}}{\text{correct} + \text{incorrect}} = \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} + \textcolor{red}{\text{FN}}}

Однак точність має свої недоліки. Наприклад, уявіть, що потрібно передбачити, чи має пацієнт рідкісне захворювання. У наборі даних 99,9% здорових пацієнтів і лише 0,1% із захворюванням. У такому випадку постійне передбачення, що пацієнт здоровий, дасть точність 0,999 — хоча така модель є абсолютно марною.

Такі набори даних називають несбалансованими, і в подібних випадках збалансована точність є кращою метрикою.

Збалансована точність

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

balanced_accuracy=12TPP+12TNNaccuracy=TP+TNP+N\begin{aligned} \text{balanced\_accuracy} &= \frac12 \cdot \frac{\textcolor{green}{\text{TP}}}{\text{P}} + \frac12 \cdot \frac{\textcolor{green}{\text{TN}}}{\text{N}}\\ \text{accuracy} &= \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\text{P} + \text{N}} \end{aligned}

Де

  • P=TP+FN\text{P} = \textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}} – загальна кількість позитивних випадків (клас 1);
  • N=TN+FP\text{N} = \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} – загальна кількість позитивних випадків (клас 0).

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

Однак збалансована точність все ще не розрізняє помилки першого та другого типу – так само, як і звичайна точність. Саме тут стають важливими точність і повнота.

Точність

Метрика точність показує, скільки з тих значень, які модель передбачила як позитивні, були дійсно позитивними. Це частка істинно позитивних передбачень серед усіх позитивних передбачень, зроблених моделлю:

precision=TPTP+FP\text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FP}}}

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

Повнота

Метрика повноти (recall) показує частку дійсно позитивних випадків, які модель правильно передбачила:

recall=precision=TPTP+FN\text{recall} = \text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}}}

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

Однак і точність, і повнота мають свої обмеження. Наприклад, модель, яка завжди передбачає лише позитивний клас (1), досягне ідеальної повноти, але її точність буде низькою. З іншого боку, модель, яка правильно передбачає лише один позитивний випадок і все інше позначає як негативне, матиме ідеальну точність, але дуже низьку повноту.

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

F1-міра

F1-міра — це гармонійне середнє між точністю (precision) та повнотою (recall). Гармонійне середнє використовується замість звичайного (арифметичного) середнього, оскільки воно сильніше враховує випадки, коли одне зі значень (або точність, або повнота) є низьким, що робить F1-міру більш збалансованою оцінкою якості моделі.

F1=21precision+1recall=2precisionrecallprecision+recall\text{F1} = \frac{2}{\frac{1}{\text{precision}} + \frac{1}{\text{recall}}} = \frac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision} + \text{recall}}

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

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

Note
Вивчайте більше

Ще однією поширеною метрикою є ROC/AUC, про яку можна дізнатися більше у цій статті.

Метрики у Python

Бібліотека Scikit-learn надає реалізації всіх цих метрик у модулі sklearn.metrics:

from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score

accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)

Якщо потрібно отримати такі метрики, як precision, recall та F1-score одночасно, у sklearn є функція classification_report():

12345678910111213
import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
copy
Note
Примітка

Support означає кількість фактичних випадків кожного класу у тестовій вибірці. Macro avg обчислює середнє значення кожної метрики (точність, повнота, F1) для всіх класів однаково, без урахування дисбалансу класів. Weighted avg також обчислює середнє значення метрик для всіх класів, але надає більшу вагу класам із більшою кількістю випадків (залежно від їхньої підтримки).

question mark

Яка метрика оцінювання забезпечує баланс між точністю та повнотою, надаючи єдину оцінку, що відображає обидві?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 4.17

bookМетрики

Свайпніть щоб показати меню

До цього моменту основною метрикою для оцінки ефективності моделі була точність. Однак точність має певні обмеження. Далі розглянемо її недоліки та представимо кілька додаткових метрик — на основі TP, TN, FP та FN — які допомагають вирішити ці проблеми.

Точність

Точність відображає частку правильних передбачень:

accuracy=correctcorrect+incorrect=TP+TNTP+TN+FP+FN\text{accuracy} = \frac{\text{correct}}{\text{correct} + \text{incorrect}} = \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} + \textcolor{red}{\text{FN}}}

Однак точність має свої недоліки. Наприклад, уявіть, що потрібно передбачити, чи має пацієнт рідкісне захворювання. У наборі даних 99,9% здорових пацієнтів і лише 0,1% із захворюванням. У такому випадку постійне передбачення, що пацієнт здоровий, дасть точність 0,999 — хоча така модель є абсолютно марною.

Такі набори даних називають несбалансованими, і в подібних випадках збалансована точність є кращою метрикою.

Збалансована точність

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

balanced_accuracy=12TPP+12TNNaccuracy=TP+TNP+N\begin{aligned} \text{balanced\_accuracy} &= \frac12 \cdot \frac{\textcolor{green}{\text{TP}}}{\text{P}} + \frac12 \cdot \frac{\textcolor{green}{\text{TN}}}{\text{N}}\\ \text{accuracy} &= \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\text{P} + \text{N}} \end{aligned}

Де

  • P=TP+FN\text{P} = \textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}} – загальна кількість позитивних випадків (клас 1);
  • N=TN+FP\text{N} = \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} – загальна кількість позитивних випадків (клас 0).

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

Однак збалансована точність все ще не розрізняє помилки першого та другого типу – так само, як і звичайна точність. Саме тут стають важливими точність і повнота.

Точність

Метрика точність показує, скільки з тих значень, які модель передбачила як позитивні, були дійсно позитивними. Це частка істинно позитивних передбачень серед усіх позитивних передбачень, зроблених моделлю:

precision=TPTP+FP\text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FP}}}

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

Повнота

Метрика повноти (recall) показує частку дійсно позитивних випадків, які модель правильно передбачила:

recall=precision=TPTP+FN\text{recall} = \text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}}}

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

Однак і точність, і повнота мають свої обмеження. Наприклад, модель, яка завжди передбачає лише позитивний клас (1), досягне ідеальної повноти, але її точність буде низькою. З іншого боку, модель, яка правильно передбачає лише один позитивний випадок і все інше позначає як негативне, матиме ідеальну точність, але дуже низьку повноту.

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

F1-міра

F1-міра — це гармонійне середнє між точністю (precision) та повнотою (recall). Гармонійне середнє використовується замість звичайного (арифметичного) середнього, оскільки воно сильніше враховує випадки, коли одне зі значень (або точність, або повнота) є низьким, що робить F1-міру більш збалансованою оцінкою якості моделі.

F1=21precision+1recall=2precisionrecallprecision+recall\text{F1} = \frac{2}{\frac{1}{\text{precision}} + \frac{1}{\text{recall}}} = \frac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision} + \text{recall}}

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

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

Note
Вивчайте більше

Ще однією поширеною метрикою є ROC/AUC, про яку можна дізнатися більше у цій статті.

Метрики у Python

Бібліотека Scikit-learn надає реалізації всіх цих метрик у модулі sklearn.metrics:

from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score

accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)

Якщо потрібно отримати такі метрики, як precision, recall та F1-score одночасно, у sklearn є функція classification_report():

12345678910111213
import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
copy
Note
Примітка

Support означає кількість фактичних випадків кожного класу у тестовій вибірці. Macro avg обчислює середнє значення кожної метрики (точність, повнота, F1) для всіх класів однаково, без урахування дисбалансу класів. Weighted avg також обчислює середнє значення метрик для всіх класів, але надає більшу вагу класам із більшою кількістю випадків (залежно від їхньої підтримки).

question mark

Яка метрика оцінювання забезпечує баланс між точністю та повнотою, надаючи єдину оцінку, що відображає обидві?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 2
some-alt