Amazon Web Services ブログ

AWS Data Exchange で TruFactor のウェブセッションインテリジェンスをクエリ、視覚化、予測する

データは無限にあるという性質を考えると、ビジネスの洞察を得るために適切なデータセットを見つけることは困難な場合があります。さまざまなデータセットの中央リポジトリにアクセスして、クエリ、視覚化、予測を行うことで、ビジネスを改善できます。AWS Data Exchange により、適切なデータセットを見つけることがはるかに簡単になりました。例として、ウェブセッションの訪問と人口統計に関するデータセットを使用して、どの人口統計グループが最も頻繁にウェブサイトにアクセスするかを理解するのに役立ちます。その後、機械学習 (ML) モデルと訪問予測を使用してビジネスを改善できます。

AWS Data Exchange では、クラウドでサードパーティのデータを簡単に検索、サブスクライブ、使用できます。AWS Data Exchange 内でデータ製品をサブスクライブした後、AWS Data Exchange API、AWS CLIAWS マネジメントコンソールを使用して、データを直接 Amazon S3 にロードできます。その後、分析から機械学習に至るまで、さまざまな AWS のサービスでインポートされたデータを分析できます。

この記事では、AWS Data Exchange 上の TruFactor Intelligence-as-a-Service データを紹介します。TruFactor の匿名化プラットフォームと独自の AI は、ワイヤレスキャリア、OEM、モバイルアプリから毎日 850 億以上の高品質の生信号を取り込み、フィルターにかけ、物理的およびデジタルの次元にわたる統合された「フィジタル」消費者グラフに変換します。TruFactor インテリジェンスは、アプリケーション対応で AWS アナリティクスまたは ML サービス内で使用でき、AWS で実行されているモデルやアプリケーションを強化します。追加の処理は必要ありません。一般的なユースケースは次のとおりです。

  • 消費者セグメンテーション – 米国のインターネット閲覧行動に関するウェブインテリジェンスは、興味、意見、価値観、デジタル行動、感情などの消費者の全体像を提供し、顧客と競合他社のセグメンテーションを伝えます。
  • 顧客獲得またはチャーンキャンペーン – インターネットの閲覧行動は、新しい見込み顧客の類似性の特性を特定できるだけでなく、競合他社のウェブサイトに切り替える可能性も特定できます。

このチュートリアルでは、TruFactor の Daily Mobile Web Session IndexDaily Demographics by Mobile Web Sessions データセットを使用します。これらはどちらも AWS Data Exchange コンソールから無料でサブスクライブできます。AWS Data Exchange で購入できる商用データセットもありますが、この記事ではトライアルデータセットを使用して、TruFactor のインテリジェンスで行える分析の幅と深さをご紹介します。

この TruFactor インテリジェンスは、約 3000 万人の一貫したユーザーから発信された、1 日あたりの通信事業者ネットワークおよびモバイルアプリからの 30 億を超えるレコードを集約し、それをセッションレベルの情報に抽出して、ユーザーがデジタルで何に興味を持っているかの全体像を示します。正確性、提供されるデータの幅、パネルの持続性により、消費者の統一ビューが得られます。これにより、洞察を取得したり、AWS の分析モデルやアプリケーションを強化したりできます。

これらの 2 つのデータセットには、小売、金融サービス、広告など、さまざまな分野にわたる幅広い用途があります。一般的なユースケースには、詳細な顧客セグメンテーションの作成 (たとえば、特定のウェブ HTTP ホストへの訪問に基づく消費者の完全な DNA マップ)、アフィニティプロパティの識別、アプリやサービスの需要の見積もりなどがあります。このインテリジェンスは、傾向と経時変化を特定するのにも理想的です。

ソリューションの概要

次の図は、ソリューションのアーキテクチャを示しています。

ワークフローは次のステップで構成されています。

  1. AWS Data Exchange からデータセットをサブスクライブし、Amazon S3 にエクスポートします
  2. AWS Glue クローラを実行して製品データをロードします
  3. Amazon Athena でクエリを実行します
  4. Amazon QuickSight でクエリとテーブルを視覚化します
  5. AWS Glue で ETL ジョブを実行します
  6. Amazon Forecast で時系列予測を作成します
  7. Amazon QuickSight で予測データを視覚化します

この記事では、さまざまなウェブサイト全体の人口分布と、ML を使用してウェブサイトの訪問を予測する方法について説明します。

チュートリアルの概要

このチュートリアルには、次の手順が含まれます。

  1. AWS Data Exchange コンソールから TruFactor データセットをサブスクライブし、データセットを Amazon S3 にエクスポートする
  2. AWS Glue クローラを使用して、製品データを AWS Glue データカタログにロードする
  3. SQL クエリに Amazon Athena を使用する
  4. Amazon QuickSight でクエリビューとテーブルを視覚化する
  5. AWS Glue ジョブを使用して、Amazon Forecast で予測するデータを抽出、変換、ロードする
  6. Amazon Forecast を使用して、変換されたデータの時系列予測を作成する
  7. Amazon QuickSight を使用して予測されたウェブ訪問データを視覚化する

このチュートリアルでは、TruFactor インテリジェンスでその他の処理や操作を実行する必要はありません。

データセット

この記事で使用されている TruFactor データセットは、Parquet 形式と Snappy 圧縮です。次のセクションでは、各データセットの詳細とスキーマについて説明します。

TruFactor Daily Mobile Web Session Index (US – Nationwide) — Trial

TruFactor Daily Mobile Web Session Index (US – Nationwide) — Trial データセットは、米国でのインターネットブラウジング行動のビューとして、HTTP ホストごとの集計情報を示します。TruFactor は、ユーザーのデバイスから発生したモバイルインターネットトラフィックを含む、モバイルキャリアから送信された高品質のパケットレイヤーデータからデータを生成します。TruFactor は、観測されたカウントから予測カウントを導出し、除外のためにフィルターにかけることで、匿名化されたユーザーを再識別できないようにしています。独自のアルゴリズムを使用して、米国国勢調査データから値を推定します。誤解を避けるために、このデータセットにはユーザーレベルのデータは含まれていません。

次のスクリーンショットは、HTTP ホスト、セッション時間、転送された MB、イベント数、セッション、ユーザー、日付ごとにモバイルウェブセッションデータセットのスキーマを示しています。

TruFactor Daily Demographics by Mobile Web Session (US) — Trial

TruFactor Daily Demographics by Mobile Web Session (US) — Trial データセットには、集計された人口統計が含まれています。これは、米国でのインターネットの閲覧行動のビューとして、HTTP ホストあたりのユーザーの予測分布を示しています。TruFactor は、ユーザーのデバイスから発生したモバイルインターネットトラフィックを含む、モバイルキャリアから送信された高品質のパケットレイヤーデータからデータを生成します。TruFactor は、観測されたカウントから分布を導出し、除外のためにフィルターにかけることで、匿名化されたユーザーを再識別できないようにします。独自のアルゴリズムを使用して、米国国勢調査データから値を推定します。人口統計には、性別、年齢、民族、所得が含まれます。

次のスクリーンショットは、ウェブセッションデータセット別の人口統計の部分スキーマを示しています。完全なスキーマには、HTTP ホスト、年齢層、性別、民族、所得、日付の属性が含まれます。

前提条件

このチュートリアルを正常に完了するには、次のリソースが必要です。

  • AWS アカウント。
  • AWS のコアサービスとコンセプトに関する知識。
  • アカウントに新しいリソースを投入する能力。一部のリソースは無料利用枠の対象外で、費用が発生する可能性があります。
  • TruFactor の Daily Mobile Web Session Index (US – Nationwide) – Trial and Daily Demographics by Mobile Web Session (US) – Trial データセットへのサブスクリプション。AWS Data Exchange のデータセットをサブスクライブする手順については、「AWS Data Exchange – データ製品の検索、サブスクライブ、および使用」を参照してください。

AWS Data Exchange、Amazon S3、AWS Glue、Amazon Athena、Amazon QuickSight を使用する

このセクションでは、上位 7 つの e コマースウェブサイトへの訪問者の主な人口統計を調べます。この情報は、どのユーザー層グループが最も頻繁にウェブサイトにアクセスしているかを理解する一助になり、広告をターゲティングして特定のユーザー層グループに対応するのにも役立ちます。AWS Glue クローラを使用して Amazon S3 のデータセットをクロールし、AWS Glue データカタログにデータを入力します。次にAmazon Athena を使用して AWS Glue データカタログにクエリを実行し、Amazon QuickSight を使用してクエリを視覚化します。

ステップ 1: AWS Data Exchange から Amazon S3 へのデータのエクスポート

TruFactor データセットのサブスクリプションを Amazon S3 バケットにエクスポートするには、次の手順を実行します。

  1. 作業アカウントに Amazon S3 バケットを作成します。デモのために、S3 バケットに trufactor-data-exchange-bucket という名前を付けました。
  2. S3 バケット内に Web_sessdemo_by_Web_sess という 2 つのフォルダを作成します。

この記事では、サンプルが 14 日間のトライアルデータセットを使用しています。AWS Data Exchange 上の TruFactor のウェブセッションデータの有料サブスクリプションには、6 か月分の履歴データが含まれており、毎日更新されます。

次のスクリーンショットは、S3 バケット内の 2 つのフォルダを示しています。これで、データセットをエクスポートする準備ができました。

  1. AWS Data Exchange コンソールの [Subscriptions] で、[TruFactor Daily Mobile Web Sessions Index (US – Nationwide) – Trial] を見つけます。
  2. [Revisions] で、最新の [Revision ID] を選択します。
  3. manifest.json ファイルを除くすべてのアセットを選択します。
  4. [Export to Amazon S3] を選択します。
  5. 開いたウィンドウで、製品データのエクスポート先の S3 バケットとフォルダを選択します。
    • すべてのアセットを S3 バケットの web_sess フォルダにエクスポートします。
  6. 前の手順を TruFactor Daily Demographics by Mobile Web Sessions (US) – Trial データセットに対して繰り返し、次の変更を加えます。
    • アセットを S3 バケットの demo_by_web_sess フォルダにエクスポートします。
  7. [Overview] で TruFactor データセットが正常にインポートされたことを確認してください。次のスクリーンショットは、データセットが日付ごとにフォルダに分割されていることを示しています。各フォルダには、日々のウェブセッションデータの Parquet ファイルが含まれています。

ステップ 2: AWS Glue データカタログに TruFactor データセットを入力する

TruFactor データセットを Amazon S3 バケットに正常にエクスポートしたので、AWS Glue クローラを作成して実行し、Amazon S3 バケットをクロールして AWS Glue データカタログにデータを入力します。次の手順を実行します。

  1. AWS Glue コンソールの [Data Catalog] で、[Crawlers] を選択します。
  2. [Add crawler] を選択します。
  3. [Crawler name] には、名前を入力します。たとえば、trufactor-data-exchange-crawler です。
  4. [Crawker source type] では、[Data stores] を選択します。
  5. [Next] をクリックします。
  6. [Choose a data store] では、[S3] を選択します。
  7. [Crawl data in] では、[Specified path in my account] を選択します。
  8. [Include path] では、webs_ess データセットフォルダのパスを入力します。クローラは次のパスを指します。s3://<trufactor-data-exchange-bucket>/web_sess
  9. [Next] をクリックします。
  10. [Yes] を選択して、別のデータストアを追加します。
  11. [Next] をクリックします。
  12. [Include path] では、demo_by_web_sess データセットフォルダのパスを入力します。クローラは、s3://<trufactor-data-exchange-bucket>/demo_by_web_sess のパスを指します。
  13. [Next] をクリックします。
  14. [Choose an IAM role] セクションで、[Create an IAM role] を選択します。これは、AWS Glue クローラと AWS Glue ジョブが Amazon S3 バケットとそのコンテンツにアクセスするために使用するロールです。
  15. IAM ロールでは、サフィックス demo-data-exchange を入力します。
  16. [Next] をクリックします。
  17. [schedule] セクションでは、[Frequency] をデフォルトの [Run on Demand] のままにしておきます。
  18. [Next] をクリックします。
  19. [Output] セクションで、[Add database] を選択します。
  20. データベースの名前を入力します。たとえば、trufactor-db です。
  21. [Next]、[Finish] の順に選択します。 このデータベースには、クローラが検出してデータを入力するテーブルが含まれています。これらのデータセットをさまざまなテーブルに分けて、データを結合して関連付けます。
  1. [Review all steps] セクションで、クローラ設定を確認し、[Finish] を選択します。
  2. [Data Catalog] で、[Crawlers] を選択します。
  3. 作成したクローラを選択します。
  4. [Run crawler] を選択します。AWS Glue クローラはデータソースをクロールし、AWS Glue データカタログにデータを入力します。このプロセスには数分かかる場合があります。クローラが完了すると、クローラの詳細に追加された 2 つのテーブルを確認できます。次のスクリーンショットを参照してください。 これで、新しいテーブルを表示できます。
  1. [Databases] で、[Tables] を選択します。
  2. データベースを選択します。
  3. [View the tables] を選択します。テーブル名は、AWS Glue クローラをポイントするために使用した Amazon S3 フォルダディレクトリに対応しています。次のスクリーンショットを参照してください。

ステップ 3: Amazon Athena を使用してデータをクエリする

AWS Glue データカタログに TruFactor の Mobile Web Session and Demographics データを入力した後、Amazon Athena を使用して SQL クエリを実行し、視覚化のためのビューを作成できます。次の手順を実行します。

  1. Amazon Athena コンソールで、[Query Editor] を選択します。
  2. [Database] ドロップダウンメニューで、作成したデータベースを選択します。
  3. Amazon Athena でテーブルの 1 つをプレビューするには、[Preview table] を選択します。
    [Results] セクションに、web_sess テーブルの 10 レコードが表示されます。次のスクリーンショットを参照してください。この次のステップでは、e コマース HTTP ホストのグループ全体の Web Session Index and Demographics データのビューを作成するクエリを実行します。これは、年齢と性別、ユーザー数、転送された MB、および注文したセッション数で分類されたユーザーの割合を日付順に分類しています。
  4. Amazon Athena で次の SQL クエリを実行します。
    CREATE OR REPLACE VIEW e_commerce_web_sess_data AS 
    SELECT
      "date_parse"("a"."partition_0", '%Y%m%d') "date",
      "a"."http_host",
      "a"."users",
      "a"."mb_transferred",
      "a"."number_of_sessions",
      "b"."18_to_25",
      "b"."26_to_35",
      "b"."36_to_45",
      "b"."46_to_55",
      "b"."56_to_65",
      "b"."66_to_75",
      "b"."76_plus",
      "b"."male",
      "b"."female"
    FROM  
      ((
       SELECT
         "partition_0",
         "http_host",
         "users",
         "mb_transferred",
         "number_of_sessions"
       FROM
         "trufactor-db"."web_sess"
       WHERE ("http_host" IN ('www.amazon.com', 'www.walmart.com', 'www.ebay.com', 'www.aliexpress.com', 'www.etsy.com', 'www.rakuten.com', 'www.craigslist.com'))
    )  a
    LEFT JOIN (
       SELECT
         "http_host" "http_host_2",
         "partition_0" "partition_2",
         "age_ranges"."18_to_25",
         "age_ranges"."26_to_35",
         "age_ranges"."36_to_45",
         "age_ranges"."46_to_55",
         "age_ranges"."56_to_65",
         "age_ranges"."66_to_75",
         "age_ranges"."76_plus",
         "genders"."male",
         "genders"."female"
       FROM
         "trufactor-db"."demo_by_web_sess"
       WHERE ("http_host" IN ('www.amazon.com', 'www.walmart.com', 'www.ebay.com', 'www.aliexpress.com', 'www.etsy.com', 'www.rakuten.com', 'www.craigslist.com'))
    )  b ON (("a"."http_host" = "b"."http_host_2") AND ("a"."partition_0" = "b"."partition_2")))
    ORDER BY "date" ASC
  5. ビューを作成したら、上記の手順を繰り返してプレビューすることで、テーブルをプレビューできます。次のスクリーンショットは、結果を示しています。これには、ユーザー数、年齢層と性別によるユーザーの割合、および日付ごとに一覧表示された e コマースホストのリストが含まれています。

ステップ 4: Amazon QuickSight で視覚化する

Amazon Athena でデータセットをクエリした後、Amazon QuickSight を使用して結果を視覚化できます。最初に、Amazon QuickSight に TruFactor データセットを保持する Amazon S3 バケットへのアクセスを許可する必要があります。これは、Amazon QuickSight コンソールの Manage QuickSight 設定で行うことができます。Amazon S3 バケットへのアクセスを許可したら、Amazon QuickSight を使用してテーブルとクエリを視覚化します。次の手順を実行します。

  1. Amazon QuickSight コンソールで、[New Analysis] を選択します。
  2. [New data set] を選択します。
  3. データソースとして [Athena] を選択します。
  4. [Data source name] には、trufactor-data-exchange-source と入力します。
  5. ドロップダウンメニューから、作成したデータベースとビューを選択します。
  6. [Directly query your data] を選択します。
  7. [Visualize] を選択します。TruFactor インテリジェンスはアプリケーションに対応しているため、Amazon Athena を使用してクエリを実行し、Amazon QuickSight を使用して視覚化することで、すぐに洞察を得ることができます。この記事には、2019 年 10 月の最初の 2 週間のデータセットの視覚化データが含まれています。次のグラフは、さまざまな HTTP ホスト上のユーザー数を視覚化しています。 次の円グラフは、HTTP ホストを年齢層でさらにフィルタリングします。 次の棒グラフは、年齢層でユーザーを分けた別の視覚化データを示しています。所得、民族、性別といった他のフィールドを追加できます。

AWS Glue ジョブと Amazon Forecast を実行する

このセクションでは、AWS Glue ジョブを使用して、Amazon Forecast で予測するためにデータセットをクエリおよびエクスポートする方法について説明します。このチュートリアルでは、ユーザーの訪問によってランク付けされた上位 50 の HTTP ホストにわたる、ユーザーの 14 日間の訪問数を調べます。そこから、今後 3 日間のこれらの HTTP ホストへのユーザーの訪問数を予測します。

ステップ 1: AWS Glue ジョブを作成して実行する

AWS Glue ジョブを作成して実行するには、次の手順を実行します。

  1. AWS Glue コンソールの [ETL] で、[Jobs] を選択します。
  2. [Add job] を選択します。
  3. [Name] には、AWS Glue ジョブの名前を入力します。たとえば、demo-glue-job などです。
  4. [Type] と [Glue version] では、デフォルト値を保持します。
  5. [This job runs] には、[A new script to be authored by you] を選択します。
  6. [Security configuration, script libraries, and job parameters (optional)] セクションでは、Maximum capacity のクラスターサイズを 2 に設定します。これにより、AWS Glue ジョブの実行コストが削減されます。デフォルトでは、クラスターサイズは 10 データ処理ユニット (DPU) に設定されています。
  7. [Next] をクリックします。
  8. [Connections] セクションでは、デフォルト値のままにします。
  9. [Save job and edit script] を選択します。
  10. スクリプトセクションに次のコードを入力し、42 行目の YOUR_BUCKET_NAME をご自身のバケット名に置き換えます。
    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.dynamicframe import DynamicFrame
    from awsglue.job import Job
    from pyspark.sql import SparkSession
    from pyspark.sql.functions import udf
    from pyspark.sql.types import StringType
    
    ## @params: [JOB_NAME]
    args = getResolvedOptions(sys.argv, ['JOB_NAME'])
    
    sc = SparkContext()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)
    job.init(args['JOB_NAME'], args)
    
    db_name = "trufactor-db"
    tbl_name = "web_sess"
    
    web_sess_dyf = glueContext.create_dynamic_frame.from_catalog(database = db_name, table_name = tbl_name, transformation_ctx = "web_sess_dyf")
    web_sess_df = web_sess_dyf.toDF()
    web_sess_df.createOrReplaceTempView("webSessionTable")
    web_sess_sql_df = spark.sql("""
    SELECT to_date(partition_0, 'yyyyMMdd') AS date,
             http_host,
             users
    FROM 
        (SELECT partition_0,
             http_host,
             users,
             row_number()
            OVER ( PARTITION By partition_0
        ORDER BY users DESC ) AS rn
        FROM webSessionTable )
    WHERE rn<=50
    ORDER BY date""")
    
    web_sess_sql_df.coalesce(1).write.format("csv").option("header","false").save("s3://YOUR_BUCKET_NAME/amazon_forecast_demo/dataset/sampleset")
    job.commit()

    このコードは、10 月の前半のユーザーの訪問によってランク付けされた上位 50 の HTTP ホストをクエリし、ユーザー、日付、および HTTP ホストの列を返します。クエリ結果は、CSV 形式で Amazon S3 バケットにアップロードされます (Amazon Forecast を使用するには、CSV 形式のファイルが必要です)。

  11. [Save] を選択して AWS Glue ジョブ画面を閉じます。AWS Glue ジョブを実行する前に、AWS Glue に関連付けられた IAM ロールを変更する必要があります。現在、IAM ロールには、以前に指定したディレクトリでオブジェクトを取得および配置する権限しかありません。IAM ポリシーを更新して、Amazon S3 バケットのすべてのサブディレクトリでオブジェクトを取得および配置する権限を許可する必要があります。
  12. IAM コンソールで、このチュートリアルに使用したロール (AWSGlueServiceRole-demo-data-exchange) を選択します。
  13. IAM ロールの [Summary] セクションの [Permissions] タブで、[Managed policy] に関連付けられている IAM ポリシーを選択します。
  14. [Edit policy] を選択します。
  15. ビューを [Visual editor] から [JSON] に変更します。
  16. この JSON オブジェクト内の [Resource] で、値のリストに別のリソースを追加します。次のコードは、更新された IAM ポリシーです。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::trufactor-data-exchange-bucket/web_sess*",
                    "arn:aws:s3:::trufactor-data-exchange-bucket/demo_by_web_sess*",
                    "arn:aws:s3:::trufactor-data-exchange-bucket/*"
                ]
            }
        ]
    }
  17. [Review policy] と [Save changes] を選択します。
  18. AWS Glue コンソールの [ETL] で、[Jobs] を選択します。以前に作成したジョブを選択します。
  19. [Action] ドロップダウンメニューから、[Run job] を選択します。[History] タブで、ステータスが [Succeeded] に変化するタイミングを確認できます。次のスクリーンショットを参照してください。このジョブは完了するまでに 15〜20 分かかる場合があります。

ステップ 2: データセットグループの作成、予測子のトレーニング、Amazon Forecast での予測の作成

データセットグループを作成し、予測子をトレーニングし、予測を作成するには、次の手順を実行します。

  1. Amazon Forecast コンソールで、[View dataset groups] を選択します。
  2. [Create dataset group] を選択します。
  3. [Dataset group name] には、名前を入力します。たとえば、users_visitation_sample_dataset_group などです。
  4. [Forecasting domain] では、[Web traffic] を選択します。
  5. [Next] をクリックします。
  6. [Create target time series dataset] ページの [Dataset name] に、データセットの名前を入力します。たとえば、users_visitation_sample_dataset などです。
  7. [Frequency of your data] では、[1 day] を選択します。
  8. [Data schema] では、次のコードでデータスキーマ JSON オブジェクトを更新します。
    {
      "Attributes":[
        {
          "AttributeName": "timestamp",
          "AttributeType": "timestamp"
        },
        {
          "AttributeName": "item_id",
          "AttributeType": "string"
        },
        {
          "AttributeName": "value",
          "AttributeType": "float"
        }
      ]
    }
  9. [Next] をクリックします。
  10. [Import target time series data] ページで、[Dataset import name] にデータセット名を入力します。たとえば、users_visitation_sample_dataset_import などです。
  11. [Timestamp format] には、yyyy-MM-dd を入力します。
  12. [IAM Role] では、新しいロールを作成し、このデモに使用している S3 バケットへの Amazon Forecast アクセスを許可します。
  13. [Data Location] では、AWS Glue ジョブの後に CSV ファイルをエクスポートした次の S3 パスを使用します。s3://<trufactor-data-exchange-bucket>/amazon_forecast_demo/dataset/sampleset
  14. インポート対象の時系列データの設定を確認し、[Start import] を選択します。 データのインポートプロセスには、約 10 分かかることがあります。ステータスが [Active] に変わったら、予測変数のトレーニングを開始できます。
  1. [Dashboard] ページで、[Predictor training] の横にある [Start] を選択します。
  2. [Train predictor] ページで、[Predictor name] に予測子の名前を入力します。たとえば、users_visitation_sample_dataset_predictor などです。
  3. [Forecast horizon] では、[3] を選択します。
  4. [Forecast frequency] では、[day] を選択します。
  5. [Algorithm selection] では、[Manual] を選択します。他のアルゴリズムオプションである AutoML を使用すると、Amazon Forecast が事前定義された目的関数に基づいて適切なアルゴリズムを選択できるようになります。これは、このチュートリアルでは必要ありません。
  6. [Algorithm] では、[Deep_AR_Plus] を選択します (ディープラーニングを使用して、50 の HTTP ホスト全体のユーザーの訪問数を予測します)。
  7. 他のすべてのオプションはデフォルト値のままにします。
  8. 設定を確認し、[Train Predictor] を選択します。予測子のトレーニングプロセスには、20〜30 分かかる場合があります。トレーニングが完了すると、ステータスが [Active] に変わります。予測子 (ML モデル) の精度を評価するために、Amazon Forecast は入力時系列データを trainingtest の2 つのデータセットに分割します。このプロセスは、履歴データの予測モデルをテストし、バックテストと呼ばれます。入力時系列データを分割すると、時系列データにとって重要なデータの順序が維持されます。データセットをトレーニングした後、Amazon Forecast は二乗平均平方根誤差 (RSME) と加重変位値損失を計算して、予測子がどの程度うまく機能したかを判断します。バックテストと予測指標の詳細については、「予測精度の評価」を参照してください。予測子のトレーニングが終了したら、予測を作成できます。
  9. [Dashboard] ページの [Generate forecasts] で、[Start] を選択します。
  10. [Forecast name] には、予測名を入力します。たとえば、users_visitation_sample_forecast です。
  11. [Predictor] では、トレーニングされた予測子を選択します。
  12. [Forecast types] では、0.01〜0.99 の任意の値と平均を入力できます。これらは、元の需要を満たす確率です。この記事は、.50、.90、.99、mean と入力します。
  13. [Create a forecast] を選択します。予測の作成プロセスには 15〜20 分かかります。
  14. 予測が完了したら、[Forecasts] を選択します。
    単一の予測が表示されます。次のスクリーンショットを参照してください。
    Amazon QuickSight で視覚化するために、生成された予測を既存の Amazon S3 バケット内の新しいフォルダにエクスポートできるようになりました。
  1. 新しく生成された予測を選択します。
  2. [Exports] で、[Create forecast export] を選択します。
  3. [Export name] には、エクスポートの名前を入力します。たとえば、users_visitation_sample_forecast_export などです。
  4. [Generated forecast] では、[users_visitation_sample_forecast] を選択します。
  5. [IAM Role] では、以前に作成したロールを選択します。
  6. [S3 forecast export location] には、予測を保存する S3 パスを入力します。s3://<trufactor-data-exchange-bucket>/amazon_forecast_demo/forecasts/sampleset
  7. [Create forecast export] を選択します。 エクスポートプロセスには最大 5 分かかります。または、Amazon Forecast コンソールまたはクエリ API を介して、50 個の HTTP ホストのユーザー訪問予測を直接視覚化することもできます。

ステップ 3: Amazon Athena を使用してビューをクエリし、予測ファイルをダウンロードする

ユーザーの訪問予測データを視覚化する前に、過去 14 日間のユーザーの訪問数によってランク付けされた上位 50 の HTTP ホストのビューを Amazon Athena で作成します。次の手順を実行します。

  1. Amazon Athena で次のクエリを実行します。
    CREATE OR REPLACE VIEW "top_50_users" AS
    SELECT date_format(date_parse(partition_0,
             '%Y%m%d'),'%Y-%m-%d') AS "date", http_host, users
    FROM 
        (SELECT partition_0,
             http_host,
             users,
             row_number()
            OVER (PARTITION By partition_0
        ORDER BY  users DESC ) AS rn
        FROM "trufactor-db"."web_sess")
    WHERE rn<=50
    ORDER BY date

    このコードは、日付でソートされたユーザーの訪問によってランク付けされた上位 50 の HTTP ホストをクエリします。

  2. Amazon S3 コンソールで、ファイルを保持する S3 バケットとディレクトリに移動します。s3://<trufactor-data-exchange-bucket>/amazon_forecast_demo/forecasts/sampleset。次のスクリーンショットは、フォルダ内の 3 つの異なるファイルを示しています。
  1. CSV ファイルをダウンロードします。

ステップ 4: Amazon QuickSight で視覚化する

Amazon QuickSight でデータを視覚化するには、次の手順を実行します。

  1. Amazon QuickSight コンソールで、[Manage data] を選択します。
  2. [New data set] を選択します。
  3. [Upload a file] を選択します。
  4. ダウンロードした CSV ファイルをアップロードします。
  5. [Confirm file upload settings] ページで、[Next] をクリックします。
  6. [Visualize] を選択します。
  7. Amazon QuickSight コンソールに戻り、[Manage data] を選択します。
  8. 前にクエリした上位 50 件の HTTP ホストビューで [New data set] を選択します。
  9. [Create a Data set] ページで、先ほど作成したデータソース (trufactor-data-exchange-source) を見つけます。
  10. ドロップダウンリストから、作成したデータベースとビューを選択します。
  11. [Directly query your data] を選択します。
  12. [Visualize] を選択します。
  13. 新しい Amazon QuickSight 分析ページで、[Data set] の横にある鉛筆アイコンを選択します。
  14. [Add data set] を選択します。
  15. アップロードした CSV ファイルを選択します。

これで、視覚化する複数のデータセットを持つ単一の Amazon QuickSight 分析ができました。

次のグラフは、10 月の最初の 2 週間の、50 の HTTP ホスト全体のユーザーの訪問数の履歴データと、次の 3 日間のユーザーの訪問数の平均予測を示しています。

次のグラフは、www.google.com の履歴データと予測 P50、P90、および P99 分位値を示しています。

Amazon Forecast を使用すると、独自の ML モデルを一から作成しなくても、機械学習を簡単に開始できます。この情報を使用して、来週のウェブトラフィックを予測できます。これにより、リソースとアプリケーションを適宜スケーリングできます。

クリーンアップ

将来請求が発生しないようにするには、このチュートリアルで作成した次のリソースを削除します。

  • Amazon S3 バケット trufactor-data-exchange-bucket
  • AWS Glue クローラ trufactor-data-exchange-crawler
  • AWS Glue ジョブ demo-glue-job
  • AWS IAM ロール AWSGlueServiceRole-demo-data-exchange
  • AWS Glue データベース trufactor-db
  • Amazon QuickSight デモデータセットと分析
  • コンソールを介した users_visitation_sample_dataset_group の次の Amazon Forecast リソース (この順序で):
    • Forecasts にある既存の予測
    • Predictors にある既存の予測子
    • Datasets にある既存のデータセット

まとめ

このチュートリアルでは、データセットを AWS Data Exchange から Amazon S3 にインポートし、AWS Glue を使用してデータでクローラと ETL ジョブを実行し、Amazon Athena で SQL クエリを実行し、Amazon Forecast でクエリされたデータの時系列予測を作成し、Amazon QuickSight を使用して、クエリされ予測されたデータを視覚化する方法を詳しく説明しました。

この記事では、AWS Data Exchange のローンチパートナーの 1 社である TruFactor の Intelligence-as-a-Service を使用して、このチュートリアルを補強しました。AWS Data Exchange の TruFactor インテリジェンスは、Amazon S3 に直接ロードし、高度な AWS のサービスを階層化することが簡単であることをはっきり示しました。

TruFactor と AWS Data Exchange の詳細については、TruFactor ウェブサイト上の TruFactor on AWS Data Exchange を参照してください。AWS Data Exchange で TruFactor Intelligence を直接サブスクライブするか、TruFactor と直接連携して、匿名化された消費者インテリジェンスのより大きな製品ポートフォリオから適切な製品を特定できます。


著者について

Jay Park は AWS のソリューションアーキテクトです。

 

 

 

 

Ariana Rahgozar は AWS のソリューションアーキテクトです。