Здравствуйте. В компании внедряется решение по взысканию. Есть потребность в А/Б тестировании стратегий, (он же Champion-Challenger).

Вопрос: имеется ли в Сreatio функционал для такого тестирования?



Для тестирования стратегий необходимо формировать выборку по тестовой и контрольной группе. При этом количество клиентов в выборке должно быть одинаково. 

Пробовал использовать дату рождения "заканчивается на 1", это позволяет выбрать клиентов по 10%. Но по условию теста нужно 15%.

Подскажите у кого какой опыт в тестировании стратегий. 

 

Нравится

0 комментариев
Показать все комментарии

Здравствуйте, коллеги. Нужно помощь в организации тестирования стратегий. В компании развернуто решение для collection. Имеется потребность тестировать стратегии на предмет эффективности согласно подходу А/Б тестирования, он же Champion-Challenger. Стратегий более 25 шт.  

Основная проблема как сделать слепую (рандомную) выборку согласно условиям теста и при этом количество клиентов должно быть одинаковым.

Например нужно взять 30% новых клиентов для конкретной стратегии и из них по 15 % это тестовая и контрольная группа. И на каждой группе применить разные стратегии, старую и новую, Champion-Challenger.  

 

Для рандомизации пробовал использовать последние цифры дня рождения, "заканчивается на 1" и т.п., но такие условия дают выборку только по 10%. Как вариант ИНН клиента, но насколько знаю ИНН не совсем рандомен. Кроме того выборка дает разное количество клиентов для отработки. Например, 386 и 315 т.е. с досточно большой разницей, что "смажет" результат.

Как вариант генерировать еще 1му полю 0 и 1 рандомно, что бы поделить на 2 группы.

 

Вопросы:

  1. Есть ли в Сreatio функционал для автоматизированного А/Б тестирования? Есть информация, что есть функционал для решения Маркетинг, но здесь немного другая ситуация. Т.к. клиенты заходят залповой загрузкой из основной учетной системы, а не извне в рандомном порядке и нельзя предсказать количество клиентов для тестируемой стратегии.
  2. Если у кого нибудь опыт в подобном тестировании в среде creatio?
  3. Есть ли у кого опыт в рандомизации?
  4. Так же вопрос как оценить результаты теста. Т.е. как сформировать отчет по выборке. Понятно, что в Creatio должны быть id теста как минимум привязанный к клиенту. И возможно в соотношении 1н ко многим. 

 

Из доступных параметров: дата рождения клиента, дата выхода на просрочку, ИНН, сотовый телефон.  

 

Пример условий стратегии на скриншоте.



По продукту вроде Financial Services.

 

Прикрепленные файлы

Нравится

1 комментарий

В версии 7.17.3 появился новый элемент [ Произвольное распределение ], который позволяет случайным образом направить участников по разным веткам кампании. Данный элемент удобно использовать для контрольных групп, сплит-тестов. 

Показать все комментарии

Привет. 



При запуске процесса из элемента "Задание сценарий" следующим образом: 



var manager    = UserConnection.ProcessSchemaManager;

var flowEngine = new FlowEngine(UserConnection);

var processSchema = manager.GetInstanceByName("test process");

Dictionary parameter = new Dictionary();

TestCompositeObjectList list = new TestCompositeObjectList();

list.Add(new A { ColName= "test1" });

list.Add(new A { ColName= "test2" });

parameter.Add("TestCollection", list);

parameter.Add("Name", "Test");

flowEngine.RunProcess(processSchema, parameter);

return true;

 

Сам класс TestCompositeObjectList был создан по этому примеру.

 

При запуске процесса ловим: 

System.InvalidCastException: Unable to cast object of type 'Terrasoft.Common.CompositeObjectList`1[Terrasoft.Common.CompositeObject]' to type 'System.Collections.Generic.List`1[System.String]'.



В документации не нашел примера заполнение и этот способ, что выше, тоже как ясно - не работает. 

TestCollection - и есть коллекция записей с полем стринг.

Name - просто ещё один параметр.



Дайте пожалуйста пример как сделать это.

 

 

Нравится

4 комментария
Лучший ответ

Разобрался. 

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



Код вызова: 

 

var manager	= UserConnection.ProcessSchemaManager;
var flowEngine = new FlowEngine(UserConnection);
var processSchema = manager.GetInstanceByName("ProcessName");
 
Dictionary<string, object> parameter = new Dictionary<string, object>();
 
CompositeObjectList<CompositeObject> objList = new CompositeObjectList<CompositeObject>();
 
objList.Add(new CompositeObject (new Dictionary<string, object>() {{"SubParamName",  "SubParamValue1"}}));
objList.Add(new CompositeObject (new Dictionary<string, object>() {{"SubParamName",  "SubParamValue2"}}));
// ....
// Первый коллекция записей - второе примитивный 
parameter.Add("CollectionName", objList);
parameter.Add("PrimaryParam", "Test");
 
flowEngine.RunProcess(processSchema, parameter);

 

Получение в скрипте: 

 

CompositeObjectList<CompositeObject> collection = Get<CompositeObjectList<CompositeObject>>("CollectionName");

 

if (ProcessSchemaManager.GetCanUseFlowEngine(userConnection, processSchema)) {

                    var flowEngine = new FlowEngine(userConnection);

                    Dictionary<string, string> parameter = new Dictionary<string, string>();

                    parameter.Add("CaseRecordId", CaseRecordId.ToString());

                    flowEngine.RunProcess(processSchema, parameter);

                } else {

                    var moduleProcess = processSchema.CreateProcess(userConnection);

                    if (processSchema.Parameters.ExistsByName("CaseRecordId")) {

                        moduleProcess.SetPropertyValue("CaseRecordId", CaseRecordId);

                    }

                    moduleProcess.Execute(userConnection);

                }

Полозюков Евгений Петрович,

У вас в примере обычный параметр, а не лист. С обычными то все понятно. Меня интересует передача именно параметра типа коллекция записей.

Возможно ли это вообщ? Потому что тут последний коммент говорит что "неа".

Разобрался. 

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



Код вызова: 

 

var manager	= UserConnection.ProcessSchemaManager;
var flowEngine = new FlowEngine(UserConnection);
var processSchema = manager.GetInstanceByName("ProcessName");
 
Dictionary&lt;string, object&gt; parameter = new Dictionary&lt;string, object&gt;();
 
CompositeObjectList&lt;CompositeObject&gt; objList = new CompositeObjectList&lt;CompositeObject&gt;();
 
objList.Add(new CompositeObject (new Dictionary&lt;string, object&gt;() {{"SubParamName",  "SubParamValue1"}}));
objList.Add(new CompositeObject (new Dictionary&lt;string, object&gt;() {{"SubParamName",  "SubParamValue2"}}));
// ....
// Первый коллекция записей - второе примитивный 
parameter.Add("CollectionName", objList);
parameter.Add("PrimaryParam", "Test");
 
flowEngine.RunProcess(processSchema, parameter);

 

Получение в скрипте: 

 

CompositeObjectList&lt;CompositeObject&gt; collection = Get&lt;CompositeObjectList&lt;CompositeObject&gt;&gt;("CollectionName");

 

Показать все комментарии

Хорошая статья IT-консультанта Бориса Шлаина (прилагаемый файл).
В статье рассказывается о пересмотре IT-стратегий банков в условиях кризиса.

Нравится

Поделиться

0 комментариев
Показать все комментарии