Введение

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

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

Обычно мы сталкиваемся с парными взаимодействиями признаков в наборах данных, где признаки взаимодействуют группами по 2. Например, риск развития болезни сердца будет зависеть от вашего ИМТ, который определяется как вес/рост². Здесь { вес, высота — парное взаимодействие. Менее распространенные взаимодействия признаков более высокого порядка, когда взаимодействуют более двух признаков, распространены в науках, где они имеют такие сложные отношения. Например, {x₁, x₂, x₃, x₄} — это взаимодействие 4-го порядка в log(x₁² + x₂ + x₃*x₄²).

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

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

Анализ взаимодействия функций

Популярным подходом, используемым для визуализации эффектов взаимодействия, является график частичной зависимости (PDP). Мы можем использовать PDP, чтобы визуализировать, как 2 функции меняются в зависимости от прогнозов. Такие варианты, как ICE и shapley, также помогают визуализировать эффекты взаимодействия аналогичным образом. Ниже мы видим пример (с использованием pdpbox) с набором данных о жилье в Калифорнии, где по мере увеличения среднего дохода и среднего количества жильцов дома растет цена жилья.

Хотя эти методы отлично подходят для интерпретации эффекта взаимодействия, они являются довольно утомительными инструментами для автоматической идентификации всех взаимодействий функций в данных, особенно если у вас большое пространство функций. Один простой подход, который мы можем использовать, заключается в применении двухфакторного метода ANOVA ко всем комбинациям функций и взаимодействий фильтров на основе F-статистики. Но они не очень эффективны в захвате сложных отношений. Однако H-статистика Фридмана использует обсуждавшуюся ранее частичную зависимость для определения силы взаимодействий объектов заданного порядка в наборе данных. На приведенном ниже графике показана H-статистика (рассчитанная с использованием sklearn_gbmi) 10 основных взаимодействий в наборе данных о жилье в Калифорнии:

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

X1, X2, X3, X4, X5, X6, X7, X8, X9, X10 = X.transpose()
interaction1 = np.exp(np.abs(X1-X2))                        
interaction2 = np.abs(X2*X3)  
interaction3 = -1*(X3**2)**np.abs(X4) 
interaction4 = (X1*X4)**2
interaction5 = np.log(X4**2 + X5**2 + X7**2 + X8**2)
main_effects = X9 + 1/(1 + X10**2)
Y =              interaction1 + interaction2 + interaction3 + interaction4 + interaction5 + main_effects
ground_truth = [     {1,2},        {2,3},         {3,4},         {1,4},        {4,5,7,8}     ]

метод обнаруживает следующие взаимодействия

Pairwise interactions              Arbitrary-order interactions
(1, 2)        7.8430                      (1, 2)        6.8951        
(4, 8)        3.1959                      (2, 3)        2.0953        
(5, 8)        3.0521                      (7, 8)        1.7971        
(7, 8)        3.0290                      (4, 5, 8)     1.6026        
(4, 5)        2.8506                      (1, 4)        1.5912        
(2, 3)        2.6294                      (5, 7)        1.5261        
(1, 4)        2.5037                      (3, 4)        1.3500        
(5, 7)        2.4460                      (4, 7)        1.0580        
(4, 7)        2.2369                      (4, 7, 8)     0.7727        
(3, 4)        1.8870                      (4, 5, 7, 8)  0.5467

Хотя алгоритм не идеален, он, безусловно, информативен.

Однако эти методы по-прежнему не дают нам никакой информации о характере взаимодействий. Выявление характера взаимодействий может быть особенно полезным, если вы пытаетесь разработать функции, повышающие производительность вашей модели. Если у нас есть первоначальные предположения об отношениях, мы можем использовать некоторые простые эвристики для выбора взаимодействий. Например, библиотека pycaret берет произведения (и, возможно, отношения) всех возможных пар функций и определяет наиболее важные взаимодействия, используя такие методы, как случайный лес, lightgbm или корреляция. Для набора данных о жилье в Калифорнии pycaret выбирает следующие взаимодействия для порога взаимодействия 5%:

['Longitude_multiply_MedInc', 'Latitude_multiply_AveOccup',
 'AveBedrms_multiply_MedInc', 'MedInc_multiply_Longitude',
 'HouseAge_multiply_MedInc', 'Longitude_multiply_Latitude',
 'Latitude_multiply_MedInc']

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

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

Заключение

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