ivi:Hydraでの個人的な推奨事項

iviオンラインシネマでは、数万単位のコンテンツと「何を見るかを選択する」というタスクが重要になります。









ユーザーの興味(内部名-Hydra )に基づいてコンテンツを選択するiviの推奨システムについては、 ここここに書いて ます 。 多くの時間が経過し、プロジェクトコードが大幅に変更されました:オフラインパーツはSparkに移動し、オンラインパーツは高負荷に適応し、Hydraは異なる推奨モデルの使用を開始しました-これらの変更はすべて記事で強調表示されます。



ヒドラアーキテクチャ



2014年に、HydraはPythonアプリケーションの形式で作成されました。推奨モデルのデータは、外部ソース(Vertica、Mongo、Postgres)から別のスクリプト(「オフラインパーツ」)にロードされました。 スクリプトは、次元のユーザー項目マトリックスを準備しました m\回n ここで、mはトレーニングサンプルのユーザー数、nはカタログサイズ(一意のコンテンツユニットの数)です。アイテムベースの個人的な推奨事項の詳細については、 Sergei Nikolenkoの記事を参照してください



ユーザーの履歴は次元ベクトルです n 、ユーザーが操作した各コンテンツ(見た、評価した)にはユニットがあり、残りの要素はゼロです。 各ユーザーは数十単位のコンテンツと対話し、カタログサイズは数千単位であるため、スパース行ベクトルが得られます。このベクトルには多くのゼロがあり、ユーザーアイテムマトリックスはそのようなベクトルで構成されます。 iviオンラインシネマは、ユーザーから豊富なフィードバックを収集します-コンテンツビュー、評価(10ポイントスケール)、オンボーディング結果(嫌いなバイナリ設定、こちらはNetflixの例のプレゼンテーションです)-モデルはこのデータでトレーニングされます。



推奨事項を発行するために、古典的なメモリベースのアルゴリズムが使用されました-Hydraはトレーニングセットを「記憶」し、ユーザービュー(および評価)のマトリックスをメモリに保存しました。 サービスの対象者が増加するにつれて、ユーザー項目マトリックスのサイズも比例して増加しました。 当時の推奨サービスのアーキテクチャは次のとおりでした。







ヒドラの欠点



図からわかるように、ユーザーフィードバック(ビュー、コンテンツレーティング、オンボーディングマーク)は、高速なキーと値のストア(MongoDBとRedis)およびVertica-列データストレージに保存されます。 データは、特別なETL手順を使用して段階的に注入されます。



オフラインパーツはクラウンによって毎日起動されます。データをダウンロードし、モデルをトレーニングし、テキストファイルとバイナリファイル(スパースマトリックス、.pkl形式のpythonオブジェクト)として保存します。 オンラインパーツは、対象ユーザーアクションのモデルと履歴に基づいて、ビュー、評価、コンテンツ購入(Redis / Mongoからのユーザーフィードバックを読みます)に基づいた推奨事項の発行を形成します。 推奨事項は、各サーバーで実行されている多数のpythonプロセスを使用して発行されます(Hydraクラスターには合計8つのサーバーがあります)。



このアーキテクチャはいくつかの問題を引き起こしました:





ヒドラ:復活



この形式のシステム(継続的な改善と改善を伴う)は、2017年2月まで存続しました。 オフライン部分でデータをダウンロードする時間は、アルゴリズムモデルが変更されないままになりました。 2017年の初めに、メモリベースの推奨モデルから最新のALSアルゴリズムに移行することを決定しました( このモデルに関するCourseraのビデオがあります)。



要するに-アルゴリズムは私たちの巨大なまばらなユーザーアイテム行列を提示しようとしています U ユーザー行列とコンテンツ行列の2つの「密」行列の積の形で:





U=X timesYT;Rm timesnU\、Rm timeskXY inRn timesk















ALSを使用すると、すべてのユーザーのトレーニングができます u ベクトル xu 寸法 k -いわゆる ユーザーの「隠れた要因」。 コンテンツの各ユニット i 一致するベクトル yi 同じ次元、コンテンツの「隠された要因」。 同時に k<<m 、隠された要因の空間の次元はカタログのサイズよりもはるかに小さく、各ユーザーは低次元の密なベクトルで記述されます(通常は k<100



ユーザーのベクターとコンテンツベクターの積は、ユーザーとコンテンツの関連性です。値が高いほど、映画がショーに参加する可能性が高くなります。 推奨システムには、「ユーザーが好きなコンテンツを表示する」タスクに加えて、コンテンツの収益化、サービスの配置などに関連する多くのタスクがあるため、ビジネスルールの肉挽き器でALSの排気は削られます。 ビジネスルールは、推奨事項のベクトルをわずかにゆがめます。たとえば、モデルのオフライン評価を行う場合、この事実を考慮する必要があります。



新しいアーキテクチャ



サービスを再設計するために多くの作業が行われましたが、その結果は次のとおりです。









おわりに



Hydraは、アーキテクチャとアルゴリズムの両方の面で、1年で大きく変化しました。 これらの変更の詳細については、一連の記事で説明します。



All Articles