Amazon Personalize がレコメンデーションアイテムのスコアを出力できるようになりました

記事タイトルとURLをコピーする

はじめに

こんにちは、技術 1 課の山中です。 毎日花粉症の薬を飲んでるのですが、花粉はいつまで続くのでしょうか。 花粉の検査を以前病院で行ってもらったのですが、検査結果を待たずして引っ越してしまったので本当の花粉症なのか未だになぞです。

今回は Amazon Personaliize のアップデートがあったので、ためしてみました!

Amazon Personalize とは

Amazon Personalize (以下、Personalize) とは、 Amazon.com で使用されている機械学習アルゴリズムを使用して、ユーザへのレコメンデーション機能を簡単に作成できるサービスです。 Personalize を使用すると、ユーザの嗜好や行動に基づくレコメンデーション機能などを簡単にアプリケーションで実現できます。

Personalize のスコアリング

今回のアップデートで、各レコメンデーションアイテムごとに推奨度合いを測るためのスコアが提供されるようになりました。 このアップデートによって、例えば「ユーザにレコメンデーションするアイテムは最高スコアの 50 %以上のものとする」等これまでより柔軟にビジネスロジックに合わせたレコメンデーションが実現できます。

この数値はデータセット内の全てのアイテムに対する 相対的なスコアリング です。 各アイテムのスコアは 0 から 1 の間で、全てのアイテムのスコアの合計は 1 となります。 例えば、レコメンド対象の映画が 3 本しかない場合は、 0.6、 0.3、 0.1 のようになり、対象が 10,000 本の場合、各アイテムの平均スコアは 1 / 10,000 となります。

計算方法等の詳細については、 公式のブログ をご参照ください。

ためしてみる

早速ためしていきましょう!

前提

このアップデートを試す前に、以下に従い ソリューション (学習済みモデル) の作成まで済ませておく必要があります。

Amazon Personalize Getting started

キャンペーンの作成

作成済みのソリューションをデプロイして、キャンペーンを作成します。

作成済みデータセットグループの Dashboard 画面から Create new campaign (新しいキャンペーンを作成) ボタンをクリックします。

作成済みのソリューションバージョンを指定し (他は任意)、 Create campaign (キャンペーンの作成) ボタンをクリックします。

キャンペーンの作成ステータスが Active になるまでしばらく待ちます。

作成が完了すると、キャンペーンのテストがマネジメントコンソールからできるので、テスト用の User ID を入力してテストしてみましょう。

Get recommendations (レコメンデーションの取得) ボタンをクリックすると、レコメンデーションアイテムと一緒にスコアリング結果も取得することができました。

CLI で取得してももちろん同様の結果が得られます。

$ aws personalize-runtime get-recommendations \
--campaign-arn arn:aws:personalize:ap-northeast-1:xxxxxxxxxxxx:campaign/campaign-using-scores \
--user-id 1

{
    "itemList": [
        {
            "itemId": "466",
            "score": 0.0043079
        },
        {
            "itemId": "1544",
            "score": 0.0042353
        },
        {
            "itemId": "1580",
            "score": 0.0039171
        },
        {
            "itemId": "474",
            "score": 0.0036741
        },
        {
            "itemId": "3408",
            "score": 0.0035137
        },
        {
            "itemId": "2641",
            "score": 0.0030193
        },
        {
            "itemId": "587",
            "score": 0.0029323
        },
        {
            "itemId": "2716",
            "score": 0.0028162
        },
        {
            "itemId": "1573",
            "score": 0.0027067
        },
        {
            "itemId": "1393",
            "score": 0.0025739
        },
        {
            "itemId": "515",
            "score": 0.0025597
        },
        {
            "itemId": "25",
            "score": 0.0024938
        },
        {
            "itemId": "1073",
            "score": 0.0024364
        },
        {
            "itemId": "1019",
            "score": 0.0024356
        },
        {
            "itemId": "1923",
            "score": 0.0024212
        },
        {
            "itemId": "1129",
            "score": 0.0024064
        },
        {
            "itemId": "1183",
            "score": 0.0023887
        },
        {
            "itemId": "1101",
            "score": 0.0022543
        },
        {
            "itemId": "494",
            "score": 0.0022437
        },
        {
            "itemId": "1408",
            "score": 0.002216
        },
        {
            "itemId": "11",
            "score": 0.0022076
        },
        {
            "itemId": "380",
            "score": 0.0021826
        },
        {
            "itemId": "1407",
            "score": 0.0021254
        },
        {
            "itemId": "357",
            "score": 0.0020975
        },
        {
            "itemId": "788",
            "score": 0.0020394
        }
    ]
}

おわりに

Personalize はデータさえあれば簡単にレコメンデーションの機能の実装ができて便利ですね。 また、スコアリングの値も取得できるようになり、更に幅が広がりそうです!!!

また、本ブログの内容は 2020/4/15(水) 12:00 より YouTube Live で配信される「30分でわかる AWS UPDATE!」でも取り上げる予定ですので、ぜひご覧ください! もしリアルタイムで見逃しても、アーカイブ動画から内容を確認できます。 https://youtu.be/6fsFNkpnQns

参考