Как рассчитать показатель точности случайного классификатора? - PullRequest
0 голосов
/ 07 ноября 2018

Скажем, например, набор данных содержит 60% экземпляров для класса "Да" и 30% экземпляров для класса "НЕТ". В этом случае Precision, Recall для случайного классификатора равны

Точность = 60%

Напомним = 50%

Тогда, какова будет точность для случайного классификатора в этом сценарии?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Здесь требуется некоторая осторожность, поскольку само определение случайного классификатора несколько двусмысленно; это лучше всего иллюстрируется в случае несбалансированных данных.

По определению, точность двоичного классификатора составляет

acc = P(class=0) * P(prediction=0) + P(class=1) * P(prediction=1)

, где P обозначает вероятность.

Действительно, если мы будем придерживаться интуитивного определения случайного двоичного классификатора как:

P(prediction=0) = P(prediction=1) = 0.5

тогда точность, вычисленная по вышеприведенной формуле, всегда равна 0,5, независимо от распределения классов (то есть значений P(class=0) и P(class=1)).

Однако в этом определении есть неявное предположение , то есть, что наши классы сбалансированы , каждый из которых состоит из 50% нашего набора данных.

Это предположение (и соответствующая интуиция) нарушается в случаях дисбаланса класса : если у нас есть набор данных, где, скажем, 90% выборок относятся к классу 0 (т.е. P(class=0)=0.9), то не имеет смысла использовать приведенное выше определение случайного двоичного классификатора; вместо этого мы должны использовать процентные доли самих распределений классов в качестве вероятностей нашего случайного классификатора, т.е.

P(prediction=0) = P(class=0) = 0.9
P(prediction=1) = P(class=1) = 0.1

Теперь, добавив эти значения в формулу, определяющую точность, мы получим:

acc = P(class=0) * P(prediction=0) + P(class=1) * P(prediction=1)
    = (0.9 * 0.9) + (0.1 * 0.1)
    = 0.82

, что не близко к наивному значению 0,5 ...

Как я уже сказал, AFAIK, в литературе нет четких определений случайного классификатора. Иногда «наивный» случайный классификатор (всегда подбрасывает справедливую монету) упоминается как классификатор «случайное предположение», тогда как то, что я описал, называется «взвешенное предположение» "один, но все же это далеко не принято в качестве стандарта ...

Суть здесь в следующем: поскольку основной причиной использования случайного классификатора является baseline , имеет смысл делать это только в относительно сбалансированных наборах данных. В вашем случае баланса 60-40 результат оказывается равным 0,52, что, по общему признанию, недалеко от наивного 0,5; но для сильно несбалансированных наборов данных (например, 90-10) сама полезность случайного классификатора в качестве базовой линии перестает существовать, поскольку правильная базовая линия стала «всегда предсказывать класс большинства», что в данном случае дает точность 90%, в отличие от случайного классификатора точность всего 82% ...

0 голосов
/ 07 ноября 2018

Точность случайного классификатора (Random Guess) составляет 1 / к.

Здесь k - количество классов в наборе данных. В случае бинарной классификации k = 2.

Таким образом, точность будет 50% для приведенного выше сценария.

...