Подготовка данных
Для работы с Morphism и создания датасетов требуется наполнить его данными. Ниже описан подход к проектированию архитектуры загружаемых объектов.
Pipeline подготовки данных для формирования датасета
Порядок действий для загрузки данных в Morphism представлен на следующей схеме. Далее более детально описан каждый из этапов.

Схема описывает процесс для ситуации, когда в приложении отсутствуют не только необходимые данные, но и структуры (сущности, фичи).
Уже созданные сущности и фичи можно переиспользовать при загрузке новых данных. Если в приложении уже настроена загрузка всех нужных данных и они покрывают все требования к новому датасету, процесс можно свести к выполнению только 1, 6, 7 шага.
Что можно грузить в Axiom
По "форме"
Доступна настройка следующих источников:
- Таблица в БД
- Ссылка на таблицу в БД
- CSV / XLSX файл
- SQL-скрипт
Подробнее см. в разделе "Загрузчики"
По "содержанию"
Наполнение таблиц можно разделить на 3 типа. У всех типов различные возможности по использованию при генерации датасетов.
| Тип входных данных | Описание | Агрегация | Работа с историей | Пример |
|---|---|---|---|---|
| Готовые переменные | Данные, рассчитанные в целевом виде, используются в датасетах "как есть". | Одно значение сущности - одна запись на дату. | Нет, используются данные только на дату построения датасета | Пол, дата рождения, место работы |
| Предагрегат - транзакционный | Транзакционные данные, предварительно агрегированные (если применимо) за определенный фиксированный период - гранулярность. | Возможно несколько записей на дату для одного значения сущности. | Да, возможно использование данных за разные периоды и агрегирование нужного количества срезов. | Количество транзакций за неделю; Сумма ЗП-начислений за месяц |
| Предагрегат - общего назначения | Детализированная информация по сущности под расширенным ключом. | Возможно несколько записей на дату для одного значения сущности. | Да, данные агрегируются только на дату, не за период. Можно выбрать дату из истории в формате "N периодов от даты построения датасета". | Договоры клиента; Ответы БКИ по клиенту (сущность - Клиент) |
Обязательные атрибуты
Сущность - один или несколько атрибутов, являющихся PRIMARY KEY таблицы источника, в разрезе которых будет рассчитываться будущая модель. (см. подробнее)
Дата актуальности (опционально) - дата, на которую актуальны данные.
Дата окончания актуальности (опционально) - дата, до которой актуальны данные. Может быть указана только при наличии даты актуальности.
При загрузке данных в Axiom можно указать в качестве источника дат периода актуальности:
- Атрибут из загружаемой таблицы/файла;
- Фиксированную дату;
- Текущую дату загрузки (используется по умолчанию, если пользователь ничего не указал).
Для двух последних пунктов в источнике не требуется наличие атрибута с датой актуальности.
Проектирование объектов с исходными данными
Исходные требования к датасету
Подход к проектированию входной структуры данных будет описываться на примере в банковской бизнес-области. Этот набор фичей содержит информацию по клиенту, его договорам, транзакциям.
Этот пример охватывает разные виды данных, при необходимости его можно экстраполировать на другие предметные области.
Клиентская информация
| Название | Описание | Период расчета |
|---|---|---|
| Клиентская информация | - | |
| GENDER | Пол | - |
| AGE | Возраст | - |
| PROPERTY_CNT | Количество видов собственности | - |
| Договоры | - | |
| FIRST_OPEN_DT_MONTHS_CNT | Количество месяцев с даты открытия первого кредита | - |
| LOAN_CNT_PERIOD | Общее количество кредитных договоров за период | 6M, 12M |
| LOAN_CNT_RATIO | Отношение количества кредитных договоров на отчетную дату к количеству за период | 6M, 12M, 24M |
| Транзакции | - | |
| TRN_INPUT_CASH_AMT | Сумма транзакций внесения наличных по карте за период | 6M, 12M, 24M |
| TRN_INPUT_NONCASH_AMT | Сумма транзакций внесения безнал по карте за период | 6M, 12M, 24M |
| TRN_ABROAD_AMT | Сумма расходных транзакций за границей за период | 3M, 6M, 12M |
| TRN_VARIANCE | Дисперсия расходных транзакций за период | 3M, 6M, 12M |
Рекомендуется "схлопывать" требования до основных сущностей, например "сумма транзакции", "количество договоров" и т.д. Необходимые фильтры перечислять в соседних столбцах. Так будет удобнее формировать датасеты и проектировать источники переменных для Axiom.
Определение сущности
Сущность - один или несколько атрибутов по которым необходимо рассчитывать модель.
Примеры сущностей:
- ID клиента - если интересен скор по каждому клиенту в общем;
- ID клиента +ID точки продаж - если рассчитываем модели для каждой точки продаж отдельно.
- ID точки продаж - если интересны показатели точек, без детализации по клиентам.
Определение набора базовых фичей
Имея требования к датасету, нужно определить набор фичей.
На примере требований выше описывается процесс формирования списка фичей, указывается к какому типу входных данных оптимальнее отнести каждую переменную.
| Требование | Фича | Тип данных | Комментарий |
|---|---|---|---|
| Пол | Пол | Готовая переменная | Не требует преобразований |
| Возраст | Дата рождения | Готовая переменная | Периоды (возраст, срок, стаж и т.п.) рекомендуется хранить в Axiom в виде даты начала действия периода и рассчитывать при формировании датасета |
| Количество видов собственности | Вид собственности | Предагрегат общего назначения | Расчет количества настраивается агрегирующей функцией в разрезе зерна |
| Количество месяцев с даты открытия первого кредита | Дата открытия первого кредитного договора | Готовая переменная | Вариант 1 |
| Количество месяцев с даты открытия первого кредита | Дата открытия первого договора | Предагрегат общего назначения | Вариант 2, если потенциально могут быть полезны не только кредитные договора |
| Общее количество кредитных договоров за период | Номер договора | Предагрегат общего назначения | - |
| Отношение количества кредитных договоров на отчетную дату к количеству за период | Номер договора | Предагрегат общего назначения | - |
| Сумма транзакций внесения наличных по карте за перио | Сумма транзакции | Транзакционный предагрегат | Итоговые переменные для датасета рассчитываются при создании датасета. Пользователь указывает: агрегирующую функцию (обязательно), условия фильтрации по доменам,периоды расчета |
| Сумма транзакций внесения безнал по карте за период | Сумма транзакции | Транзакционный предагрегат | Итоговые переменные для датасета рассчитываются при создании датасета. Пользователь указывает: агрегирующую функцию (обязательно), условия фильтрации по доменам,периоды расчета |
| Сумма расходных транзакций за границей за период | Сумма транзакции | Транзакционный предагрегат | Итоговые переменные для датасета рассчитываются при создании датасета. Пользователь указывает: агрегирующую функцию (обязательно), условия фильтрации по доменам,периоды расчета |
| Дисперсия расходных транзакций за период | Дисперсия расходных транзакций за период 1, ..., Дисперсия расходных транзакций за период N | Готовая переменная | Переменные, для расчета которых требуются детальные данные, рекомендуется рассчитывать перед зарузкой в Axiom и хранить в качестве готовой переменной |
Гранулярность в транзакционных предагрегатах
Гранулярность - глубина, за которую агрегируются данные в предагрегате перед загрузкой в Axiom. Гранулярность указывается целым числом периодов; доступные периоды: час, день неделя, месяц, год.
Выбор гранулярности остается за пользователем, проектирующим входящие объекты для Axiom. Руководствоваться стоит минимально необходимым периодом, за который будут формироваться переменные для датасетов. Если модели обычно используют транзакционные фичи за периоды в 1, 3, 6 и 12 месяцев, рекомендуется рассчитывать данные в предагрегате с гранулярностью 1 месяц.
Избыточно мелкая гранулярность увеличивает объем хранимых данных, но дает больше вариативности для агрегирования при создании итоговых фичей в датасет.
Результирующие объекты
Перед загрузкой данных в Axiom необходимо продумать разделение по таблицам.
Для примера датасета выше рекомендуемый набор входных витрин для Axiom приведен в таблице ниже. В каждой витрине должны присутствовать обязательные поля: ключ(-и) сущности и (опционально) даты актуальности.
| Таблица | Тип таблицы | Сущность | Переменная | Описание переменной |
|---|---|---|---|---|
| CUSTOMER_INFO | Готовые переменные | Клиент | SEX | Пол |
| CUSTOMER_INFO | Готовые переменные | Клиент | BIRTH_DT | Дата рождения |
| POPERTY | Предагрегат общего назначения | Клиент | PROPERTY_NM | Вид собственности |
| LOAN | Готовые переменные | Клиент | FIRST_OPEN_DT | Дата открытия первого кредитного договора |
| AGREEMENT | Предагрегат общего назначения | Клиент | AGREEMENT_NUM | Номер договора |
| AGREEMENT | Предагрегат общего назначения | Клиент | AGREEMENT_TYPE | Тип договора |
| TRANSACTION | Транзакционный предагрегат | Клиент | TRN_AMT | Сумма транзакции |
| TRANSACTION | Транзакционный предагрегат | Клиент | TRN_DIRECTION | Направление транзакции (in/out) |
| TRANSACTION | Транзакционный предагрегат | Клиент | TRN_COUNTRY | Страна проведения транзакции |
| TRANSACTION_CALC | Готовые переменные | Клиент | VARIANCE_1 | Дисперсия расходных транзакций за период 1 |
| TRANSACTION_CALC | Готовые переменные | Клиент | ... | ... |
| TRANSACTION_CALC | Готовые переменные | Клиент | VARIANCE_N | Дисперсия расходных транзакций за период N |