Как вычислить ошибку квантования для кластеризации?

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

Несколько документов / статей, которые я нашел:

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

(# аннотации мои. Вопросительные знаки обозначают шаги, которые мне непонятны)

def quantization_error(self):
        """
        This method calculates the quantization error of the given clustering
        :return: the quantization error
        """
        total_distance = 0.0
        s = Similarity(self.e) #Class containing different types of distance measures

        #For each point, compute squared fractional distance between point and centroid ?
        for i in range(len(self.solution.patterns)): 
            total_distance += math.pow(s.fractional_distance(self.solution.patterns[i], self.solution.centroids[self.solution.solution[i]]), 2.0)

        return total_distance / len(self.solution.patterns) # Divide total_distance by the total number of points ?

ВОПРОС: Правилен ли этот расчет ошибки квантования? Если нет, то каковы шаги для его вычисления?

Любая помощь приветствуется.


person solub    schedule 10.01.2018    source источник
comment
Формулы и шаги достаточно хорошо задокументированы во многих местах в сети. Как реализовать на Python предполагает, что вам нужен учебник по программированию, а не переполнение стека.   -  person Prune    schedule 10.01.2018
comment
@Prune Прошу не согласиться с тобой. На самом деле очень мало информации об ошибках квантования, когда речь идет о кластеризации. Если вы имеете в виду конкретный онлайн-документ или сайт по этой теме, я хотел бы взглянуть. Также мне не нужен учебник по программированию.   -  person solub    schedule 10.01.2018
comment
для каждой точки: ошибка += норма(оригинал - обновлено)   -  person Brent Bradburn    schedule 10.01.2018
comment
@nobar Спасибо за ваш комментарий. Не могли бы вы объяснить, что означают первоначальная и обновленная версии, когда речь идет о кластеризации? Кроме того, я отредактировал свой вопрос, и формула, которую вы предлагаете, кажется, отличается от той, которую я нашел на другом сайте.   -  person solub    schedule 10.01.2018
comment
@solub Я вижу, в чем заключаются наши разногласия, и ваше обновление вопроса проясняет реальную проблему; теперь это гораздо лучший вопрос. Я отозвал свой голос о закрытии и отменил свой голос против.   -  person Prune    schedule 10.01.2018
comment
@nobar: Я не думаю, что ваше обобщение - это помощь, в которой нуждается OP - ваш комментарий кажется просто повторением концепции общей ошибки.   -  person Prune    schedule 10.01.2018


Ответы (1)


Рискуя пересказать то, что вы уже знаете, я расскажу об основах.

ОБЗОР

Квантование — это каждый раз, когда мы упрощаем набор данных, перемещая каждую из множества точек данных в удобную (ближайшую по некоторому показателю) квантовую точку. Эти квантовые точки представляют собой гораздо меньший набор. Например, для заданного набора чисел с плавающей запятой округление каждого до ближайшего целого числа является типом квантования.

Кластеризация — это хорошо известный, часто используемый тип квантования, в котором мы используем сами точки данных для определения квантовых точек.

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

ВАШЕ РЕШЕНИЕ

... правильно в самом общем смысле: вы вычислили квадрат суммы ошибок набора данных и взяли среднее значение этого. Это совершенно верный показатель.

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

ЦИТИРОВАННАЯ ДОКУМЕНТАЦИЯ

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

Имея набор из N точек данных, мы хотим найти оптимальное количество «m» кластеров, которое будет удовлетворять некоторому объяснению «оптимальной кластеризации». Как только мы найдем m, мы можем продолжить наш обычный алгоритм кластеризации, чтобы найти оптимальную кластеризацию.

Мы не можем просто свести к минимуму ошибку всеми ценами: использование N кластеров дает нам ошибку 0.

Это достаточное объяснение для ваших нужд?

person Prune    schedule 10.01.2018
comment
Прежде всего, я хотел бы поблагодарить вас за четкое и исчерпывающее объяснение. Теперь я понимаю, что ошибка квантования — это не что иное, как другое слово для описания дисперсии (наряду с искажением, несходством внутри кластера или инерцией). Этот термин был мне настолько незнаком, что я подумал, что он относится к методу, сильно отличающемуся от обычных подходов, основанных на дисперсионном анализе. Какая ирония. - person solub; 11.01.2018