
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Get MovieLens Data
/ 5
Explore the Data
/ 5
Making Recommendations
/ 5
Customer Targeting
/ 5
BigQuery は、Google が提供する低コスト、NoOps のフルマネージド分析データベースです。BigQuery では、インフラストラクチャを所有して管理したりデータベース管理者を置いたりすることなく、テラバイト単位の大規模なデータでクエリを実行できます。また、SQL が採用されており、従量課金制というメリットもあります。そのため、ユーザーは有用な情報を得るためのデータの分析に専念することができます。
BigQuery の機能である BigQuery 機械学習(BigQuery ML)を使用すれば、最小限のコーディングで機械学習モデルの作成、トレーニング、評価、予測が可能になります。
協調フィルタリングは、ユーザーに合わせたおすすめの商品情報、または商品ごとのユーザー ターゲティング情報を生成する機能です。ユーザー ID、アイテム ID、ユーザーによる商品の評価の 3 つの列が含まれるテーブルが出発点となります。このテーブルはスパースにできます。つまり、ユーザーはすべての商品を評価する必要がありません。協調フィルタリングはこの評価だけに基づいて、類似するユーザーや商品を探し出したり、あるユーザーが未見の商品に与えると予想される評価を判断したりします。この判断に基づいて、最も高い評価が得られそうな商品をユーザーにすすめたり、最も高い評価を与えそうなユーザーに商品をターゲティングしたりできます。
レコメンデーション システムの具体的な動作を説明するために、MovieLens データセットを使用します。MovieLens は GroupLens から公開されている映画レビューのデータセットです。GroupLens はミネソタ大学コンピュータ サイエンス コンピュータ工学科の研究所で、アメリカ国立科学財団の資金支援により運営されています。
このラボでは、次のタスクの実行方法について学びます。
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
Qwiklabs にシークレット ウィンドウでログインします。
ラボのアクセス時間(例: 1:15:00
)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
準備ができたら、[ラボを開始] をクリックします。
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
[Google Console を開く] をクリックします。
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
利用規約に同意し、再設定用のリソースページをスキップします。
[Cloud Console の BigQuery へようこそ] メッセージ ボックスが開きます。このメッセージ ボックスにはクイックスタート ガイドへのリンクと、UI の更新情報が表示されます。
このタスクでは、コマンドラインを使用して、MovieLens データを格納するための BigQuery データセットを作成します。その後、MovieLens データを Cloud Storage バケットからデータセットに読み込みます。
BigQuery データセットを作成し、MovieLens データを読み込むには、Cloud Shell を使用します。
movies
という名前で作成します。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、クエリエディタを使用して MovieLens データセットを探索、確認します。
このデータセットには 13 万 8,000 人以上のユーザー、約 2 万 7,000 本の映画、2,000 万件を少し超える数の評価が含まれていることがわかります。
movielens_movies
というテーブルに配置します。必要であれば、さらにクエリを実行してデータセットを整えます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、行列分解を使用して生成されたトレーニング済みモデルの指標を確認します。
行列分解は協調フィルタリングの手法の一つで、ユーザー因子とアイテム因子という 2 つのベクターを使用します。ユーザー因子は user_id
を低次元に表現したものであり、同じくアイテム因子は item_id
を低次元に表現したものです。
データの行列分解を実行するために、一般的な BigQuery ML 構文を使用します。ただし、ここでは model_type
を matrix_factorization
とし、協調フィルタリングの設定における各列の役割を指定する必要があります。
行列分解を映画評価データに適用するには、BigQuery ML クエリを実行してモデルを作成する必要があります。ただし、このモデルタイプの作成には最長 40 分かかります。また、Qwiklabs 環境で提供されるリソースとは異なる予約指向のリソースが含まれた Google Cloud プロジェクトが必要です。
このラボの残りの部分で使用するモデルは、Cloud トレーニング プロジェクトの cloud-training-demos BigQuery データセットで作成されています。
num_factors
オプションと l2_reg
オプションの数値は、このモデルのトレーニングを高速化するためにテストを繰り返して選ばれたものです。このタスクでは、トレーニング済みモデルを使用しておすすめ情報を生成します。
userId
が 903 のユーザーにおすすめできる最適なコメディ映画を探しましょう。
このユーザーが過去に観て評価した映画のリストが表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、特定のユーザーが高く評価しそうな映画を見つける方法を確認します。自社のある商品について、それを高く評価しそうなユーザーを見つけることが必要な場合があります。
movieId=96481
の映画には 1 件の評価しかありませんが、もっと多くのレビューを集めるために、この映画を高く評価しそうな 100 人のユーザーにクーポンを送ろうと考えています。
ターゲットにする 100 人のユーザーが出力されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、クエリを実行してユーザーと映画の一括予測を取得します。
すべてのユーザーと映画にこの予測を一括で実行できるでしょうか。前のクエリのようにユーザーや映画を指定して取得するのではなく、既成の便利な関数を使用して、トレーニング中に検出されたすべての movieId
と userId
に一括予測を実行します。
LIMIT コマンドを使用しないと、デフォルトの設定では結果が多すぎて返されませんが、このモデルで予測可能なタイプは、出力から判断できます。
前のセクションで説明した方法で、ユーザーが過去に鑑賞して評価した映画を除外できます。鑑賞済みの映画をデフォルトで除外しないのには理由があります。たとえばレストランのおすすめで考えると、過去に高く評価したレストランがおすすめ情報に含まれることをユーザーが当然視するケースがあるからです。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください