Анализ данных и прогнозирование. Кластеризация
Общая информация о механизме Анализа данных и прогнозирования общего объекта конфигурации АнализДанных можно посмотреть здесь
Анализ = Новый АнализДанных;
В механизме анализа данных и прогнозирования реализовано несколько типов анализа данных:
- общая статистика,
- поиск ассоциаций,
- поиск последовательностей,
- кластерный анализ,
- дерево решений.
В данной статье рассмотрим пример типа анализа
кластерный анализ
Анализ.ТипАнализа = Тип("АнализДанныхКластеризация");
Кластерный анализ ‑ математическая процедура многомерного анализа, позволяющая на основе множества показателей, характеризующих ряд объектов, сгруппировать их в кластеры таким образом, чтобы объекты, входящие в один кластер, были более однородными, сходными, по сравнению с объектами, входящими в другие кластеры.
В основе данного анализа лежит вычисление расстояния между объектами. Именно исходя из расстояний между объектами и производится их группировка по кластерам. Определение расстояния может проводиться разными способами (по разным метрикам). Поддерживаются следующие метрики:
- Евклидова метрика,
- Евклидова метрика в квадрате,
- Метрика города,
- Метрика доминирования.
После определения расстояний между объектами может использоваться один из нескольких алгоритмов распределения объектов по кластерам. Поддерживаются следующие методы кластеризации:
- Ближняя связь,
- Дальняя связь,
- k-средних,
- Центр тяжести.
Схематично механизм проведения кластерного анализа можно представить следующим образом:
На вход объекту АнализДанных подается источник данных. В качестве источника может выступать результат запроса, таблица значений, область ячеек табличного документа. Колонки источника определяются как входные либо неиспользуемые. Следует отметить, что все значения колонок содержатся в системном перечислении ТипКолонкиАнализаДанныхКластеризация. В этом перечислении значений больше (не только неиспользуемые и входные), но другие значения используются при построении прогнозов.
Анализ производится в соответствии с установленными параметрами анализа.
В качестве примера, иллюстрирующего возможность проведения кластерного анализа, будем использовать следующий фрагмент кода:
&НаКлиенте
Процедура КластерныйАнализ(Команда)
Результат = АнализКластеризация();
КонецПроцедуры
&НаСервереБезКонтекста
Функция АнализКластеризация()
Анализ = Новый АнализДанных;
Анализ.ТипАнализа = Тип("АнализДанныхКластеризация");
Группа = Справочники.Контрагенты.НайтиПоНаименованию("Юридические лица");
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|Контрагенты.Ссылка,
|Контрагенты.КоличествоРозничныхТочек,
|Контрагенты.КоличествоАвтомобилей,
|Контрагенты.ВремяРаботыОрганизации,
|Контрагенты.ВремяЗаключенияДоговора,
|Контрагенты.ВидДоговора,
|Контрагенты.ПрекращениеОтношений
|ИЗ
|Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|(Не Контрагенты.ЭтоГруппа И Контрагенты.Родитель = &Родитель)";
Запрос.УстановитьПараметр("Родитель", Группа);
Анализ.ИсточникДанных = Запрос.Выполнить();
// Выбор метрики.
Анализ.Параметры.МераРасстояния.Значение =
ТипМерыРасстоянияАнализаДанных.ЕвклидоваМетрикаВКвадрате;
// Выбор метода кластеризации.
Анализ.Параметры.МетодКластеризации.Значение = МетодКластеризации.КСредних;
РезультатАнализа = Анализ.Выполнить();
Построитель = Новый ПостроительОтчетаАнализаДанных();
Построитель.Макет = Неопределено;
Построитель.ТипАнализа = Тип("АнализДанныхКластеризация");
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(РезультатАнализа, ТабДок);
Возврат ТабДок;
КонецФункции
Запрос выполняется по справочнику Контрагенты. По условию запроса выбираются только детальные записи справочника из группы Юридические лица.
Выполнение указанного кода приведет к тому, что в качестве начальных установок анализа данных будут определены следующие значения (часть установлена явно, часть ‑ по умолчанию):
Состав колонок определился, исходя из состава полей выборки запроса. По умолчанию они определены с равным весом. Для типов Число и Дата определен вид данных Непрерывные, для остальных типов ‑ Дискретные. При необходимости изменить параметры колонок это можно сделать по аналогии с приведенным фрагментом:
Анализ.НастройкаКолонок.КоличествоАвтомобилей.ДополнительныеПараметры.Вес = 2;
В данной строке для колонки КоличествоАвтомобилей увеличен вес.
Результат анализа будет получен в следующем виде:
Отметим тот факт, что в результате анализа получаются данные именно о найденных кластерах (их количество, центры, расстояния между ними). В результате анализа не получаются данные о том, какие объекты (в нашем случае контрагенты) в какие кластеры входят. Подобное поведение наблюдается в случае, если настройка параметров проводимого анализа не проводится явным образом (а именно параметра ТипЗаполненияТаблицы).
Для того чтобы в результате анализа увидеть распределение объектов по кластерам, необходимо перед выполнением анализа (но после определения его типа) определить следующую строку кода:
Анализ.Параметры.ТипЗаполненияТаблицы.Значение = ТипЗаполненияТаблицыРезультатаАнализаДанных.ИспользуемыеПоля;
Используемые метрики
Сразу отметим такой факт: несмотря на то, что в предыдущем примере входные колонки имели непрерывный тип (для этого типа очевидно понятие «расстояния»), при анализе могут использоваться и колонки дискретных типов (ссылки на справочники, значения перечислений и т. п.).
Разберемся с метриками, которые могут использоваться при проведении кластерного анализа.
1. Евклидова метрика
В данной метрике расстояние между двумя объектами вычисляется по формуле:
Где:
- Xi, Yi ‑ значения атрибутов двух объектов (между которыми определяется расстояние);
- Wi ‑ весовой коэффициент атрибута (устанавливается в колонке анализа);
- i ‑ номер атрибута, от 1 до n;
- n ‑ число атрибутов.
Предположим, что объекты характеризуются одним свойством, которое у одного объекта имеет значение 9, у другого ‑ 5. Весовой коэффициент данного атрибута равен единице. Расстояние между объектами будет равно:
2. Евклидова метрика в квадрате
В данной метрике расстояние между двумя объектами вычисляется по формуле:
Где:
- Xi, Yi ‑ значения атрибутов двух объектов (между которыми определяется расстояние);
- Wi ‑ весовой коэффициент атрибута (устанавливается в колонке анализа);
- i ‑ номер атрибута, от 1 до n;
- n ‑ число атрибутов.
Предположим, что объекты характеризуются одним свойством, которое у одного объекта имеет значение 5, у другого ‑ 3. Весовой коэффициент данного атрибута равен двум. Расстояние между объектами будет равно:
3. Метрика города
В данной метрике расстояние между двумя объектами вычисляется по формуле:
Где:
- Xi, Yi ‑ значения атрибутов двух объектов (между которыми определяется расстояние);
- Wi ‑ весовой коэффициент атрибута (устанавливается в колонке анализа);
- i ‑ номер атрибута, от 1 до n;
- n ‑ число атрибутов.
Предположим, что объекты характеризуются двумя атрибутами, которые имеют значения 3 и 5, 7 и 3. Вес первого равен 2, вес второго равен 1:
4. Метрика доминирования
В данной метрике расстояние между двумя объектами вычисляется по формуле:
Где:
- Xi, Yi ‑ значения атрибутов двух объектов (между которыми определяется расстояние);
- Wi ‑ весовой коэффициент атрибута (устанавливается в колонке анализа);
- i ‑ номер атрибута, от 1 до n;
- n ‑ число атрибутов.
Предположим, что объекты характеризуются двумя атрибутами, которые имеют значения 3 и 5, 7 и 3. Вес первого равен 2, вес второго равен 1 .