Анализ данных и прогнозирование. Кластеризация

Печать (Ctrl+P)

Общая информация о механизме Анализа данных и прогнозирования общего объекта конфигурации АнализДанных можно посмотреть здесь

Анализ = Новый АнализДанных; 

В механизме анализа данных и прогнозирования реализовано несколько типов анализа данных:

В данной статье рассмотрим пример типа анализа
кластерный анализ

 Анализ.ТипАнализа = Тип("АнализДанныхКластеризация");

Кластерный анализ ‑ математическая процедура многомерного анализа, позволяющая на основе множества показателей, характеризующих ряд объектов, сгруппировать их в кластеры таким образом, чтобы объекты, входящие в один кластер, были более однородными, сходными, по сравнению с объектами, входящими в другие кластеры.

В основе данного анализа лежит вычисление расстояния между объектами. Именно исходя из расстояний между объектами и производится их группировка по кластерам. Определение расстояния может проводиться разными способами (по разным метрикам). Поддерживаются следующие метрики:

  • Евклидова метрика,
  • Евклидова метрика в квадрате,
  • Метрика города,
  • Метрика доминирования.

После определения расстояний между объектами может использоваться один из нескольких алгоритмов распределения объектов по кластерам. Поддерживаются следующие методы кластеризации:

  • Ближняя связь,
  • Дальняя связь,
  • 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 .

Previous Article
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.