Отказ от ответственности: я работаю с Mahout's Spark Item Similarity.
ALS в целом не подходит для множественных действий. Сначала иллюстрация. То, как мы используем несколько действий в ALS, - это взвешивать одно над другим. Например, покупка = 5, просмотр = 3. ALS был разработан в те дни, когда рейтинги казались важными, и их прогнозирование было вопросом. Теперь мы знаем, что рейтинг важнее. В любом случае ALS использует прогнозируемые рейтинги / веса для ранжирования результатов. Это означает, что представление на самом деле ничего не говорит о ALS, поскольку рейтинг 3 означает что? Нравиться? Неприязнь? ALS пытается обойти это, добавляя параметр регуляризации, и это помогает решить, является ли 3 подобным или нет.
Но проблема более фундаментальная, это намерение пользователя. Когда пользователь просматривает продукт (используя приведенный выше пример типа ecom), какое количество «покупательских» намерений задействовано? По моему собственному опыту, может не быть, а может быть много. Товар был новым или имел яркое изображение или другую приманку. Или я делаю покупки и смотрю 10 вещей перед покупкой. Однажды я протестировал это с большим набором данных ecom и не обнаружил комбинации параметра регуляризации (используемого с ALS trainImplicit) и весовых коэффициентов действия, которая могла бы превзойти автономную точность событий «покупки», используемых отдельно.
Поэтому, если вы используете ALS, проверьте свои результаты, прежде чем предполагать, что объединение разных событий поможет. Использование двух моделей с ALS не решает проблему либо потому, что из событий покупки вы рекомендуете человеку что-то купить, из просмотра (или вторичного набора данных) вы рекомендуете человеку что-то просмотреть. Фундаментальная природа намерения не раскрыта. Линейная комбинация записей по-прежнему смешивает намерения и вполне может привести к снижению качества.
Что делает Mahout Spark Item Similarity, так это коррелирует просмотры с покупками - на самом деле оно коррелирует основное действие, когда вы четко понимаете намерения пользователя, с другими действиями или информацией о пользователе. Он строит корреляционную матрицу, которая фактически очищает просмотры тех, которые не коррелировали с покупками. Затем мы можем использовать данные. Это очень мощная идея, потому что теперь почти любой пользовательский атрибут или действие (практически весь поток кликов) можно использовать при создании рекордов, поскольку корреляция всегда проверяется. Часто корреляция небольшая, но это нормально, эту оптимизацию следует удалить из расчета, поскольку матрица корреляции очень мало добавляет к реквизитам.
Кстати, если вы находите интеграцию Mahout Spark Item Similarity пугающей по сравнению с использованием MLlib ALS, я собираюсь пожертвовать сквозную реализацию в качестве шаблона для прогнозирования .io, все из которых имеет открытый исходный код по лицензии Apache.
person
pferrel
schedule
16.07.2015