Построение системы рекомендаций с помощью Spark — простая задача. Библиотека машинного обучения Spark уже выполняет всю тяжелую работу за нас.
В этом исследовании я покажу вам, как создать масштабируемое приложение для больших данных, используя следующие технологии:
- Scala Language
- Искра с машинным обучением
- Акка с актерами
- Cassandra
Система рекомендаций — это механизм фильтрации информации, который пытается предсказать рейтинг, который пользователь даст конкретному продукту. Есть несколько алгоритмов для создания системы рекомендаций.
В Apache Spark ML реализованы чередующиеся наименьшие квадраты (ALS) для совместной фильтрации, очень популярный алгоритм для выработки рекомендаций.
ALS Recommender — это алгоритм матричной факторизации, который использует чередующиеся наименьшие квадраты с взвешенной лямда-регуляризацией (ALS-WR). Он подразделяет пользователя на матрицу A элементов в матрицу U пользовательских элементов и матрицу M элементов на элемент: он выполняет алгоритм ALS параллельно. Алгоритм ALS должен выявлять скрытые факторы, которые объясняют наблюдаемого пользователя для рейтингов предметов, и пытается найти оптимальные веса факторов, чтобы минимизировать наименьшие квадраты между прогнозируемыми и фактическими рейтингами.
Пример:

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

1. Архитектура проекта
Архитектура, используемая в проекте:

2. Набор данных
Наборы данных с информацией о фильме и рейтингом пользователей были взяты с сайта Movie Lens . Затем данные были настроены и загружены в Apache Cassandra. Докер также использовался для Кассандры.
Пространство клавиш называется фильмы. Данные в Кассандре моделируются следующим образом:

3. Код
Код доступен в: https://github.com/edersoncorbari/movie-rec
4. Организация и конечные точки
Коллекции:
| Коллекция | Комментарии |
|---|---|
| movies.uitem | Содержит доступные фильмы, общий набор данных составляет 1682. |
| movies.udata | Содержит фильмы, оцененные каждым пользователем, общий набор данных составляет 100000. |
| movies.uresult | Где данные, рассчитанные моделью, сохраняются, по умолчанию они пусты. |
Конечные точки:
| метод | End-Point | Комментарии |
|---|---|---|
| ПОЧТА | / Фильм-модель поезд | Сделайте обучение модели. |
| ПОЛУЧИТЬ | / Фильм-Get-рекомендация / {ID} | Списки рекомендованных пользователем фильмов. |
5. Практическая стыковка и настройка Cassandra
Выполните команды ниже, чтобы загрузить и настроить cassandra:
|
1
2
|
$ docker pull cassandra:3.11.4$ docker run --name cassandra-movie-rec -p 127.0.0.1:9042:9042 -p 127.0.0.1:9160:9160 -d cassandra:3.11.4 |
В каталоге проекта (movie-rec) есть наборы данных, уже подготовленные для помещения в Cassandra.
|
1
2
3
|
$ cd movie-rec$ cat dataset/ml-100k.tar.gz | docker exec -i cassandra-movie-rec tar zxvf - -C /tmp$ docker exec -it cassandra-movie-rec cqlsh -f /tmp/ml-100k/schema.cql |
6. Практический Бег и тестирование
Войдите в корневую папку проекта и выполните команды, если SBT впервые загрузит необходимые зависимости.
|
1
|
$ sbt run |
Теперь! В другом терминале выполните команду для обучения модели:
|
1
|
$ curl -XPOST http://localhost:8080/movie-model-train |
Это начнет модель обучения. Затем вы можете запустить команду, чтобы увидеть результаты с рекомендациями. Пример:
|
1
|
$ curl -XGET http://localhost:8080/movie-get-recommendation/1 |
Ответ должен быть:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
{ "items": [ { "datetime": "Thu Oct 03 15:37:34 BRT 2019", "movieId": 613, "name": "My Man Godfrey (1936)", "rating": 6.485164882121823, "userId": 1 }, { "datetime": "Thu Oct 03 15:37:34 BRT 2019", "movieId": 718, "name": "In the Bleak Midwinter (1995)", "rating": 5.728434247420009, "userId": 1 }, ...} |
Это глазурь на торте! Помните, что настройка настроена на показ 10 рекомендаций по фильмам на пользователя.
Вы также можете проверить результат в коллекции uresult:

7. Модель Предсказания
Настройки обучения модели и приложения находятся в: ( src / main / resources / application.conf )
|
1
2
3
4
5
|
model { rank = 10 iterations = 10 lambda = 0.01} |
Этот параметр контролирует прогнозы и связан с тем, сколько и какие данные у нас есть. Для получения более подробной информации о проекте, пожалуйста, перейдите по ссылке:
8. Ссылки
Для разработки этого демонстрационного проекта были использованы книги:
- Проекты машинного обучения Scala
- Реактивное программирование с Scala и Akka
И Документация Spark ML:
- https://spark.apache.org/docs/2.2.0/ml-collaborative-filtering.html
- https://spark.apache.org/docs/latest/ml-guide.html
Спасибо!
|
Смотреть оригинальную статью здесь: Система рекомендаций с использованием Spark ML Akka и Cassandra Мнения, высказанные участниками Java Code Geeks, являются их собственными. |