PredictionIO: система рекомендаций с открытым исходным кодом

машинное обучение искусственный интеллект открытый источник Spark

PredictionIO

PredictionIO — это серверное приложение машинного обучения с открытым исходным кодом, написанное на Scala, которое может помочь вам легко создать механизм рекомендаций с помощью RESTFul API. Ядром PredictionIO является масштабируемая библиотека машинного обучения, полный сквозной конвейер на основе Spark, позволяющий пользователям легко создавать рекомендательную систему с нуля. "

PredictionIO состоит из трех компонентов:

  • PredictionIO platform
  • Сервер событий: собирает данные из приложений в режиме реального времени или по времени.
  • Engine: обучите модель и предоставьте результаты Restful API для запроса.

PredictionIO

Install

У официалов быстрый способ установки в один клик, конечно можно и такРучная установка.

$ bash -c "$(curl -s https://install.prediction.io/install.sh)"
$ PATH=$PATH:/home/yourname/PredictionIO/bin; export PATH

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

$ pio status

### Return:
[INFO] [Console$] Inspecting PredictionIO...
[INFO] [Console$] PredictionIO 0.9.6 is installed at ...
[INFO] [Console$] Inspecting Apache Spark...
[INFO] [Console$] Apache Spark is installed at ...
[INFO] [Console$] Apache Spark 1.6.0 detected ...
[INFO] [Console$] Inspecting storage backend connections...
[INFO] [Storage$] Verifying Meta Data Backend (Source: MYSQL)...
[INFO] [Storage$] Verifying Model Data Backend (Source: MYSQL)...
[INFO] [Storage$] Verifying Event Data Backend (Source: MYSQL)...
[INFO] [Storage$] Test writing to Event Store (App Id 0)...
[INFO] [Console$] (sleeping 5 seconds for all messages to show up...)
[INFO] [Console$] Your system is all ready to go.

Quick Start

Step 1. Run PredictionIO

Сначала запустите основную программу PredictionIO.Для разных хранилищ существуют разные методы выполнения.

$ pio eventserver &
# If you are using PostgreSQL or MySQL, run the following to start PredictionIO Event Server

or

$ pio-start-all
# If instead you are running HBase and Elasticsearch, run the following to start all PredictionIO Event Server, HBase, and Elasticsearch

Step 2. Create a new Engine from an Engine Template

выберитеEngine TemplatesПодходящий двигатель.

$ pio template get <template-repo-path> <your-app-directory>
$ cd MyRecommendation

Доступна сEngine TemplatesВыбирайте, вы также можете настроить, здесь мы используемUniversal RecommenderНапример.

Step 3. Generate an App ID and Access Key

Выполните спецификацию, чтобы сгенерировать APP из Engine и получить соответствующий ключ.

$ pio app new MyRecommendation

### Return:
[INFO] [App$] Initialized Event Store for this app ID: 1.
[INFO] [App$] Created new app:
[INFO] [App$] Name: MyRecommendation
[INFO] [App$] ID: 1
[INFO] [App$] Access Key: ...

$ pio app list

### Return:
[INFO] [App$] Name | ID | Access Key | Allowed Event(s)
[INFO] [App$] MyRecommendation | 1 | ... | (all)
[INFO] [App$] Finished listing 1 app(s).

Step 4. Collecting Data

Затем импортируйте данные, поддержка формата самого основного алгоритма рекомендаций (Cooperative Filtering, CF):user - action - itemтри элемента. использоватьdata/import_eventserver.pyДанные, соответствующие формату, могут быть импортированы в базу данных.

$ curl <sample_data> --create-dirs -o data/<sample_data>
$ python data/import_eventserver.py --access_key <access-key>
...
0::2::3
0::3::1
3::9::4
6::9::1
...

Step 5. Deploy the Engine as a Service

Перед развертыванием приложения задайте основные данные в Engine.json, такие как appName или количество запусков алгоритма.

  ...
  "datasource": {
    "params" : {
      "appName": MyRecommendation
      # make sure the appName parameter match your App Name
    }
  },
  ...

При развертывании системы в веб-службе процесс делится на три этапа: сборка pio -> поезд pio -> развертывание pio. Building отвечает за подготовку базовой среды Spark и подготовку данных. Обучение отвечает за выполнение моделирования алгоритма. Развертывание запускает результат в веб-службе и предоставляет его как Restful API.

  • Bulid and Training the Predictive Model
$ pio build

### Return:
[INFO] [Console$] Your engine is ready for training.


$ pio train

### Return:
[INFO] [CoreWorkflow$] Training completed successfully.

$ pio deploy

### Return:
[INFO] [HttpListener] Bound to /0.0.0.0:8000
[INFO] [MasterActor] Bind successful. Ready to serve.

Step 6. Use the Engine

Затем он выполняется, по умолчанию будет порт 8000, ввод параметра使用者то есть рекомендовать商品数量.

$ curl -H "Content-Type: application/json" \
-d '{ "user": "1", "num": 4 }' https://localhost:8000/queries.json

### Retnrn:
{
  "itemScores":[
    {"item":"22","score":4.072304374729956},
    {"item":"62","score":4.058482414005789},
    {"item":"75","score":4.046063009943821},
    {"item":"68","score":3.8153661512945325}
  ]
}

Reference

  1. PredictionIO
  2. Быстрый старт PredictionIO

License

Эта работа написанаChang Wei-Yaun (v123582)сделать, отCreative Commons CC Attribution-Share Alike 3.0 НеперенесенныйУсловия лицензии опубликованы.