<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dlin</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dlin"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Dlin"/>
	<updated>2026-10-22T17:07:43Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19840</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19840"/>
		<updated>2016-12-01T17:59:46Z</updated>

		<summary type="html">&lt;p&gt;Dlin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Assignment}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb grap.jpg|thumb|650 px|Алгоритм выбора операции ]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Основной вычислительной нагрузкой алгоритма является вычисление функции полезности для категорий. Однако, именно эта часть алгоритма поддается простому и логичному распараллеливанию. Можно выделить два пути к получению параллельной версии исходного алгоритма:&lt;br /&gt;
* распараллеливание вычисления каждой конкретной функции полезности&lt;br /&gt;
* распараллеливание процесса вычисления совокупности функций полезности&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19839</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19839"/>
		<updated>2016-12-01T17:58:05Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Ресурс параллелизма алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb grap.jpg|thumb|650 px|Алгоритм выбора операции ]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Основной вычислительной нагрузкой алгоритма является вычисление функции полезности для категорий. Однако, именно эта часть алгоритма поддается простому и логичному распараллеливанию. Можно выделить два пути к получению параллельной версии исходного алгоритма:&lt;br /&gt;
* распараллеливание вычисления каждой конкретной функции полезности&lt;br /&gt;
* распараллеливание процесса вычисления совокупности функций полезности&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19838</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19838"/>
		<updated>2016-12-01T17:57:06Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb grap.jpg|thumb|650 px|Алгоритм выбора операции ]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19837</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19837"/>
		<updated>2016-12-01T17:55:55Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb grap.jpg]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19836</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19836"/>
		<updated>2016-12-01T17:55:26Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb grap.jpg|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19835</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19835"/>
		<updated>2016-12-01T17:54:23Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb_grap.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19834</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19834"/>
		<updated>2016-12-01T17:53:52Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19833</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19833"/>
		<updated>2016-12-01T17:53:15Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb_grap.jpg]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19832</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19832"/>
		<updated>2016-12-01T17:50:14Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb_grap.jpg|thumb|450 px|Выбор операции]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19831</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19831"/>
		<updated>2016-12-01T17:43:44Z</updated>

		<summary type="html">&lt;p&gt;Dlin: /* Информационный граф */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb_grap.png|thumb|450 px|Выбор операции]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19830</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19830"/>
		<updated>2016-12-01T17:43:07Z</updated>

		<summary type="html">&lt;p&gt;Dlin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
 cobweb(Node, Instance)&lt;br /&gt;
 Begin&lt;br /&gt;
  if узел Node - это лист, then&lt;br /&gt;
    begin&lt;br /&gt;
     создать два дочерних узла L1 и L2 для узла Node;&lt;br /&gt;
     задать для узла L1 те же вероятности, что и для узла Node;&lt;br /&gt;
     инициализировать вероятности для узла L2 соответствующими значениями объекта Instance;&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node ;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    begin&lt;br /&gt;
     добавить Instance к Node, обновив вероятности для узла Node;&lt;br /&gt;
     для каждого дочернего узла С узла Node вычислить полезность категории при отнесении экземпляра Instance к категории С;&lt;br /&gt;
     пусть S1 - значение полезности для наилучшей классификации C1;&lt;br /&gt;
     пусть S2 - значение для второй наилучшей классификации C2;&lt;br /&gt;
     пусть S3 - значение полезности для отнесения экземпляра к новой категории;&lt;br /&gt;
     пусть S4 - значение для слияния C1 и C2 в одну категорию;&lt;br /&gt;
     пусть S5 - значение для разделения C1 (замены дочерними категориями);&lt;br /&gt;
    end&lt;br /&gt;
   if S1 - максимальное значение CU, then&lt;br /&gt;
     cobweb(C1, Instance) %отнести экземпляр к C1&lt;br /&gt;
   else&lt;br /&gt;
     if S3 - максимальное значение CU, then&lt;br /&gt;
       инициализировать вероятности для новой категории Cm значениями Instance &lt;br /&gt;
     else &lt;br /&gt;
       if S4 - максимальное значение CU, then &lt;br /&gt;
         begin&lt;br /&gt;
           пусть Cm - результат слияния C1 и C2; &lt;br /&gt;
           cobweb(Cm, Instance);&lt;br /&gt;
         end &lt;br /&gt;
       else&lt;br /&gt;
         if S5 - максимальное значение CU, then &lt;br /&gt;
           begin &lt;br /&gt;
             разделить C1; % Cm - новая категория&lt;br /&gt;
             cobweb(Cm, Instance)&lt;br /&gt;
           end;&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[File:cobweb_graph.png|thumb|450 px|Выбор операции]]&lt;br /&gt;
&lt;br /&gt;
На данном информационном графе изображен алгоритм выбора нужного действия при добавлении нового объекта в дерево классификации. А именно функция COBWEB, которая во время выполнения программы вызывается рекурсивно.&lt;br /&gt;
&lt;br /&gt;
Входными данными являются текущий объект, который надо добавить, а также один из узлов дерева. На первой итерации это корень дерева.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств. Результатом работы алгоритма является построенное дерево классификации, листья которого представляют собой различные классы объектов и содержат сами объекты принадлежащие данному классу.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19398</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19398"/>
		<updated>2016-11-28T17:13:38Z</updated>

		<summary type="html">&lt;p&gt;Dlin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;A_{i}={\upsilon}_{ij} &amp;lt;/math&amp;gt;  – пара атрибут-значение, &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility), которая учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
  COBWEB(root, record):&lt;br /&gt;
  Input: A COBWEB node root, an instance to insert record&lt;br /&gt;
  if root has no children then&lt;br /&gt;
    children := {copy(root)}&lt;br /&gt;
    newcategory(record) \\ adds child with record’s feature values.&lt;br /&gt;
    insert(record, root) \\ update root’s statistics&lt;br /&gt;
  else&lt;br /&gt;
    insert(record, root)&lt;br /&gt;
    for child in root’s children do&lt;br /&gt;
      calculate Category Utility for insert(record, child),&lt;br /&gt;
      set best1, best2 children w. best CU.&lt;br /&gt;
    end for&lt;br /&gt;
    if newcategory(record) yields best CU then&lt;br /&gt;
      newcategory(record)&lt;br /&gt;
    else if merge(best1, best2) yields best CU then&lt;br /&gt;
      merge(best1, best2)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else if split(best1) yields best CU then&lt;br /&gt;
      split(best1)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else&lt;br /&gt;
      COBWEB(best1, record)&lt;br /&gt;
    end if&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
Сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений. Данный факт, а также сложная структура дерева, получаемая после процедуры обучения, делает невозможным оценку сложности алгоритма в целом, однако сложность функции полезности категории поддается оценке:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; O(|C|*|A|*|V|*|O|)&amp;lt;/math&amp;gt;, где&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;|C|&amp;lt;/math&amp;gt; - количество классов в срезе&lt;br /&gt;
*&amp;lt;math&amp;gt;|A|&amp;lt;/math&amp;gt; - количество аттрибутов объекта&lt;br /&gt;
*&amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; - количество возможных значений&lt;br /&gt;
*&amp;lt;math&amp;gt;|O|&amp;lt;/math&amp;gt; - количество объектов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На вход алгоритм принимает множество объектов, представляемых в виде бинарных списков, характеризуемых набором свойств.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/cmaclell/concept_formation Working python implementation of COBWEB] библиотека реализации алгоритмов COBWEB и COBWEB/3 для языка Python.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[1] Fisher D. Knowledge Acquisition Via Incremental Conceptual Clustering, 1987. – P. 142–153. - http://link.springer.com/article/10.1007/BF00114265&lt;br /&gt;
&lt;br /&gt;
[2] Методы и средства анализа данных - Алгоритм Cobweb: http://bourabai.ru/tpoi/analysis6.htm#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_Cobweb&lt;br /&gt;
&lt;br /&gt;
[3] МОДЕЛЬ И МЕТОД КОНЦЕПТУАЛЬНОЙ КЛАСТЕРИЗАЦИИ ОБЪЕКТОВ, ХАРАКТЕРИЗУЕМЫХ НЕЧЕТКИМИ ПАРАМЕТРАМИ // Фундаментальные исследования. – 2014. – № 9 (часть 5) – С. 993-997 - http://www.fundamental-research.ru/ru/article/view?id=35003&lt;br /&gt;
&lt;br /&gt;
[4] Обзор алгоритмов кластеризации числовых пространств данных: https://habrahabr.ru/post/164417/&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19362</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19362"/>
		<updated>2016-11-28T14:22:50Z</updated>

		<summary type="html">&lt;p&gt;Dlin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB [12] – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: P(Ai = vij|Ck), где Ai = vij – пара атрибут-значение, Ck – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания. Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility). Критерий полезности категории был определен при исследовании человеческой категоризации. Он учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Простой пример дерева классификации]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни. Данный счетчик является основанием для вероятностного описания конкретного концепта. Таким образом, вероятность того, что особь, принадлежащая концепту &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, мужского пола равна &amp;lt;math&amp;gt;1/4 = 0.25&amp;lt;/math&amp;gt;, а концепт в целом можно характеризовать как &amp;lt;code&amp;gt;[.25 .75 .75]&amp;lt;/code&amp;gt;. Рисунок справа иллюстрирует дерево классификации для 5 концептов. &amp;lt;math&amp;gt;C_0&amp;lt;/math&amp;gt; - корневой концепт, включающий в себя все объекты из набора данных. &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; - концепты-потомки, объединяющие 4 и 6 объектов соответственно. &amp;lt;math&amp;gt;C_2&amp;lt;/math&amp;gt; в свою очередь, является концептом-родителем для &amp;lt;math&amp;gt;C_3&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_4&amp;lt;/math&amp;gt;,  &amp;lt;math&amp;gt;C_5&amp;lt;/math&amp;gt;.&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
  COBWEB(root, record):&lt;br /&gt;
  Input: A COBWEB node root, an instance to insert record&lt;br /&gt;
  if root has no children then&lt;br /&gt;
    children := {copy(root)}&lt;br /&gt;
    newcategory(record) \\ adds child with record’s feature values.&lt;br /&gt;
    insert(record, root) \\ update root’s statistics&lt;br /&gt;
  else&lt;br /&gt;
    insert(record, root)&lt;br /&gt;
    for child in root’s children do&lt;br /&gt;
      calculate Category Utility for insert(record, child),&lt;br /&gt;
      set best1, best2 children w. best CU.&lt;br /&gt;
    end for&lt;br /&gt;
    if newcategory(record) yields best CU then&lt;br /&gt;
      newcategory(record)&lt;br /&gt;
    else if merge(best1, best2) yields best CU then&lt;br /&gt;
      merge(best1, best2)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else if split(best1) yields best CU then&lt;br /&gt;
      split(best1)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else&lt;br /&gt;
      COBWEB(best1, record)&lt;br /&gt;
    end if&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений. Это вызвано тем, что сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19360</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=19360"/>
		<updated>2016-11-28T13:51:51Z</updated>

		<summary type="html">&lt;p&gt;Dlin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение. &lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB [12] – классический метод инкрементальной концептуальной кластеризации. Он создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт и содержит вероятностное описание этого концепта, которое включает в себя вероятность принадлежности концепта к данному узлу и условные вероятности вида: P(Ai = vij|Ck), где Ai = vij – пара атрибут-значение, Ck – класс концепта.&lt;br /&gt;
Узлы, находящейся на определённом уровне дерева классификации, называют срезом. Алгоритм использует для построения дерева классификации эвристическую меру оценки, называемую полезностью категории – прирост ожидаемого числа корректных предположений о значениях атрибутов при знании об их принадлежности к определённой категории относительно ожидаемого числа корректных предположений о значениях атрибутов без этого знания. Чтобы встроить новый объект в дерево классификации, алгоритм COBWEB итеративно проходит всё дерево в поисках «лучшего» узла, к которому отнести этот объект. Выбор узла осуществляется на основе помещения объекта в каждый узел и вычисления полезности категории получившегося среза. Также вычисляется полезность категории для случая, когда объект относится к вновь создаваемому узлу. В итоге объект относится к тому узлу, для которого полезность категории больше. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility). Критерий полезности категории был определен при исследовании человеческой категоризации. Он учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBEWB создаёт иерархическую кластеризацию в виде дерева классификации: каждый узел этого дерева ссылается на концепт. Каждый концепт представляется в виде набора объектов, а объекты являтются бинарными списками. В качестве примера возьмем задачу отнесения особи к определенной биологической группе. Рассмотрим концепт &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt;, включающий в себя 4 объекта:&lt;br /&gt;
&lt;br /&gt;
[[File:Concept tree.png|thumb|450 px|Sample COBWEB knowledge representation,  probabilistic concept hierarchy.  Blue boxes list actual objects, purple boxes list attribute counts.  See text for details. &#039;&#039;&#039;Note&#039;&#039;&#039;: The diagram is intended to be illustrative only of COBWEB&#039;s data structure; it does not necessarily represent a &amp;quot;good&amp;quot; concept tree, or one  that COBWEB would actually construct from real data.]]&lt;br /&gt;
#&amp;lt;code&amp;gt;[1 0 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 0]&amp;lt;/code&amp;gt;&lt;br /&gt;
#&amp;lt;code&amp;gt;[0 1 1]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Признаки объекта могут иметь следующий смысл: &amp;lt;code&amp;gt;[мужского_пола, птица, ведущий_ночной_образ_жизни]&amp;lt;/code&amp;gt;. Концепт характеризуется целочисленным списком, в котором хранятся суммы соответствующих значений объектов. Для &amp;lt;math&amp;gt;C_1&amp;lt;/math&amp;gt; данный счетчик будет &amp;lt;code&amp;gt;[1 3 3]&amp;lt;/code&amp;gt;, что означает что биологическая группа включает в себя одну особь мужского пола, три птицы и три особи ведущие ночной образ жизни.Данный счетчик является основанием для вероятностного описания конкретного концепта. &lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
  COBWEB(root, record):&lt;br /&gt;
  Input: A COBWEB node root, an instance to insert record&lt;br /&gt;
  if root has no children then&lt;br /&gt;
    children := {copy(root)}&lt;br /&gt;
    newcategory(record) \\ adds child with record’s feature values.&lt;br /&gt;
    insert(record, root) \\ update root’s statistics&lt;br /&gt;
  else&lt;br /&gt;
    insert(record, root)&lt;br /&gt;
    for child in root’s children do&lt;br /&gt;
      calculate Category Utility for insert(record, child),&lt;br /&gt;
      set best1, best2 children w. best CU.&lt;br /&gt;
    end for&lt;br /&gt;
    if newcategory(record) yields best CU then&lt;br /&gt;
      newcategory(record)&lt;br /&gt;
    else if merge(best1, best2) yields best CU then&lt;br /&gt;
      merge(best1, best2)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else if split(best1) yields best CU then&lt;br /&gt;
      split(best1)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else&lt;br /&gt;
      COBWEB(best1, record)&lt;br /&gt;
    end if&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере. Однако COBWEB имеет ряд ограничений. Во-первых, он предполагает, что распределения вероятностей значений различных атрибутов статистически независимы друг от друга. Однако это предположение не всегда верно, потому как часто между значениями атрибутов существует корреляция. Во-вторых, вероятностное представление кластеров делает очень сложным их обновление, особенно в том случае, когда атрибуты имеют большое число возможных значений. Это вызвано тем, что сложность алгоритма зависит не только от количества атрибутов, но и от количества их возможных значений.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=15991</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=15991"/>
		<updated>2016-11-06T17:40:11Z</updated>

		<summary type="html">&lt;p&gt;Dlin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility). Критерий полезности категории был определен при исследовании человеческой категоризации. Он учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение &amp;lt;math&amp;gt;P(A_{j}={\upsilon}_{ij}|C_k)&amp;lt;/math&amp;gt; называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; - принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, относится к категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt;. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина &amp;lt;math&amp;gt;P(C_k | A={\upsilon}_{ij})&amp;lt;/math&amp;gt; называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории &amp;lt;math&amp;gt;C_k&amp;lt;/math&amp;gt; свойство &amp;lt;math&amp;gt;A_j&amp;lt;/math&amp;gt; принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение &amp;lt;math&amp;gt;P(A={\upsilon}_{ij}&amp;lt;/math&amp;gt; - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
  COBWEB(root, record):&lt;br /&gt;
  Input: A COBWEB node root, an instance to insert record&lt;br /&gt;
  if root has no children then&lt;br /&gt;
    children := {copy(root)}&lt;br /&gt;
    newcategory(record) \\ adds child with record’s feature values.&lt;br /&gt;
    insert(record, root) \\ update root’s statistics&lt;br /&gt;
  else&lt;br /&gt;
    insert(record, root)&lt;br /&gt;
    for child in root’s children do&lt;br /&gt;
      calculate Category Utility for insert(record, child),&lt;br /&gt;
      set best1, best2 children w. best CU.&lt;br /&gt;
    end for&lt;br /&gt;
    if newcategory(record) yields best CU then&lt;br /&gt;
      newcategory(record)&lt;br /&gt;
    else if merge(best1, best2) yields best CU then&lt;br /&gt;
      merge(best1, best2)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else if split(best1) yields best CU then&lt;br /&gt;
      split(best1)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else&lt;br /&gt;
      COBWEB(best1, record)&lt;br /&gt;
    end if&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=15979</id>
		<title>Участник:Dlin/Алгоритм концептуальной кластеризации COBWEB</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Dlin/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_COBWEB&amp;diff=15979"/>
		<updated>2016-11-06T16:11:23Z</updated>

		<summary type="html">&lt;p&gt;Dlin: Новая страница: «Основные авторы описания: Линь Данил (1.1-1.10, 2.7)  == Свойства и структура алго…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Основные авторы описания: [[Участник:Dlin|Линь Данил]] (1.1-1.10, 2.7)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB был впервые предложен профессором университета Вандербильта, [[Douglas H. Fisher (Computer Science)|Douglas H. Fisher]] в 1987 году и относится к классу концептуальных алгоритмов кластеризации.&lt;br /&gt;
&lt;br /&gt;
Кластеризацией называется подход к описанию данных, в котором наиболее схожие данные объединяются в группы(кластеры). Кластеризация является распространенным подходом для анализа данных и используется во многих сферах научной деятельности, таких как машинное обучение, анализ данных, распознавание шаблонов, анализ изображений и биоинформатика.&lt;br /&gt;
&lt;br /&gt;
Кластеризация представляет собой комбинирование рассматриваемых объектов так, чтобы каждая группа объектов обладала схожим свойством. В общем случае кластеризация характеризуются следующими критериями:&lt;br /&gt;
- Каждая группа или кластер однородны; объекты, принадлежащие одной группе имеют схожие свойства;&lt;br /&gt;
- Каждая группа или кластер отличаются от других кластеров т.е. объекты, принадлежащие одному кластеру, должны отличатся от объектов других кластеров&lt;br /&gt;
&lt;br /&gt;
В отличие от традиционной кластеризации, которая обнаруживает группы схожих объектов на основе меры сходства между ними, концептуальная кластеризация определяет кластеры как группы объектов, относящейся к одному классу или концепту – определённому набору пар атрибут-значение.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В алгоритме COBWEB реализовано вероятностное представление категорий. Принадлежность категории определяется не набором значений каждого свойства объекта, а вероятностью появления значения. Например, P(Aj = υij | Ck) - это условная вероятность, с которой свойство &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt;, принимает значение &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;, если объект относится к категории &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;. Для каждой категории в иерархии определены вероятности вхождения всех значений каждого свойства. При предъявлении нового экземпляра система COBWEB оценивает качество отнесения этого примера к существующей категории и модификации иерархии категорий в соответствии с новым представителем. Критерием оценки качества классификации является полезность категории (category utility). Критерий полезности категории был определен при исследовании человеческой категоризации. Он учитывает влияние категорий базового уровня и другие аспекты структуры человеческих категорий.&lt;br /&gt;
&lt;br /&gt;
Критерий полезности категории максимизирует вероятность того, что два объекта, отнесенные к одной категории, имеют одинаковые значения свойств и значения свойств для объектов из различных категорий отличаются. Полезность категории определяется формулой:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; CU = \sum_{k} { \sum_{i} { \sum_{j} { {P(A={\upsilon}_{ij}|C_k)} {({P(C_k | A={\upsilon}_{ij})} P(A={\upsilon}_{ij})} } } } &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Значения суммируются по всем категориям &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt;, всем свойствам &amp;lt;math&amp;gt;A_{j}&amp;lt;/math&amp;gt; и всем значениям свойств &amp;lt;math&amp;gt;{\upsilon}_{ij}&amp;lt;/math&amp;gt;. Значение P(Aj = υij | Ck) называется предсказуемостью (predictability). Это вероятность того, что объект, для которого свойство Aj- принимает значение υij, относится к категории Ck. Чем выше это значение, тем вероятнее, что свойства двух объектов, отнесенных к одной категории, имеют одинаковые значения. Величина P(Ck | A = υij) называется предиктивностью (predictiveness). Это вероятность того, что для объектов из категории Ck свойство Aj принимает значение υij. Чем больше эта величина, тем менее вероятно, что для объектов, не относящихся к данной категории, это свойство будет принимать указанное значение. Значение P(A = υij) - это весовой коэффициент, усиливающий влияние наиболее распространенных свойств. Благодаря совместному учету этих значений высокая полезность категории означает высокую вероятность того, что объекты из одной категории обладают одинаковыми свойствами, и низкую вероятность наличия этих свойств у объектов из других категорий.&lt;br /&gt;
&lt;br /&gt;
После некоторых преобразований (Байеса в частности) и некоторых агрументированных изменений мы получаем более правильную формулу:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;CU= \frac{ \sum_{k=1}^N {P(A={\upsilon}_{ij}|C_k)} \sum_{j} { \sum_{i} {({P(C_k | A={\upsilon}_{ij})}^2 - {P(A={\upsilon}_{ij})}^2)}}}{N} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где N -число категорий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
  COBWEB(root, record):&lt;br /&gt;
  Input: A COBWEB node root, an instance to insert record&lt;br /&gt;
  if root has no children then&lt;br /&gt;
    children := {copy(root)}&lt;br /&gt;
    newcategory(record) \\ adds child with record’s feature values.&lt;br /&gt;
    insert(record, root) \\ update root’s statistics&lt;br /&gt;
  else&lt;br /&gt;
    insert(record, root)&lt;br /&gt;
    for child in root’s children do&lt;br /&gt;
      calculate Category Utility for insert(record, child),&lt;br /&gt;
      set best1, best2 children w. best CU.&lt;br /&gt;
    end for&lt;br /&gt;
    if newcategory(record) yields best CU then&lt;br /&gt;
      newcategory(record)&lt;br /&gt;
    else if merge(best1, best2) yields best CU then&lt;br /&gt;
      merge(best1, best2)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else if split(best1) yields best CU then&lt;br /&gt;
      split(best1)&lt;br /&gt;
      COBWEB(root, record)&lt;br /&gt;
    else&lt;br /&gt;
      COBWEB(best1, record)&lt;br /&gt;
    end if&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм COBWEB достаточно эффективен и выполняет кластеризацию на разумное число классов. Поскольку в нем используется вероятностное представление принадлежности, получаемые категории являются гибкими и робастными. Кроме того, в нем проявляется эффект категорий базового уровня, поддерживается прототипирование и учитывается степень принадлежности. Он основан не на классической логике, а, подобно методам теории нечетких множеств, учитывает &amp;quot;неопределенность&amp;quot; категоризации как необходимый компонент обучения и рассуждений в гибкой и интеллектуальной манере.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dlin</name></author>
	</entry>
</feed>