Matrix Factorization
#
BigQuery ML に Matrix Factorization が来た日本時間 2020-04-18 に BigQuery ML の新モデル Matrix Factorization がベータリリースされました。
#
Matrix Factorization とはuser と item を入力として、似た rating 傾向のある人を参考に未知の rating を予想するものです。併売しそうな商品を推薦する際に使ったりできます。
詳細な Matrix Factorization の方法論などは他のドキュメントを参照してください。
#
BigQuery ML で Matrix Factorization を使う際のハマりポイントオンデマンドユーザは訓練できません。
大半のユーザはオンデマンドクエリの利用者で、Reservations を設定していないと思いますのでハマります。
後述する手順を実行しようとすると、Training Matrix Factorization models is not available for on-demand usage. To train, please set up a reservation (flex or regular) based on instructions in BigQuery public docs.
とエラーメッセージが表示されます。
#
実際に触ってみる#
BigQuery Reservations を設定する(オンデマンドユーザのみ)#
BigQuery Reservations とはBigQuery を秒、月、年単位で定額料金利用ができるものです。 Reservations の概要を見ると詳細に理解できます。
#
スロットを購入する- BigQuery の左メニューから「予約」をクリック
- 上メニューから「スロットを購入する」を選ぶ
- 「コミット期間」、「ロケーション」、「スロット」を選ぶ(お試しなら最小単位で、コミット期間は Flex、スロットは 500 がおすすめ)
- 「購入」ボタンをクリック
#
予約を作成する- 上メニューから予約を作成を選ぶ
- 「予約名」、「場所」、「スロット数」を入力する(お試しなら最小単位で、スロット数は 500 がおすすめ)
- 「保存」ボタンをクリック
#
割り当てを作成する- 画面中央から「割り当て」のタブをクリック
- 「組織、フォルダ、プロジェクトを選択」、「予約」を入力する(予約には作成したものを入力する)
- 「作成」ボタンをクリック
#
BigQuery ML クエリを実行する#
訓練基本的には、他の CREATE MODEL と同様にクエリを書くだけです。引数の名前を設定するオプションもありますが、設定しない場合には、user、item、rating の列が必須になります。 user、item は GROUPABLE な任意の型、rating は INT64、NUMERIC、FLOAT64 のみに対応しています。
オプションの詳細は The CREATE MODEL statement for Matrix Factorization を参照しましょう。
今回は、UNNEST で訓練データを作ってみました(他のモデルをオンデマンドで回す場合には、参照量が 0 になるため無料ですが、Reservations を使ってるため、お金はかかります。)
user | item | rating |
---|---|---|
1 | 1 | 5 |
1 | 2 | 1 |
1 | 3 | 5 |
2 | 1 | 3 |
2 | 2 | 3 |
3 | 1 | 5 |
#
推論今回は、UNNEST で推論用データも作ります。 Reservations を利用していない場合、UNNEST で物理テーブルを一切参照しなければ無料でできます。 気になる方は、モデル作成完了後に Reservations の設定を削除しておきましょう。
user | item |
---|---|
2 | 3 |
4 | 1 |
正しく推論できていれば、rating を含むテーブルが返ってきます。
ML.WEIGHTS
を使うと分散表現も得られるので、word2vec の代わりに使えるかもしれません。
#
まとめBigQuery ML に Matrix Factorization が来て、無事に利用することができました。 実行環境が分離され、データ(とコスト)のみに注力して Matrix Factorization が利用できるため、とても素晴らしいリリースだと思います。 ただ DNN のリリースも望まれる中、オンデマンド料金をサポート外にするビジネスモデルの変革とも取れるリリースになりました。 今後の BigQuery ML を含む BigQuery 全体の料金体系がどうなっていくのか気になるところです。