レコメンデーションエンジンのPOC

Talend Big Dataと機械学習のクックブック

シリーズのほかのブログ:

Sandboxのセットアップ

IoTの予測保守リアルタイムのリスク評価データウェアハウス
最適化

はじめに

TalendのBig Data and Machine Learning Sandbox仮想環境をダウンロードしたので、ここではビジネスでの実際的な使用方法をいくつか検討します。この例では、架空のTalend映画データベースWebサイトからのレコメンデーションに基づいて、最も関連性の高い映画をユーザーに提案する方法を紹介します。Talendの機械学習機能を使用して、サイト訪問者各自の評価に基づいて映画を推薦できます。まず、MovieLensのWebサイトから収集した大量の評価データ(モデルの作成に使用されるのは10万以上)を使用して、レコメンデーションモデルを訓練します。このモデルにより、同じ好みを持つ過去のユーザーの評価からに基づいて、訪問者の好みに合う可能性が高い映画のレコメンデーションを提供できます。

Sandboxのレコメンデーションエンジンスキーマ


主なトピック

機械学習

Talendの機械学習機能を使用してレコメンデーションを提供します。

Spark Streaming/リアルタイム

Spark Streamingテクノロジーを使用して、リアルタイムのレコメンデーションをユーザーに提供します。

RESTサービスのアイコン

ライブダッシュボードへのRESTサービス

RESTful Webサービスを使用して、Webベースのダッシュボードでユーザーの動きを追跡します。


実行

Sandboxのロードページから[Recommendation Engine]ユースケースポータルにアクセスして、簡単な指示とインタラクティブWebインターフェイスを利用します。

Sandboxの[Recommendation Engine]Webページへのアクセス

Sandbox環境内でTalend Studioを開きます。この例では、リポジトリビューの[RecommendationEngine]フォルダーを使用します。[Standard][Big Data Batch][Big Data Streaming]のジョブ設計で、ジョブについて探索します。開始する準備ができたら、以下のステップに従ってください。

  1. [Standard]ジョブの下の[RecommendationEngine]フォルダーにナビゲートします。[A_Setup]フォルダーの下のジョブStep_01_EnvironmentSetupを実行します。このジョブは、選択したビッグデータプラットフォームに基づいてデモ環境を初期化します。具体的には、シードデータをHDFSにロードし、NoSQLデータベースのテーブルを初期化します。Sandboxのレコメンデーションエンジンのセットアップ
  2. [Standard]ジョブの下の[RecommendationEngine]フォルダーにナビゲートします。迅速な実行のため、[B_Model]フォルダー内のジョブStep_02_TrainModelを実行します。このステップでは、tALSModelコンポーネントを使用して前のデータのモデルを訓練します。この単一ジョブは、4つの個別の標準およびビッグデータバッチジョブで構成されます。レコメンデーションエンジン訓練モデル
  3. オプション:ジョブ「Step_02_TrainModel」は、標準とビッグデータバッチの両方を使用し、4つの個別のジョブで構成されています。リコメンデーションエンジンプロセス、特に機械学習モデルのトレーニングについてより深く理解するため、このプロセスの各ステップを個別に実行することを選択できます。これを行うには、次の手順に従います。
    • ジョブ1 - [Standard]ジョブの下の[RecommendationEngine]フォルダーにナビゲートし、[B_Model] > [Sub_Steps]に移動します。ジョブDeleteModelを実行します。このジョブは、単にモデルディレクトリーに存在する既存の機械学習モデルをすべて削除します。
    • ジョブ2 - [Big Data Batch]ジョブの下の[RecommendationEngine]フォルダーにナビゲートし、[Sub_Steps]に移動します。ジョブPrepareMovieDataを実行します。このジョブは、映画データをステージングしてCassandra NoSQLテーブルに投入し、リアルタイムのレコメンデーションの実行中にすばやく検索できるようにします。
    • ジョブ3 - [Big Data Batch]ジョブの下の[RecommendationEngine]フォルダーにナビゲートし、[Sub_Steps]に移動します。ジョブTrainを実行します。これは、プレパレーション済みの映画データを使用して、個別化された映画の推奨を作成するためにレコメンデーションエンジンで使用される交互最小二乗アルゴリズムを訓練するジョブです。
    • ジョブ4 - [Standard]ジョブの下の[RecommendationEngine]フォルダーにナビゲートし、[B_Model] > [Sub_Steps]に移動します。ジョブStageModelを実行します。モデルが作成されて訓練されると、HDFにコピーされ、レコメンデーションエンジンからアクセスできるようになります。
  4. [Standard]ジョブの下の[RecommendationEngine]フォルダーにナビゲートします。C_Servicesフォルダーに一覧される3つのジョブを実行して、このデモのWebインターフェイスに必要となるAPIサービスを有効にします。

    Step_03a_MoviesService

    レコメンデーションエンジンMoviesService

    Step_03b_RatingsService

    レコメンデーションエンジンRatingsService

    Step_03c_RecommendationsService

    レコメンデーションエンジンRecommendationsService

  5. [Big Data Streaming]ジョブの下の[RecommendationEngine]フォルダーにナビゲートします。ジョブStep_04a_RecommendationStreamを実行します。このジョブは、Kafka Queueから入力を読み取り、その入力データに基づいて、Cassandra NoSQLデータベースからリアルタイムの映画のレコメンデーションを送信して、Webインターフェース経由でユーザーに表示します。レコメンデーションエンジンのストリーミング
  6. 次に、Webインターフェイスにナビゲートします。デフォルトでは、Charlie Chaplinというユーザー名でログインしています。このユーザーはすでにいくつかの映画を事前評価しています。[Genre]を選択してから、そのジャンル内の[Movie]を選択します。数秒処理した後、彼がすでに評価した映画に基づくレコメンデーションが示されます。レコメンデーションエンジンのデモ用Webページ
    • このユーザー向けにさらに多くの映画を評価する場合は、モデルを再訓練する必要があります。モデルを再訓練するには、まず、現在実行中のRecommendation Streamジョブを停止してから、以下のステップに従って、レコメンデーションエンジンで新しいモデルを使用できるようにします。
      • [Big Data Batch]ジョブの下の[RecommendationEngine]フォルダーにナビゲートします。ジョブStep_06_RetrainModelを実行します。これにより、新しい入力を使用して、ユーザーの最新情報を機械学習モデルに組み込むことができます。
      • [Standard]ジョブの下の[RecommendationEngine]フォルダーにナビゲートします。[B_Model] > [Sub_Steps]フォルダーのジョブStageModelを実行します。前述のように、このジョブは新しく訓練されたモデルをHDFSに配置して、レコメンデーションエンジンがアクセスできるようにします。
      • Recommendation Streamジョブを再開します。Recommendation Streamジョブが実行されている状態で、Webインターフェースに戻って、もう一度、新しいジャンルと映画を選択します。十分な数の映画が新しく評価された場合は、新しいレコメンデーションが表示されるはずです。
  7. 追加の練習として、このWebページの右上から新しいユーザーで開始できます。このユーザーは新規であり、事前に選択された評価はありません。上記と同じプロセスに従って、いくつかの映画を評価し、モデルを再訓練して、Recommendation Streamジョブを再開します。これで、この新しいユーザーの評価に基づいてレコメンデーションが表示されます。

まとめ

この例では、個々のユーザーの以前の映画の評価から収集された情報に基づいてリアルタイムで映画のレコメンデーションを提供するための、レコメンデーションエンジンの使用に焦点を当てました。個々のユーザーから収集される情報が多いほど、そのレコメンデーションはユーザーにとってより価値のあるものになります。Talendは、Spark Streamingと交互最小二乗モデルを使用してレコメンデーションを生成し、CassandraなどのNoSQLデータベースと高速読み取り機能を使用して、レコメンデーションをわずか数秒でWebフロントエンドに提供します。

| 最終更新日時: June 26th, 2019