Обсуждение:K-means

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {| style="background-color: #f9faec; border: 1px solid #e0e0e0; width: 100%; margin-top: 10px;" |- | style="width: 60px; vertical-align: top; padding: 15px 10px; text-align: center;" | <...)
 
Строка 14: Строка 14:
Пиши только в MediaWiki-разметке, без Markdown. Математические формулы оформляй через <tex>...</tex>, код — через блок: <source lang="python"> ... </source>
Пиши только в MediaWiki-разметке, без Markdown. Математические формулы оформляй через <tex>...</tex>, код — через блок: <source lang="python"> ... </source>
-
Используй внутренние ссылки MachineLearning.ru на связанные термины: [[Кластеризация]], [[Обучение без учителя]], [[DBSCAN]], [[Иерархическая кластеризация]], [[Метод ближайших соседей]], [[Выброс]], [[Метрика]], [[Понижение размерности]], [[EM-алгоритм]].
+
Используй внутренние ссылки MachineLearning.ru на связанные термины, которые встречаются в статье: [[Кластеризация]], [[Обучение без учителя]], [[DBSCAN]], [[Иерархическая кластеризация]], [[EM-алгоритм]], [[Метрика]], [[Выброс]].
 +
 
 +
Обязательно раскрой содержание статьи, а не только формально опиши алгоритм:
 +
 
 +
введи k-means как алгоритм центроидной кластеризации и метод обучения без учителя;
 +
 
 +
объясни, что алгоритм разбивает множество объектов на заранее заданное число <tex>k</tex> кластеров;
 +
 
 +
укажи, что в классической постановке объекты представлены векторами в евклидовом пространстве;
 +
 
 +
объясни, что каждый кластер описывается центром — средним вектором объектов, отнесённых к этому кластеру;
 +
 
 +
сравни k-means с [[DBSCAN]] и [[Иерархическая кластеризация|иерархической кластеризацией]];
 +
 
 +
дай строгую постановку задачи через множество объектов <tex>X={x_1,\ldots,x_n}</tex>, разбиение на кластеры <tex>S_1,\ldots,S_k</tex>, центры <tex>\mu_j</tex> и метки кластеров <tex>c_i</tex>;
 +
 
 +
определи центроид кластера как среднее арифметическое объектов;
 +
 
 +
запиши целевую функцию k-means как сумму квадратов расстояний от объектов до центров соответствующих кластеров;
 +
 
 +
подробно опиши алгоритм Ллойда: выбор начальных центров, назначение объектов ближайшим центрам, пересчёт центров и критерий остановки;
-
Обязательно раскрой содержание, а не только формально опиши алгоритм:
 
-
введи интуицию центроидной кластеризации;
 
-
дай строгую постановку задачи k-means через разбиение множества объектов на <tex>k</tex> кластеров;
 
-
определи центроид, метку кластера и целевую функцию внутрикластерной суммы квадратов;
 
-
подробно опиши ход алгоритма Ллойда: шаг назначения объектов ближайшим центрам и шаг пересчёта центров;
 
объясни, почему значение целевой функции не возрастает на итерациях;
объясни, почему значение целевой функции не возрастает на итерациях;
-
отдельно опиши зависимость результата от начальной инициализации;
 
-
раскрой метод k-means++ как способ выбора начальных центров;
 
-
объясни выбор числа кластеров <tex>k</tex>, включая метод локтя и коэффициент силуэта;
 
-
сравни k-means с [[DBSCAN]] и иерархическими методами;
 
-
укажи достоинства, ограничения, вычислительную сложность, чувствительность к масштабированию признаков, выбросам и проблемы в высокой размерности;
 
-
добавь пример реализации на Python через scikit-learn и простую учебную реализацию алгоритма Ллойда.
 
-
Структура статьи:
+
укажи, что алгоритм сходится к стационарному разбиению, но не гарантирует глобальный минимум;
 +
 
 +
отдельно опиши проблему начальной инициализации центров;
 +
 
 +
раскрой метод k-means++ и формулу вероятности выбора следующего центра через квадрат расстояния до ближайшего уже выбранного центра;
 +
 
 +
объясни выбор числа кластеров <tex>k</tex>;
 +
 
 +
опиши метод локтя через внутрикластерную сумму квадратов <tex>W_k</tex>;
 +
 
 +
опиши коэффициент силуэта и его формулу;
 +
 
 +
укажи необходимость нормировки признаков и чувствительность алгоритма к масштабу координат;
 +
 
 +
перечисли достоинства и ограничения k-means;
 +
 
 +
укажи вычислительную сложность одной итерации <tex>O(nkd)</tex> и общую сложность <tex>O(Tnkd)</tex>;
 +
 
 +
укажи объём памяти <tex>O(nd+kd+n)</tex>;
 +
 
 +
объясни связь k-means со смесями гауссовских распределений и [[EM-алгоритм|EM]];
 +
 
 +
добавь пример применения k-means на Python через scikit-learn;
 +
 
 +
добавь простую учебную реализацию алгоритма Ллойда на Python;
 +
 
 +
опиши варианты и обобщения: Mini-batch k-means, K-medoids, Kernel k-means, Fuzzy c-means.
 +
 
 +
Структура статьи должна быть такой:
 +
 
== Основные понятия и определения ==
== Основные понятия и определения ==
== Алгоритм ==
== Алгоритм ==
Строка 44: Строка 82:
В разделе «Литература» используй только вики-шаблоны {{статья | ...}} и {{книга | ...}}, не оформляй источники обычным текстом.
В разделе «Литература» используй только вики-шаблоны {{статья | ...}} и {{книга | ...}}, не оформляй источники обычным текстом.
 +
 +
В список литературы включи источники, соответствующие статье: MacQueen, Lloyd, Forgy, Arthur и Vassilvitskii, Hastie–Tibshirani–Friedman, Bishop.
В конце добавь категории:
В конце добавь категории:
Строка 50: Строка 90:
[[Категория:Алгоритмы машинного обучения]]
[[Категория:Алгоритмы машинного обучения]]
-
Выведи только готовый MediaWiki-код статьи, без пояснений вне статьи.</nowiki>
+
Выведи только готовый MediaWiki-код статьи, без пояснений вне статьи.
 +
</nowiki>

Текущая версия

Напиши статью для MachineLearning.ru на русском языке на тему «Алгоритм кластеризации k-means». Целевая аудитория: студенты профильных вузов, математики и практикующие ML-инженеры. Стиль — энциклопедическая вики-статья: строго, содержательно, без рекламного, разговорного и водянистого текста. Статья должна выглядеть как законченная страница MachineLearning.ru, а не как сырой текст, сгенерированный LLM. В начале статьи обязательно добавь код в точности: {{well|Статья написана с использованием LLM ''GPT-5.5 Thinking'' и проверена участником ~~~~ Промпт приводится полностью в [[Обсуждение:Алгоритм кластеризации k-means]]}} {{TOCright}} Пиши только в MediaWiki-разметке, без Markdown. Математические формулы оформляй через <tex>...</tex>, код — через блок: <source lang="python"> ... </source> Используй внутренние ссылки MachineLearning.ru на связанные термины, которые встречаются в статье: [[Кластеризация]], [[Обучение без учителя]], [[DBSCAN]], [[Иерархическая кластеризация]], [[EM-алгоритм]], [[Метрика]], [[Выброс]]. Обязательно раскрой содержание статьи, а не только формально опиши алгоритм: введи k-means как алгоритм центроидной кластеризации и метод обучения без учителя; объясни, что алгоритм разбивает множество объектов на заранее заданное число <tex>k</tex> кластеров; укажи, что в классической постановке объекты представлены векторами в евклидовом пространстве; объясни, что каждый кластер описывается центром — средним вектором объектов, отнесённых к этому кластеру; сравни k-means с [[DBSCAN]] и [[Иерархическая кластеризация|иерархической кластеризацией]]; дай строгую постановку задачи через множество объектов <tex>X={x_1,\ldots,x_n}</tex>, разбиение на кластеры <tex>S_1,\ldots,S_k</tex>, центры <tex>\mu_j</tex> и метки кластеров <tex>c_i</tex>; определи центроид кластера как среднее арифметическое объектов; запиши целевую функцию k-means как сумму квадратов расстояний от объектов до центров соответствующих кластеров; подробно опиши алгоритм Ллойда: выбор начальных центров, назначение объектов ближайшим центрам, пересчёт центров и критерий остановки; объясни, почему значение целевой функции не возрастает на итерациях; укажи, что алгоритм сходится к стационарному разбиению, но не гарантирует глобальный минимум; отдельно опиши проблему начальной инициализации центров; раскрой метод k-means++ и формулу вероятности выбора следующего центра через квадрат расстояния до ближайшего уже выбранного центра; объясни выбор числа кластеров <tex>k</tex>; опиши метод локтя через внутрикластерную сумму квадратов <tex>W_k</tex>; опиши коэффициент силуэта и его формулу; укажи необходимость нормировки признаков и чувствительность алгоритма к масштабу координат; перечисли достоинства и ограничения k-means; укажи вычислительную сложность одной итерации <tex>O(nkd)</tex> и общую сложность <tex>O(Tnkd)</tex>; укажи объём памяти <tex>O(nd+kd+n)</tex>; объясни связь k-means со смесями гауссовских распределений и [[EM-алгоритм|EM]]; добавь пример применения k-means на Python через scikit-learn; добавь простую учебную реализацию алгоритма Ллойда на Python; опиши варианты и обобщения: Mini-batch k-means, K-medoids, Kernel k-means, Fuzzy c-means. Структура статьи должна быть такой: == Основные понятия и определения == == Алгоритм == == Инициализация центров == == Выбор числа кластеров == == Свойства == == Связь с вероятностными моделями == == Реализация == == Варианты и обобщения == == См. также == == Литература == В разделе «См. также» используй список через символ *. В разделе «Литература» используй только вики-шаблоны {{статья | ...}} и {{книга | ...}}, не оформляй источники обычным текстом. В список литературы включи источники, соответствующие статье: MacQueen, Lloyd, Forgy, Arthur и Vassilvitskii, Hastie–Tibshirani–Friedman, Bishop. В конце добавь категории: [[Категория:Кластеризация]] [[Категория:Обучение без учителя]] [[Категория:Алгоритмы машинного обучения]] Выведи только готовый MediaWiki-код статьи, без пояснений вне статьи.

Личные инструменты