Механизм анализа данных. Кластеризация.

Публикация № 1486999 31.08.21

Разработка - Математика и алгоритмы

Анализ данных Big Data кластерный анализ CRM кластеризация статистика

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

Вступление.

В последние годы я все чаще сталкиваюсь с внешними решениями в области управления товарными запасами, логистическими операциями, WMS и CRM. В той или иной реализации эти решения представляют собой даже не сторонний по отношению к 1С софт, который решает отдельные задачи, а, как правило, внешние ресурсы, которыми владеют третьи лица и на которые мы отправляем данные из 1С, чтобы получить результат их обработки какими-то (как нам говорят) сверхсложными алгоритмами на супермощных серверах. Ибо это же Big Data, ребята, и куда Вы со своим унылыми софтом и вычислительной мощностью лезете?

Конечно 1С, это не Боливар, и слишком многих он не вынесет, но взглянуть под капот имеющихся решений мне хотелось все больше и больше. А одна из самых загадочных подсистем, включенных в платформу 1С это подсистема анализа данных. Причем ее загадочность обусловлена не столько сложностью применения, а отсутствием внятной справки и примеров использования. Ну и, может быть, сложностью математического аппарата используемого при анализе.

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

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

Итак, можно считать что с предисловием к будущему циклу я закончил, теперь перейдем непосредственно к кластерному анализу. А начнем с постановки задачи.

Постановка задачи.

Давайте представим, что у нас есть розничный on-line магазин в котором очень много клиентов и товаров тоже не мало. И есть какая-то CRM-ка в рамках которой имеются сведения, введенные пользователями в их профиле. Плюс, конечно, информация об истории взаимоотношений (просмотров, обращений, жалоб, комментариев, оценок и т.п). А также есть история покупок.

В общем-то, учитывая количество наших клиентов это все уже достаточно большая Data, пользы от которой, если мы ее не обработаем не будет никакой, а расходы, связанные со сбором и хранением имеются. И вот здесь важно понять, что с этим можно сделать и как коммерчески эффективно это использовать.

Это, конечно, задача маркетологов, а нам как программистам необходимо требовать ТЗ и понимать при этом, что никакого внятного ТЗ от них мы не получим. Зато на нашего маркетолога (или его начальника) выйдут маркетологи или продавцы компании, продающей услуги по обработке данных и впарят что-то, что должно выдать по нашим же данным понятный нашим маркетологам результат и бизнес станет эффективнее аж на 100500%.

И вот в промежутке между требовать ТЗ и купить слона на стороне наш правильный программист может сделать презентацию возможностей обработки данных непосредственно в 1С. Про сравнительную экономию, безопасность данных и возможность гибкого изменения механизма - это описывать не буду. Все люди опытные и умные. Ниже просто условный пример на условных данных кластеризации, анализа и прогнозирования поведения покупателей по мотивам всех имеющихся в нашем распоряжении Data. Или почти всех.

Разделение на кластеры.

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

Данных может быть сколь угодно много и самой различной, как Вы поняли, типизации. Для механизма анализа это не принципиально. Не претендуя на оригинальность я назвал имеющуюся таблицу источника данных для анализа тИсточника.

И еще я решил, что кластеров должно быть 5. Опять же 2,3,4,6,7 и т.д. ничем не хуже. Просто так решил. Или, допустим, у нас есть 5 менеджеров по работе с клиентами и я хочу, чтобы кластер покупателей был закреплен за менеджером. В общем это не константа. Когда будем исследовать результат я еще вернусь к вопросу их количества.

А вот и сам код инициализации анализа:

Анализ = Новый АнализДанных;
Анализ.ТипАнализа = Тип("АнализДанныхКластеризация");
Анализ.Параметры.КоличествоКластеров.Значение = 5;
Анализ.Параметры.ТипЗаполненияТаблицы.Значение = ТипЗаполненияТаблицыРезультатаАнализаДанных.ВсеПоля;

Анализ.ИсточникДанных = тИсточника;

Дальше необходимо назначить тип и вес колонок источника. Не тип значений в колонках, а тип взаимоотношений анализа и данных в колонке. Тип колонки определяется логикой анализа. Как и вес, конечно.

Давайте посмотрим на исходные данные и постараемся понять какие данные будут влиять на отнесение покупателя к тому или иному кластеру. Скорее всего это будут все наши колонки из CRM, кроме наименования покупателя, ведь возраст, пол и т.д. вполне могут влиять как на интенсивность покупок, так и на предпочтения покупателя. Как и знак зодиака, хотя я лично в это не верю, но гипотетически... В общем-то, включив его во входящие параметры я ничего не потеряю, кроме времени обработки, зато полученные результаты позволят подтвердить или опровергнуть гипотезу о влиянии гороскопа на поведение покупателей. Если этот фактор окажется не существенным, то он будет поровну присутствовать во всех кластерах. И не более.

И еще мы должны ответить на вопрос о целях кластеризации. Если мы хотим в результате что-то спрогнозировать, то тип колонки для таких данных будет Прогнозируемый. Очевидно, что в нашем примере это будут колонки количества чеков и суммы по категориям товаров в чеке. Это необходимо для планирования продаж и маркетинговых мероприятий. Но в то же время эти данные могут быть поданы на вход анализа для существующих покупателей. Все опять же зависит от цели анализа.

Допустим мы хотим поручить разработку маркетингового мероприятия для каждого кластера его менеджеру. И установить цель, чтобы после реализации мероприятия продажи в кластере увеличились на 20% сверх ожидаемых значений. Очевидно, что нам нужно получить прогноз по кластеру именно в продажах и включить сумму прогноза +20% в KPI менеджера.

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

Итак, на данном этапе мы установим колонку с наименованием покупателя, как НеИспользуемую. Колонки из CRM как Входящие и колонки с показателями продаж, как ВходящиеИПрогнозируемые.

Теперь вес. Вес - это значимость колонки в анализе. По умолчанию он для каждого показателя равен 1. Но мы можем его уменьшить или увеличить в зависимости от контекста задачи. Так как потребительские предпочтения мужчин и женщин, как правило, очень сильно отличаются и я в этом твердо уверен, то я могу сознательно увеличить вес показателя пола до 2. Можно этого и не делать, особенно если выборка достаточно велика и правильное разделение скорее всего произойдет без наших подсказок.

Определив типы колонок и веса для таблицы источника данных из цели анализа и смысла показателей, записываем это кодом:

Анализ.НастройкаКолонок.Клиент.ТипКолонки = ТипКолонкиАнализаДанныхКластеризация.НеИспользуемая;
Анализ.НастройкаКолонок.ЗнакЗодиака.ТипКолонки  = ТипКолонкиАнализаДанныхКластеризация.Входящая;
Анализ.НастройкаКолонок.Возраст.ТипКолонки  = ТипКолонкиАнализаДанныхКластеризация.Входящая;
Анализ.НастройкаКолонок.Пол.ТипКолонки  = ТипКолонкиАнализаДанныхКластеризация.Входящая;
Анализ.НастройкаКолонок.Пол.ДополнительныеПараметры.Вес = 2;
//...
Анализ.НастройкаКолонок.СреднийЧекВКатегории_ТоварыДляДетей.ТипКолонки  = ТипКолонкиАнализаДанныхКластеризация.ВходящаяИПрогнозируемая;

Дальше выполняем сам анализ и выводим результат в специальный построитель отчета для анализа данных. Да. Есть такой специальный построитель. Для вывода ему нужны лишь результат анализа и табличный документ.

Ну и подсказка о применяемом типе анализа, конечно. В общем все просто.

Если же Вы не собираетесь анализировать результаты, то вывод отчета можно пропустить и сразу перейти к прогнозам. Но мы все-таки посмотрим на результат:

РезультатАнализа = Анализ.Выполнить();

Результат = Новый ТабличныйДокумент;
     
ПостроительОтчетаАнализаДанных = Новый ПостроительОтчетаАнализаДанных();
ПостроительОтчетаАнализаДанных.Макет = Неопределено;
ПостроительОтчетаАнализаДанных.ТипАнализа = Тип("АнализДанныхКластеризация");
 
ПостроительОтчетаАнализаДанных.Вывести(РезультатАнализа, Результат);
 
Результат.ПоказатьУровеньГруппировокСтрок(1);
Результат.Показать();

И вот что у нас получилось:

В результатах, как видим, у нас 5 кластеров и целая куча каких-то свойств.

Анализ данных.

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

Теперь можно дать описание кластеров, используя самые значимые по частоте и вариации признаки. Конечно оценить на глаз вариацию по частоте редких значений тяжело (например, различия между кластерами в значении Образование = Иное), но если сам случай редкий, то он едва ли станет значимой особенностью кластера.

Например:

Кластер1 - это молодые женщины в основном с автомобилями, совершающие покупки чаще 4-х раз в месяц и в основном интересующиеся товарами для детей и бытовой техникой.

Кластер6 - это пожилые мужчины лишь половина из которых имеет автомобиль, но они серьезно увлекаются охотой, рыбалкой и туризмом. Совершают покупки около 2-х раз в месяц. Меньше всего интересуются одеждой, обувью, косметикой и детскими товарами.

И вот именно здесь, если кто-то дочитал до этого места, как пасхалку, я дам простое определение кластера. Думаю, что к этому моменту повествования определение стало уже очевидным, но на всякий случай сформулирую: если каждого покупателя представить точкой в многомерном пространстве, измерениями которого служат колонки входящих данных, то кластерами будут облака или группы точек расположенных относительно близко друг к другу.

Ясно, что описания и глубокие мысли при виде таблицы описания кластеров совсем не наше дело. Для этого есть специально обученные люди. Но в рамках условного примера я, не претендуя на глубину и ширину мысли, все-таки сделаю ряд выводов и предложений:

1. Кластеры 3,4,5 покупают намного реже чем 1,2. Самая очевидная мысль - это связано с возрастом покупателей. Может для них такой способ приобретения просто непривычен, может слишком сложный интерфейс сайта и оформления покупки и т.д. Что с этим делать? Можно провести дополнительный анализ, разбив исследуемый кластер на новые кластеры. Может быть кроме возраста мы увидим в новом приближении еще какие-то важные для интенсивности покупок факторы: пол, наличие детей и т.д. Можно просто сделать репрезентативную выборку по кластеру и посадить менеджера на обзвон клиентов для выяснения причины. В любом случае мы должны сформулировать план действий, результатом которого должно стать выявление причины и меры по повышению интенсивности продаж в кластерах.

2. Аналогично п1 можно проанализировать почему кластеры 3,4,5 намного меньше покупают бытовой техники и сделать выводы.

3. "Мужские" кластеры 2,4,5 покупают в разы меньше товаров для детей. В чем причина? Может быть они просто не знают о существовании такого раздела на сайте?

И.т.д.

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

Так где же состав самих кластеров?  Он находится в свойстве ТаблицаКластеризации результата анализа. Это всего лишь таблица значений, повторяющая исходные данные с добавленной колонкой "Кластер". Т.е. по обращению  РезультатАнализа.ТаблицаКластеризации мы получим ТЗ примерно как на картинке:

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

Построение прогноза.

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

1. Планирование и оценка эффективности мероприятий связанных с увеличением продаж в существующих кластерах. Этот прогноз включает в качестве исходных данных сведения о продажах.

2. Прогнозирование поведения новых/потенциальных покупателей, не имеющих истории продаж. Этот прогноз не должен опираться на данные о продажах, а анализировать только доступные после регистрации покупателя данные из профиля.

Могут быть и другие варианты, главное, чтобы Вы понимали, что состав исходных данных для прогнозирования зависит от того по каким данным Вы будете делать необходимый прогноз.

Итак прогноз для цели №1 может быть получен из имеющегося у нас результата анализа, так как он включал, кроме данных профиля, и данные о продажах. В коде это выглядит так:

МодельПрогноза = РезультатАнализа.СоздатьМодельПрогноза();
МодельПрогноза.ИсточникДанных = тПрогноза;
тРезультатПрогноза = МодельПрогноза.Выполнить();

тПрогноза здесь это любая таблица значений, содержащая полный набор входящих колонок, использованных в источнике данных для результата анализа. Т.е. для первой цели мы можем вполне использовать тИсточника, тем более, что она содержит как раз необходимые для построения прогноза данные. Если же нам нужны прогнозы по отдельным кластерам - данные для прогноза можно получить отбором из таблицы кластеризации.  Если нужен прогноз по мужчинам водолеям и т.д. просто делаем отбор из исходных данных.

Ну и конечно в качестве источника данных прогноза могут выступать результат запроса и  область ячеек табличного документа. Главное чтобы в них совпадали колонки входящих и прогнозируемых данных.

Впрочем, колонки модели прогноза, после установки источника можно переопределить изменив роль и источник данных, но вот зачем?

А теперь посмотрим в тРезультатПрогноза:

Я специально вывел таблицу в консоли построителя, так как колонок очень много, и вывести все в табличный документ адекватного размера нельзя. Впрочем и информативным такой прогноз не назовешь. Как видим по каждому прогнозируемому показателю (тип колонки АнализаДанных = Прогнозируемая/ВходящаяИПрогнозируемая) прогноз добавил к таблице источника 3 колонки: ЗначениеС, ЗначениеПо и Вероятность. Но это нам мало говорит о том, каким собственно будет математическое ожидание показателя для кластера. Есть лишь диапазон значений с наибольшей вероятностью в него попасть.

Если же нам нужно математическое ожидание придется использовать допил решения кодом. Приведу пример для поля "СреднееКоличествоЧековВмесяц":

ПолеПрогноза = "СреднееКоличествоЧековВМесяц";
ПараметрыПрогнозирования = Новый Соответствие;

Для Каждого Кластер Из МодельПрогноза.Кластеры Цикл
	
	НомерКластера = МодельПрогноза.Кластеры.Найти(Кластер) + 1;
	
	ПараметрыПрогнозирования.Вставить(НомерКластера, Новый Соответствие);

	Для Каждого ЗначениеПоляПрогноза Из Кластер.ЗначенияПолейПрогноза Цикл
		Если ЗначениеПоляПрогноза.Ключ = ПолеПрогноза Тогда
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	
	Для Каждого РешениеАнализаДанных Из ЗначениеПоляПрогноза.Значение Цикл
		
		Вероятность = РешениеАнализаДанных.Вероятность;
		ТекРешение = РешениеАнализаДанных.Решение;
		
		Если ТекРешение[0].ВидСравнения = ВидСравнения.МеньшеИлиРавно Или ТекРешение[0].ВидСравнения = ВидСравнения.Меньше Тогда
			
			ЦентральнаяВеличина = ТекРешение[0].Значение / 2;
						
		ИначеЕсли ТекРешение[0].ВидСравнения = ВидСравнения.ИнтервалВключаяОкончание Тогда
			
			ЦентральнаяВеличина = (ТекРешение[0].ЗначениеС + ТекРешение[0].ЗначениеПо) / 2;
			
		ИначеЕсли ТекРешение[0].ВидСравнения = ВидСравнения.БольшеИлиРавно Или ТекРешение[0].ВидСравнения = ВидСравнения.Больше Тогда
			
			ЦентральнаяВеличина = 2 * ТекРешение[0].Значение - ЦентральнаяВеличина;
			
		КонецЕсли;
		
		ПараметрыПрогнозирования[НомерКластера].Вставить(ЦентральнаяВеличина,Вероятность);		
		
	КонецЦикла;
	
КонецЦикла;

МатематическиеОжиданияПоКластерам = Новый Соответствие;

Для Каждого ПараметрПрогноза Из ПараметрыПрогнозирования Цикл
	
	МатОжидание = 0;
	Для Каждого ОценкаВероятности Из ПараметрПрогноза.Значение Цикл
		МатОжидание = МатОжидание + ОценкаВероятности.Ключ * ОценкаВероятности.Значение / 100;
	КонецЦикла;
	
	МатематическиеОжиданияПоКластерам.Вставить(ПараметрПрогноза.Ключ, МатОжидание);
	
КонецЦикла;

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

Вот что в итоге окажется в соответствии МатематическиеОжиданияПоКластерам:

Ключ Значение
1 4,3900185556722678665745
2 4,44971263772954127807075
3 1,99142345578457535242179
4 2,09649335029940116220585
5 1,990430605855855696439885

Если же идти в прогнозировании дальше и строить доверительные интервалы, то необходимо определиться с видом распределения значений. И получить параметры такого распределения. Это отдельная тема и здесь я не буду в нее погружаться, итак статья выходит длинноватой. Отмечу лишь, что подавляющее большинство практических данных сходятся к распределениям Пуассона или Гаусса (нормальному). Для Пуассона - единственным параметром будет математическое ожидание, а для Гаусса нужно еще посчитать среднеквадратичное отклонение в кластерах, с чем, думаю, все справятся.

Как пример приведу график функции вероятности Пуассона и практического распределения среднего количества чеков в месяц для кластера 1 (параметр мат. ожидания для распределения Пуассона = 4.39)

Схожесть распределений, конечно, очень не идеальна, но и исходные данные совсем не из практики.

Если же нам нужна оценка продаж за период нужно сложить математические ожидания продаж по группам номенклатуры в чеке, умножить это на математическое ожидание количества чеков в кластере и умножить это на количество месяцев и, не забыть умножить на размер самого кластера. Вот и готов ориентировочный KPI менеджеру кластера. С другой стороны понятно, что любой показатель в прогнозируемом периоде может с определенной вероятностью принять любое значение. А значит KPI может быть достигнут случайно, а не благодаря кому-то. К этому нужно относиться с пониманием и опираться в установке целей не только на математическое ожидание, но и на доверительные интервалы.

 

Теперь совсем немного расскажу про прогноз поведения новых покупателей. Для его построения необходимо в исходных данных колонки, связанные со сведениями о продажах, сделать просто прогнозируемыми и провести кластеризацию. Затем добавить в таблицу исходных данных для прогнозирования сведения о новых покупателях (без данных о продажах, естественно) и выполнить по ней прогноз. Вот эта таблица. Клиенты новые и не имеют истории продаж:

Помним, что таблицу источника данных для объекта анализа мы оставили ту же, но колонки с продажами настроили как ТипКолонкиАнализаДанныхКластеризация.Входящая

В результате получим такой результат прогноза:

Если приглядитесь, то заметите, что ничего нового в плане продаж этот прогноз не дал - те же оценки по тем же кластерам. Главное, что мы получили - кластеризацию новых покупателей. Дальше их оценки соответствуют оценкам всего кластера.

Как это использовать на постоянной основе?

Этот вопрос я выделил подпунктом потому что для меня он остается открытым. Может у читателей будут мысли, которые мы обсудим в комментариях.

Здесь я просто изложу свои мысли и предположения:

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

2. Если данных много, то нет смысла пересчитывать их при каждом изменении и я бы не стал создавать для анализа фоновые задания с определенной периодичностью. Скорее мерой должна служить степень изменения данных. Допустим изменение количества и/или итогов по записям на 3, 5 или 10% приводит к обновлению кластеризации в фоновом задании в период наименьшей нагрузки на сервера.

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

Анализ.Параметры.ТипЗаполненияТаблицы.Значение = ТипЗаполненияТаблицыРезультатаАнализаДанных.НеЗаполнять;

РезультатАнализа после этого будет содержать только данные о кластеризации, без огромной таблицы исходных данных.

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

 

И вот на этом, надеюсь, пока все.

P.S. Использованная версия платформы 8.3.12.1595

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ZLENKO 398 01.09.21 11:17 Сейчас в теме
Интересно было бы узнать как оно работает на реальных данных
2. dusha0020 1072 01.09.21 12:44 Сейчас в теме
(1) Вот как-то с реальными задачами напряг. Может кто-то из сообщества найдет применение и поделится результатом:)
3. Yashazz 4476 01.09.21 18:26 Сейчас в теме
(2) Вот поэтому и не используют, и примеров мало. Не нужно оно почти никому...

Интересно, сколько народу заглянет в эту тему, привлечённую словом "Кластеризация", значение которого может намекать на вовсе даже не "анализ данных", а разнесение серверной нагрузки?))
triviumfan; dusha0020; Ветер в поле; +3 Ответить
4. SlavaKron 02.09.21 10:52 Сейчас в теме
Похожая задача в графике – квантизация изображений. Когда, например, для изображения с глубиной цвета 24 бит необходимо найти оптимальную палитру из 256 цветов (когда-то это было актуально для gif). Правда, в графике расстояния между цветами в кубе RGB не соответствуют психофизическому восприятию цвета.
5. dusha0020 1072 02.09.21 12:47 Сейчас в теме
(4)
расстояния между цветами в кубе RGB не соответствуют психофизическому восприятию цвета
Очень интересно. Не знал.
Думал, что RGB соответствует физиологии глаза. Хотя после физиологии идет еще и обработка мозгом...
6. tormozit 6796 03.09.21 07:04 Сейчас в теме
Можно ли количество кластеров сделать динамическим, т.е. чтобы алгоритм сам подобрал их количество на основе максимальных расстояний от центра кластера?
7. dusha0020 1072 03.09.21 13:59 Сейчас в теме
(6) В результате анализа есть описания кластеров. А в каждом кластере есть массив с "центрами тяжести" по всем входящим колонкам.
В принципе можно после определения N кластеров посчитать СКО для числовых значений элементов кластера и сравнить с критерием максимального расстояния. Ну или даже просто сравнить модули. Здесь проблем нет.

Для не числовых центром тяжести является частота появления в кластере и здесь все сложнее. При удачной кластеризации одни из значений будут стремиться к 1 в то время как другие к 0 и объединять их оценки нельзя. Здесь, имхо, имеет смысл что-то вроде принципа Парето. Т.е. частота вхождения в кластер 20% минимально отклоняющихся по частоте значений показателя должна быть 80% всех значений в кластере. Ну проценты могут быть иные, а вот сам критерий качества кластера я бы формулировал так.

Так что ответ на Ваш вопрос: "теоретически ДА":)

Анализ также выдает таблицу межкластерных расстояний в свойстве МежкластерныеРасстояния результата анализа. Можно попробовать максимизировать среднее расстояние между кластерами или лучше дисперсию.

Пример таблицы межкластерных расстояний:
Прикрепленные файлы:
8. tormozit 6796 06.09.21 10:35 Сейчас в теме
Добавил инструмент "Анализ данных" с генератором кода в ИР https://www.hostedredmine.com/issues/932820
tuzmich007; triviumfan; dusha0020; BigMih; +4 Ответить
Оставьте свое сообщение

См. также

Подробная настройка работы с сервисом 1С:Сверка

WEB-интеграция Анализ учета Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье будет описано, что такое сервис 1С:Сверка, для каких целей он необходим и как его корректно настроить, а именно: подключать 1С сервис, привязывать к нему электронную почту, отправлять запросы поставщикам, получать от них ответы, сверять данные, а также отвечать и писать клиентам.

19.01.2023    498    Koder_Line    0    

0

Тестирование средств 1С для решения СЛАУ

Механизмы платформы 1С Математика и алгоритмы Платформа 1С v8.3 Россия Бесплатно (free)

В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.

23.11.2022    1153    gzharkoj    11    

15

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    2920    fishca    12    

32

Установка отбора по списку значений при открытии формы выбора справочника из реквизита обработки

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Описан алгоритм установки отбора по списку значений при открытии формы выбора справочника. Параметром отбора является список значений передаваемый из одной формы обработки в другую форму этой же обработки. Тестировано под платформу 8.3.18

11.12.2021    5701    prog1c_vl    4    

3

Моделирование в 1С:ERP - практика анализа движений документов

Анализ учета Анализ и проектирование ИТ-систем Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Практика анализа движений документов при моделировании в 1С:ERP - анализ цепочки документов, функциональный анализ, сценарный и событийный.

01.11.2021    2667    pma_2015    9    

22

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Распределенные алгоритмы РИБ 1С

Математика и алгоритмы Обмен между базами 1C Платформа 1С v8.3 Бесплатно (free)

Небольшое исследование на тему применимости классических распределённых алгоритмов репликации и синхронизации данных между узлами обмена РИБ 1С.

02.07.2021    2013    zhichkin    1    

8

Параллельная обработка очереди сообщений

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

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

15.06.2021    4018    zhichkin    11    

22

Чем воспользоваться для распознавания котиков в 1С?

Математика и алгоритмы Языки и среды Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    4640    comol    10    

29

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5071    SergeyN    13    

39

Рекурсия для начинающих

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Рассмотрен подход к пониманию рекурсий. Приведены примеры из реальной практики.

10.02.2021    10018    szv    5    

13

Самый быстрый FizzBuzz на 1С

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Давайте попробуем найти самое быстрое решение задачи "BuzzFizz" на 1С.

03.02.2021    1868    Donrad    23    

11

Программное создание корректировочного счета-фактуры выданного в УПП 1.3

Математика и алгоритмы Механизмы типовых конфигураций Запросы Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет НДС Бесплатно (free)

Данный функционал можно использовать, например, в процессе оформления возвратов от поставщика (корректировка реализации по согласованию сторон) при автоматическом создании корректировок реализации по документам поставщика, он позволяет массово создать корректировочные счета-фактуры в УПП 1.3. При создании документа из первичного счета-фактуры выданного в новый корректировочный счет-фактуру выданный копируются значения свойств.

17.12.2020    1156    ksnik    0    

2

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Настройка отчета "Паспорт просрочен" в ЗУП 3

Анализ учета Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Бесплатно (free)

Обновили программу с 3.1.10 до 3.1.14 и в карточке сотрудника всплывает информация о просроченных паспортах для пользователя с полными правами, а у кадровика нет.  Я решила настроить для кадровика отчет.

30.09.2020    4155    Hla    8    

6

Параллельные вычисления расчета факториала числа N

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Распараллеливание алгоритма с помощью фоновых заданий (асинхронные вычисления)

29.06.2020    5369    RustIG    18    

25

Как сделать сторно в 1С

Анализ учета Платформа 1С v8.3 Оперативный учет 1С:Комплексная автоматизация 2.х Управленческий учет Бесплатно (free)

Сторно – это исправление ошибок учета, когда ошибочно внесенную операцию записывают с отрицательными числами. В программах 1С есть два вида документа, с помощью которых можно выполнить сторно необходимых данных. Это "Корректировка регистров" и "Операция" в 1С 8.3.

30.03.2020    6024    Koder_Line    0    

2

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Предлагается ознакомиться с редким способом графического представления иерархических данных. Приводится алгоритм формирования и пример реализации.

18.02.2020    8263    randomus    20    

75

Сравнение адресов: случай из практики

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Россия Бесплатно (free)

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

04.01.2020    5188    AnatolPopov    7    

22

[После]Новогодние задачи

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Совсем немного времени осталось до того момента, когда отзвучат куранты, шампанское будет выпито, мандарины съедены, и даже оливье закончится. Возникнет вопрос: чем бы занять неожиданно появившееся свободное время?

30.12.2019    3985    Alxby    23    

9

30 задач. Странных и не очень

Математика и алгоритмы Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    38337    Infostart    63    

160

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    18971    ildarovich    24    

181

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Побитовые операции "на пальцах"

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Простой пример для понимания того, как это работает.

02.08.2019    5126    nbeliaev    16    

8

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    187782    AlbinaAAA    50    

721

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    6629    vandalsvq    19    

11

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    70973    Infostart    34    

128

Создание отчетов с помощью СКД - основные понятия и элементы

Математика и алгоритмы Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    99176    ids79    32    

330

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    19200    RonX01    69    

88

Организация хранения промежуточных данных

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Организация хранения промежуточных данных в процедуре сверки.

29.05.2019    5037    scientes    1    

3

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы Платформа 1С v8.3 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    10971    Oleg_nsk    97    

79

Парсер таблиц по шаблону. Автоматическая корректировка парсера. Представление таблиц в виде графа.

Математика и алгоритмы Работа с интерфейсом Универсальные функции Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Возникла такая задача: нужно нарисовать в макете шаблон таблицы, где расписано какая ячейка за что отвечает, загрузить таблицу из html и сравнить, подходит ли она под шаблон. Если да, то загрузить информацию по правилу из шаблона. Проблема в том, что в html таблица может приходить с ошибками, то есть какие то ячейки совмещены, хотя не должны. Поэтому нужно сделать так, что бы программа понимала, что таблицы похожи и где конкретно ошибки. Соответсвенно, поделил задачу на 3 этапа. 1 - это представление таблицы в виде графа, 2 - сравнение графов, 3 - забор информации. В данной статье пойдет описание пункта 1.

25.04.2019    4653    trim89    5    

24

Excel vs 1С: битва с неожиданным исходом

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    46045    bolefirenko    123    

46

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Нечёткий поиск. Bitap алгоритм, модификация от Wu-Manber

Математика и алгоритмы Платформа 1С v8.3 Россия Бесплатно (free)

Временами нужен нечёткий поиск в тексте, но не всегда можно использовать внешние компоненты. Данный алгоритм прост, достаточно быстр.

01.04.2019    5776    trim89    10    

48

Решение системы линейных уравнений

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Пример использования объекта Расчет систем линейных уравнений.

25.03.2019    10946    scientes    12    

49

Обсуждение двух задач на пересечение отрезков

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Ищем общее в частностях, или задача о пересечении отрезков.

15.03.2019    7548    scientes    16    

24

Консилиум во флаконе

Анализ учета Бухгалтерский учет Запросы Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Ошибки, держитесь крепче. Flowcon вышел на охоту.

14.03.2019    9287    1c-intelligence    10    

25

Многопоточное восстановление последовательностей

HighLoad оптимизация Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    17046    _ASZ_    33    

52