Книга Роман с Data Science. Как монетизировать большие данные, страница 37. Автор книги Роман Зыков

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Роман с Data Science. Как монетизировать большие данные»

Cтраница 37

Таблица 8.2. Матрица ошибок классификации

Роман с Data Science. Как монетизировать большие данные

В скобках написаны обозначения, которые нам пригодятся для вывода метрик: TP = True Positive (правильно угаданные 1), TN = True Negative (правильно угаданные 0), FN = False Negative (ложно негативные, модель посчитала 0, а на самом деле 1), FP = False Positive (модель посчитала 1, а на деле 0). Давайте выведем метрики:

Accuracy (Точность) = точно угаданные / число примеров =

= (TP + TN) / (TP + TN + FP + FN).

Precision (Точность для 1) = TP / (TP + FP).

Recall (Полнота) = TP / (TP + FN) (или сколько процентов 1 мы нашли правильно).

F мера = 1 / (1/Precision + 1/Recall).

Самые часто применяющиеся метрики для классификации – precision и recall. Они не зависят от несбалансированности классов, как accuracy. Эта ситуация возникает, когда соотношение единиц и нулей в датасете далеко от 50/50.

В метриках классификации есть еще одна интересная – AUC-ROC (Area Under Curve of Receiver Operating Characteristic). Она нужна тогда, когда алгоритм классификации выдает вероятность принадлежности к какому-либо классу – 0 или 1. Чтобы посчитать метрики Recall и Precision, нам придется делать разные пороговые значения для вероятностей (чтобы различать классы) и считать их. Как раз для этого и нужна AUC-ROC, которая хорошо показывает эффективность классификатора независимо от порогового значения. Чтобы ее построить, необходимо взять набор пороговых значений из отрезка [8–0;1] и для каждого значения порога вычислить два числа:


TPR (True Positive Rate) = TP/(TP + FN) и

FPR (False Positive Rate) = FP/(FP + TN).


Отметить эти числа как точки в плоскости координат TPR и FPR и получить следующую кривую (рис. 8.3).

Площадь под ней и есть AUC. В случае если вы получаете AUC близкий к 0.5, ваш классификатор почти ничем не отличается от


Роман с Data Science. Как монетизировать большие данные

Рис. 8.3. ROC-кривая


случайного подбрасывания монетки. Чем его значение ближе к 1, тем лучше. Этот показатель часто используется в научной литературе и соревнованиях Kaggle.

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

Итак, у нас есть метрика. Теперь с ее помощью мы сможем сравнивать разные модели друг с другом и понимать, какая из них лучше. Можно приступать к обучению.

ML изнутри

Практически любая ML-модель для обучения с учителем сводится к двум вещам: определение функции потерь (loss function для одного примера, cost function для множества примеров) и процедуры ее минимизации.

Например, для линейной регрессии это будет среднеквадратичная ошибка в том виде, в каком мы определили ее ранее. Чтобы найти минимум функции потерь, существуют различные процедуры оптимизации. Одна из них называется градиентным спуском (Gradient Descent), она широко применяется на практике.

Как правило, оптимизация выглядит следующим образом:

1. Коэффициенты (которые нужно подобрать) модели инициализируются нулями или случайно.

2. Вычисляется величина функции потерь (например, среднеквадратичное отклонение) и ее градиент (производная от функции потерь). Градиент нам нужен, чтобы понять, куда двигаться для минимизации ошибки.

3. Если функция потерь изменилась существенно и мы не достигли максимального числа повторений расчета, то пересчитаем коэффициенты, исходя из градиента, и идем к шагу 2.

4. Считаем, что оптимизация завершена, возвращаем модель с вычисленными коэффициентами.

Графически градиентный спуск выглядит как на рис. 8.4.


Роман с Data Science. Как монетизировать большие данные

Рис. 8.4. Градиентный спуск


У нас есть функция потерь, и с произвольной точки мы двигаемся в сторону ее минимума последовательно, по шагам.

У этого алгоритма есть еще две версии: стохастический градиентный спуск (SGD) и пакетный (Mini Batch Gradient Descent). Первый используется для работы с большими данными, когда мы из всего датасета используем только один пример для одной итерации обучения. Альтернативной для больших данных является пакетная версия (batch) этого алгоритма, которая вместо одного примера использует подмножество датасета.

Линейная регрессия

Самая простая и популярная модель регрессии. На самом деле ее мы затрагивали в школе, когда писали формулу линейной зависимости. Когда я учился в старших классах, она выглядела так: y = k × x + b. Это так называемая простая линейная регрессия, в ней всего одна независимая переменная.

Обычно работают с множественной линейной регрессией (multivariate linear regression), формула которой выглядит так:


Роман с Data Science. Как монетизировать большие данные

Она состоит из суммы произведений коэффициентов на значение соответствующей фичи и дополнительно свободного члена (intercept). Выглядит она как прямая в случае одной независимой переменной и как гиперплоскость в случае N фич. Когда происходит обучение линейной регрессии, то гиперплоскость строится таким образом, чтобы минимизировать расстояние от точек (из датасета) до нее, что является среднеквадратичным отклонением. Самый первый вопрос, который я задаю кандидатам на должность аналитика данных, звучит так: «У вас есть результат эксперимента, точки отмечены на плоскости с двумя осями. Кто-то провел линию, их аппроксимирующую. Как понять, оптимально ли построена прямая?» Это очень хороший вопрос на понимание сути линейной регрессии.

Если данные на входе линейной регрессии были нормализованы, то чем больше коэффициент у фичи, тем большее влияние на зависимую переменную она оказывает, а значит, и на результат. Положительный коэффициент – увеличение значения фичи увеличивает значение зависимой переменной (положительная корреляция). Отрицательная – это отрицательная корреляция или отрицательная линейная зависимость.

Логистическая регрессия

Это самая популярная модель решения задач бинарной (два класса) классификации.

Вход
Поиск по сайту
Ищем:
Календарь
Навигация