Задача классификации#
Определение. Классификация — это задача присваивания меток классов входным объектам. Входные данные чаще всего представляют собой векторы признаков, и на основе этих признаков алгоритм определяет, к какому классу относится каждый объект.
Иными словами, нужно зафитить \(\left\{\left(x_i, y_i\right)\right\}_{i=1}^N\), где \(x_i \in \mathbb{R}^m, \; y_i \in \mathbb{Z}_p\) и \(p\) - общее количество классов.
Отличается от кластеризации тем, что мы имеем лэйблы, на основе которых происходит и строится классификатор (наша модель \(\check{y})\).
Логистическая регрессия#
Для простоты положим случай двух классов, т.е. \(y_i \in \{0, 1\}\).
В логистической регрессии берётся следующая модель:
где \(w_j\) - вес \(j\)-го признака, \(w_0\) - порог принятия решения, \(w=\left(w_0, w_1, \ldots, w_m\right)\) - вектор весов, \(\langle x, w\rangle-\) скалярное произведение признакового описания объекта на вектор весов. Предполагается, что искусственно введён «константный» нулевой признак: \(f_0(x)=-1\).
Обучение модели (выбор наилучших весов) в данном случае производится с помощью минимизации функции эмпирического риска:
После того, как решение \(w\) найдено, становится возможным не только вычислять классификацию \(\check y(x)=\operatorname{sign}\langle x, w\rangle\) для произвольного объекта \(x\), но и оценивать апостериорные вероятности его принадлежности классам:
где \(\sigma(z)=\frac{1}{1+e^{-z}}-\) сигмоидная фуункция. Во многих приложениях апостериорные вероятности необходимы для оценивания рисков, связанных с возможными ошибками классификации.
Примечание. Геометрически, мы строим разделяющую поверхность между объектами, принадлежащих к разным классам.
Метрики качества классификации#
Для полноты картины лучше почитать https://academy.yandex.ru/handbook/ml/article/metriki-klassifikacii-i-regressii
После классификации все объекты можно разбить на 4 вида:
истинно положительные (TP, \(y_i = 1, \check y_i = 1\))
истинно отрицательные (TN, \(y_i = 0, \check y_i = 0\))
ложно положительные (FP, \(y_i = 0, \check y_i = 1\))
ложно отрицательные (FN, \(y_i = 1, \check y_i = 0\))
Для наглядности, можно построить так называемую confusion matrix:
На основе этих понятий строятся все метрики качества классификации.
Метрики качества#
Самой простой метрикой качества классификации является Accuracy - доля объектов, для которых мы правильно предсказали класс
которая фактически равна
Познакомившись чуть внимательнее с этой метрикой, можно заметить, что у неё есть несколько недостатков:
она не учитывает дисбаланс классов. Например, в задаче диагностики редких заболеваний классификатор, предсказывающий всем пациентам отсутствие болезни будет иметь достаточно высокую accuracy просто потому, что больных людей в выборке намного меньше;
она также не учитывает цену ошибки на объектах разных классов. Для примера снова можно привести задачу медицинской диагностики: если ошибочный положительный диагноз для здорового больного обернётся лишь ещё одним обследованием, то ошибочно отрицательный вердикт может повлечь роковые последствия.
Если мы рассмотрим долю правильно предсказанных положительных объектов среди всех объектов, предсказанных положительным классом, то мы получим метрику, которая называется точностью (precision)
Интуитивно метрика показывает долю релевантных документов среди всех найденных классификатором. Чем меньше ложноположительных срабатываний будет допускать модель, тем больше будет её Precision.
Если же мы рассмотрим долю правильно найденных положительных объектов среди всех объектов положительного класса, то мы получим метрику, которая называется полнотой (recall)
Интуитивно метрика показывает долю найденных документов из всех релевантных. Чем меньше ложно отрицательных срабатываний, тем выше recall модели.
Например, в задаче предсказания злокачественности опухоли точность показывает, сколько из определённых нами как злокачественные опухолей действительно являются злокачественными, а полнота - какую долю злокачественных опухолей нам удалось выявить.
Хорошее понимание происходящего даёт следующая картинка: