Перейти к содержанию

Расширения и ускорение

Векторизованные ключи

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

Векторизация позволяет посчитать много факторов по цене расчёта одного фактора.

Простой пример:

circle_feature = {
    'type': 'circle',
    'dataset': 'ru-pub-households/apartments',
    'field': ['apartments', 'price', 'rooms'],
    'limit': 300,
    'agg': ['sum', 'mean'],
    'fillna': 0,
}

Как видите, здесь векторизованы 2 поля: 'field': ['apartments', 'price', 'rooms'] и 'agg': ['sum', 'mean']. Таким образом, в результате будет посчитано 6 факторов как декартово произведение списков.

Векторизацию поддерживают следующие поля: 'field', 'agg' — для каждого типа фактора, кроме Match_aggregate.

Так как для каждого фактора должно быть задано уникальное имя, для векторизованных факторов в качестве имени задается шаблон. Пример:

config = {
    ...,
    'features': {
        'apartments_{{FIELD}}_{{AGG}}': {
            'type': 'circle',
            'dataset': 'ru-pub-households/apartments',
            'field': ['price', 'year'],
            'limit': 300,
            'agg': ['mean', 'max'],
            'fillna': 0,
        }
    }
}

На основе шаблона apartments_{{FIELD}}_{{AGG}} будет создано 4 фактора:

  • apartments_price_mean,
  • apartments_year_mean,
  • apartments_price_max,
  • apartments_year_max.