Есть ли ошибка в реализации ARI в scikits или мое понимание алгоритма неверно?

1

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

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

from sklearn import metrics as m

labels_true = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
labels_pred = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1]

res = m.adjusted_rand_score(labels_true,labels_pred)

>>> res = 0.0 

Результат равен 0.0, что является показателем того, что два списка являются абсолютно случайными метками. Глядя на них, интуитивно можно сказать, что это довольно хорошая маркировка, за исключением одной записи списка, которая является меткой для класса 0 вместо класса 1. Это даже реалистичный результат кластеризации, например, если в кластере только один кластер. небольшой набор данных без шума и одна точка ошибочно классифицируются (класс 0).

Мой вопрос: мое понимание "хороших" надписей совершенно неверно, или есть какая-то ошибка или даже недокументированные ограничения ввода для алгоритма?

  • 1
    Я могу проверить поведение в моей системе, и открыл отчет об ошибках на GitHub sklearn . Я думаю, что это ошибка. Посмотрим, что они скажут.
  • 0
    Также я проверил с помощью sklearn 0.19.1. Не уверен, какую версию вы используете.
Показать ещё 2 комментария
Теги:
scikit-learn
cluster-analysis
scikits

1 ответ

2
Лучший ответ

Нет и да

Нет: реализация кажется правильной, и да: ваше понимание неверно.

Скорректированный рандовый индекс сравнивает данный результат с любой случайной перестановкой меток. Результат хорош, только если он лучше случайного.

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

Тем не менее, я согласен с вашей оценкой того, что ARI нельзя использовать с проблемой одного класса. Потому что на таких данных все перестановки равны. Неправильный инструмент для вашей проблемы: он сравнивает разделение набора данных, а у вас нет разделенных данных...

  • 0
    Единственная формулировка, с которой я решительно не согласен, это последнее предложение; У меня может не быть разделения в основополагающих данных, но большинство алгоритмов допускают небольшие ошибки и оставляют меня с немного разделенным результатом. Поскольку ARI является симметричной мерой, это было бы равносильно наличию слегка разделенных данных истинности земли (низкий уровень шума) и результату кластеризации только одного класса (по любой причине) - это то, что меня смутило больше всего. Мне просто нужен алгоритм, подходящий для задачи одного класса. Спасибо за идеи!
  • 1
    Возможно, в этом случае NMI работает лучше; но скорректированная версия AMI может иметь ту же проблему. Поправка на случайность означает, что вам нужно определить понятие «ожидаемый случайный результат». Если у вас ничего нет, кроме ярлыков, перестановки являются популярным выбором. В частности, перестановка одного такая же, как обратная перестановка другого, поэтому она симметрична.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню