среда, 22 августа 2018 г.

Пересечения свойств: пересечение одноразовых векторов

В прошлом посте мы говорили о скрещивании двух индивидуальных нецельночисловых свойств. На практике модели машинного обучения редко скрещивают свойства с недискретными значениями. Однако, модели часто скрещивают свойства с одноразовыми векторами. Рассматривайте скрещения свойств с одноразовыми векторами как логические объединения. Предположим мы имеем два свойства: страну и язык. Одноразовое кодирование каждого из них создает вектора с бинарными свойствами, которые можно интерпретировать как country=USA, country=France или language=English, language=Spanish. Тогда, если произвести скрещивание таких одноразовых кодировок, получим бинарные свойства, которые можно рассматривать как логические объединения, такие как:

country:usa AND language:spanish

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

binned_latitude = [0, 0, 0, 1, 0]
binned_longitude = [0, 1, 0, 0, 0]

Предположим вы создали пересечение двух этих векторов:

binned_latitude X binned_longitude

Это пересечение свойств - 25-элементный одноразовый вектор (24 нуля и 1 единица). Единственная единица в пересечении идентифицирует отдельное объединение широты и долготы. Модель может тогда обучиться отдельным ассоциациям о таком объединении.

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

binned_latitude(lat) = [
  0 < lat <= 10
  10 < lat <= 20
  20 < lat <= 30
]

binned_longitude(lon) = [
  0 < lon <= 15
  15 < lon <= 30
]

Создание пересечения свойств этих больших ящиков приведет к синтетическому свойству, имеющему следующие значения:

binned_latitude_X_longitude(lat, lon) = [
  0 < lat <= 10 AND 0 < lon <= 15
  0 < lat <= 10 AND 15 < lon <= 30
  10 < lat <= 20 AND 0 < lon <= 15
  10 < lat <= 20 AND 15 < lon <= 30
  20 < lat <= 30 AND 0 < lon <= 15
  20 < lat <= 30 AND 15 < lon <= 30
]

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

  • Тип поведения (лай, скуление и пр.)
  • Время суток

Если мы построим пересечение свойств из обоих этих свойств:

[behavior type X time of day]

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

Заключение

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