В прошлом посте мы говорили о скрещивании двух индивидуальных нецельночисловых свойств. На практике модели машинного обучения редко скрещивают свойства с недискретными значениями. Однако, модели часто скрещивают свойства с одноразовыми векторами. Рассматривайте скрещения свойств с одноразовыми векторами как логические объединения. Предположим мы имеем два свойства: страну и язык. Одноразовое кодирование каждого из них создает вектора с бинарными свойствами, которые можно интерпретировать как 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 часа ночи, когда хозяин спит, будет сильным негативным предсказателем удовлетворения хозяина.
Заключение
Линейное обучение хорошо масштабируется на массивных данных. Использование пересечений свойств на массивных наборах данных - эффективная стратегия для обучения сложных моделей. Другую стратегию предоставляют нейронные сети, о ней мы поговорим в следующих постах.