AWS Redshift 活用術 ③ テーブル作成/モデル作成/推論

はじめに

こちらの記事でAmazon Redshift MLの機械学習モデル構築のためのインフラ関連などの準備をしました。
本記事では、実際に機械学習モデルをAmazon RedshiftMLで作成したいと思います。

RedshiftMLについて概要を知りたい方はこちら:

ローデータテーブル作成

以下 SQL クライアントでクエリをたたいています。
モデル作成の権限をユーザーに付与します。

[crayon-633194bcc74c4615737679/]

作成するデータベースやモデルを保持するスキーマを作成します。

[crayon-633194bcc74cc047694840/]

ローデータ用のテーブルを作成します。

[crayon-633194bcc74cf710403813/]

S3 から CSV データをインポートします。CSV data S3 URI と iam-role-arn はリソース作成時に拾ったパラメータです。

[crayon-633194bcc74d1273437073/]

ローデータテーブルのプレビュー

[crayon-633194bcc74d3229752596/]

out
image.png

学習用テーブル作成

モデル学習しやすいようにテーブルを作成します。

  • segment (受け取ったキャンペーンメールの種類。Mens E-mail, Womens E-mail, No E-mail) を 1/0 で表現 (w 列)
  • Spend (過去2週間の購入金額) を目的変数として利用 (y 列)
  • 通し番号を unique_id として付与
  • unique_id ベースで TRAIN データと TEST データに分割 (assigm 列)
[crayon-633194bcc74d6658187977/]

学習用テーブルのプレビュー

[crayon-633194bcc74d8521252604/]

out
image.png

モデル構築

TRAIN データに割り振ったユーザーから (assign = 'TRAIN')、男性向けメールを送るを送ったユーザーを抽出し (w = 1) 、指標値を MSE とした回帰モデルを作成します。

  • MSE (平均二乗誤差)
    • 成果位地と予測値の差を事情し、平均値をとったもの
    • 実際と予測値の誤差が大きいほどモデルの精度が悪いと判断
    • 外れ値にも過剰適合(=過学習)してしまう可能性も

今回のケースだとこのようになります。

[crayon-633194bcc74da896367551/]

以下クエリでモデルの概要を取得できます。

[crayon-633194bcc74dc930975558/]

今回のデータセットではモデル構築の完了に一時間ほど要しました。
完了次第、SageMaker > ハイパーパラメータの調整ジョブからジョブの実行にかかった時間などを見ることができます。
未完了の状態で推論するクエリを投げてもモデルの準備ができていないとエラーが返ってきます。
のんびり待ちましょう。

2021-03-12_02h44_34.png

推論実行

推論結果の参照を Redshift の別ユーザーが行う場合は、権限を付与します。

[crayon-633194bcc74e1516909148/]

以下で Redshift 経由で推論結果を取得できます。uplift_treatment の数値が高いユーザーに対して優先的に販促キャンペーンを打てそうです。

[crayon-633194bcc74e5845225590/]

out
image.png

CREATE MODEL構文

AUTO_ML を利用する場合

上記では AUTOML 機能を用いました。 (AUTO ON)
もっともシンプルに実装する場合の基本構文は以下の通りです。

[crayon-633194bcc74e9586471068/]

備考

メトリクス

機械学習モデルの品質を測定するための指標として5種から選択できます。
データセットや予測対象の属性、予測結果の用途に応じてどのメトリクスが適当かどうか変わってきます。

  • Accuracy
    • 他項分類のデフォルトメトリクス
  • MSE
    • 回帰のデフォルトメトリクス
    • 利用されるデータに外れ値が多い場合精度が低くなりやすいので注意
  • F1
    • 二項分類のデフォルト
    • 適合率と再現率を等しく重視する
    • 回帰でMSEだと精度が上がりにくい場合にも
  • F1macro
    • 他項分類で利用
    • F1 スコアの他項分類版
  • AUC
    • 確率を返すロジスティクス回帰などの二項分類で利用

ハイパーパラメータ調整ジョブの実行時間

モデル学習がいつ終わるか把握したいものですが、SQL クライアントからはこの情報をパッシブに取得できません。以下迂回策です。

CloudWatch を利用

先述の通り、RedshiftML の学習データは指定の S3 バケットに保存され、学習完了時に削除されます。これをトリガーにして CloudWatch で通知を受け取るように設定します。
なお、S3_GARBAGE_COLLECT オプションを明示する際は ON にする必要があります (デフォルトはON)

CloudWatch イベント ルールの削除または無効化 - Amazon CloudWatch Events

https://docs.aws.amazon.com

MAX_RUNTIME を設定

トレーニングの最大時間を指定するオプションです。
デフォルト値は 90分 (5,400秒) で、データセットが小さい場合は指定値よりも早く完了します。
ジョブ完了通知ではありませんが、短時間でトライアンドエラーして進めたい時に使えそうです。

参考クエリ

使うクエリを乗せておきます。

[crayon-633194bcc74ec229943499/]

まとめ

SQL だけで機械学習モデルのデプロイ、Redshift 経由で推論結果の取得までできるのは便利だと思いました。
バックエンドでは SageMaker Autopilot が動作しているので、SageMaker のコンソールからモデルをデプロイすればエンドポイント経由での推論も可能です。
そうなればドリフト値を SageMaker Model Monitor でトラッキング出来るので MLOPS 環境の構築のハードルも下がるのではないでしょうか?
Redshift上にある顧客データを活用できる便利なサービスなので、Redshift ユーザーは是非触ってみてください。

参考リンク

モデリング部分のSQLスクリプトはこちらの記事からお借りしたものをベースにしています

Redshift MLでUplift Modeling分析|Dentsu Digital Tech Blog|note

https://note.com

Amazon Redshift ML の紹介記事です。

Create, train, and deploy machine learning models in Amazon Redshift u...

https://aws.amazon.com

公式ドキュメント

Getting started with Amazon Redshift - Amazon Redshift

https://docs.aws.amazon.com

Demo of Preview of Amazon Redshift ML

https://youtu.be

AutoMLJobObjective - Amazon SageMaker Service

https://docs.aws.amazon.com


AWS Redshift 活用術 ② インフラ構築

はじめに

RedshiftMLを実際に触ってみた手順を書きたいと思います。
大まかな手順は、

  1. サンプルデータをAWS Redshiftにインポート
  2. Amazon RedshiftMLで機械学習モデルを構築
  3. 機械学習の結果を見る

RedshiftMLで機械学習モデルを構築していきたいと思います。
RedshiftMLって何?という方はAWS Redshift 活用術 ①をご覧ください。

この記事ではAWS環境の構築、後半では機械学習モデルを構築するまでの手順をまとめました。

RedshiftML第3回 機械学習モデル構築の記事URL:

メインターゲット

  • SQLをメインで使用しているデータベース開発者、アナリスト
  • Amazon Redshiftを普段から利用している方

利用するAWSサービス

Amazon Sagemaker Autopilot

  • 自動機械学習(AutoML)のタスクを自動化
  • 最適な機械学習アルゴリズムを自動的に選択してくれる
  • モデルのトレーニング、チューニングが簡単にできる
  • 初期費用¥0からスタートできる
  • 回帰、二項分類、複数クラスの分類をサポートしてくれる

詳しくはこのページをご覧ください。
image.png
Amazon Redshift ML

  • SQLを使ってRedshift内のデータから機械学習モデルを構築・デプロイ
  • 予測結果もSQLを叩いて取得
  • Redshift ML のバックエンドでは Amazon Sagemaker Autopilot が動いている
Terms and concepts for Amazon Redshift ML - Amazon Redshift

https://docs.aws.amazon.com

image.png

データセット

本記事ではこちらのウェブサイトの情報とデータを利用します。
イーコマースのログデータが基になっているCSVデータです。

The MineThatData E-Mail Analytics And Data Mining Challenge

https://blog.minethatdata.com

データセットの詳細

  • 顧客をランダムに3つに分類して、販促キャンペーンのメールを配信します。
    • メンズ商品のキャンペーン
    • レディース商品のキャンペーン
    • 配信なし
  • ウェブサイトの訪問履歴・購入金額をトラッキング
  • トラッキングの期間はキャンペーンメール配信から2週間

目的
やみくもにキャンペーンをするのは販促費などの無駄になります。よって、

  • 普段は商品購入意欲が高くない
  • キャンペーンを行うと商品購入する可能性が大幅に上がる

といったユーザーに絞って販促費を投入できればROI(Return On Investment、その投資でどれだけ利益が上げられたかを知る指標)が最大化できるはずです。

ROI最大化の手法の一つに、Uplift Modeling というものがあります。

Python で Uplift modeling - Qiita

https://qiita.com

本記事では Uplift Modeling のロジックへの組み込みを想定し、特定のキャンペーンを打つべきユーザーを予測する機械学習モデルを作成します。
モデル作成には2020年12月にパブリックプレビューになった Amazon Redshift ML を利用します。

データセット

  • 過去12か月以内に物品を購入した64,000人の顧客情報
  • ダウンロードURL
    • Windows であれば、リンクを右クリック > リンク先を保存

スキーマ

カラム名 データ型 概要
Recency int4 前回の購入から経過した月数
History_Segment varchar(256) 過去1年間の購入金額の区分
History float (8) 過去1年間の購入金額
Mens boolean 過去に男性向け製品を購入したかどうか
Womens boolean 過去に女性向け製品を購入したかどうか
Zip_Code varchar(256) 顧客の居住カテゴリ。Urban, Sunurban, Rural
Newbie boolean 過去1年で新規顧客になったかどうか
Channel varchar(256) 過去に顧客が購買した経路
Segment varchar(256) 受け取ったキャンペーンメールの種類。Mens E-mail, Womens E-mail, No E-mail
Visit boolean 過去2週間にウェブサイトを訪問したかどうか
Conversion boolean 過去2週間に購買に至ったかどうか
Spend float (8) 過去2週間の購入金額

AWS環境構築

IAMロール

Redshift ML 経由で SageMaker Autopilot を操作できるようにするため、対応する権限を設定します。

IAM > ロール > ロールの作成
image.png
AWS サービス > Redshift と進み、
image.png
画面下部の Reedshift - Customiable を選択
image.png
ロール名を任意で設定、ロールの作成をクリック
image.png
作成したロールを開き、アクセス権限のタブで

  • AmazonS3ReadOnlyAccess(Amazon S3 バケットに読み取り専用アクセスを付与します)
  • AmazonSageMakerFullAccess(Amazon Sagemakerのフルアクセル権限をふよします)

のポリシーをアタッチします。
上記のポリシーは実行権限が大きいので、本番デプロイ時には以下の公式ドキュメントをご覧いただき、権限を絞ることをおすすめします。

Amazon S3 からデータを読み込むための Amazon ML アクセス許可の取得 - Amazon Machine Learning

https://docs.aws.amazon.com

Amazon S3 に予測を出力するために Amazon ML のアクセス許可を得る - Amazon Machine Learning

https://docs.aws.amazon.com

信頼関係のタブで、redshift と sagemaker を追加
image.png

TrustedEntity

[crayon-633194bcc80f5387459568/]

これでRedshiftとSagemakerのサービスを信頼します。
最後に iam role arn をコピーします。(Redshiftクラスタの構築で必要になります)
image.png

S3

今回はシンプルな構築にするため、以下の条件を満たす単一S3バケットを構築します。

  • Redshift テーブル用データの保存
  • Redshiftml Amazon S3 からデータを読み込むための Amazon ML アクセス許可の取得
  • Amazon S3 に予測を出力するために Amazon ML のアクセス許可を得る

S3バケットをデフォルト値で構築、S3 ARN をコピーします。(こちらもRedshiftクラスタの構築で必要になります)
image.png
アクセス許可 > バケットポリシーと進み、Amazon Redshift と SageMaker Autopilot が利用できるように以下の通りバケットポリシーを変更します。
先ほど作成したロールをプリンシパルに設定します。

[crayon-633194bcc80fe197043849/]

Redshiftクラスタ

Redshiftクラスタの構築に iam role arn と S3 ARN が必要です。

設定 > サブネットグループと進み、任意で名称を設定、VPC のすべてのサブネットを追加、クラスターサブネットグループの作成をクリックします。
image.png
クラスタ > クラスタの作成
image.png
クラスタ識別子を任意で入力。dc2.large が最も安価なクラスタだが Redshift ML は対応していないので注意してください。 (2021年5月11日時点)
image.png
Database Name、Port、Master User Name はデフォルト値でOKです。
Password を任意で入力します。Master USer Name と Password を控えておいてください。(Redshiftにデータセットをアップロードするときに必要になります)
image.png
クラスタのアクセス許可から先ほど作成した IAM ロールの iam role arn を選択、「IAM ロールを追加」を選択します。
image.png
今回ローカルの SQL クライアントからクエリをたたく。追加設定のデフォルトを使用を解除し、ネットワークとセキュリティの項目で、パブリックアクセスの有効化にチェックを入れます。
image.png
メンテナンスタブ > メンテナンストラックでプレビューの sql_preview を選択。ここまで設定が完了したらクラスタの作成へと進みます。
image.png
デプロイが完了したら、JDBC URL を控えておきます。
image.png

VPC

Redshift クラスタをインターネット経由で操作できるよう、ネットワークを構成します。
先ほど作成したクラスタのプロパティから、VPC セキュリティグループと進みます。
image.png
デフォルトだと下記の状態。インバウンドルール > インバウンドルールを編集
image.png
ルールの追加 > タイプを Redshift に選択 > マイIP と進み、ルールを保存をクリック。この作業でローカル環境から Redshift への接続が通るようになる。
image.png
アウトバウンドルールが以下の状態になっていることを確認します。
image.png
備考:Redshift クラスタの VPC サブネットのルートテーブルで、送信先 0.0.0.0/0 が blackhole になっている場合、SQL クライアントから接続する際、Connection Timeout が発生する。ルートの編集と進み、該当設定を再設定する
image.png

【AWS】ルートテーブル(route table)のステータスが blackhole の状態になる原因【VPC】

https://go-journey.club

IGW(インターネットゲートウェイ)

インターネットに接続するためのゲートウェイがない場合は以下手順で構築します。
Redshift クラスタのプロパティから VPC と進み、別タブで開いておく
image.png
VPC ダッシュボード > インターネットゲートウェイ > インターネットゲートウェイの作成
image.png
任意でゲートウェイの名称を入力、作成をクリックします。
image.png
作成したインターネットゲートウェイを Redshift クラスタが稼働しているVPCにアタッチします。
image.png

データセット アップロード

ダウンロードした CSV データを S3 にアップロード、S3 URI をコピーしておきます。
image.png
今回は SQL クライアントに DBeaver を用いる。

DBeaver Community | Free Universal Database Tool

https://dbeaver.io

DBeaber をインストールしたら、新しい接続を選択、Redshift へと進む
image.png
JDBC ホスト、Master USer Name 、 Password を入力し、終了をクリックします。
JDBC ホスト名は、JDBC URL から dbc:redshift:// と :5439/devを除いた文字列となるので注意!
image.png

まとめ

次の記事はこちらになります。
次の記事でRedshiftMLモデルの構築をやっていきたいと思います。

参考リンク

Amazon RedshiftMLの紹介記事です。

Create, train, and deploy machine learning models in Amazon Redshift u...

https://aws.amazon.com

公式ドキュメント

Amazon Redshift のプライベートクラスターをパブリックアクセス可能にする

https://aws.amazon.com

Amazon S3 からデータを読み込むための Amazon ML アクセス許可の取得 - Amazon Machine Learning

https://docs.aws.amazon.com


データ分析プロジェクトで考えておきたいポイント ① ツール選定の指針

はじめに

データ分析プロジェクトを進めていくうえでまず考えたいことを整理します。
ビジネスドメインのメンバーにも伝わるよう、できるだけ技術用語は使わないよう留意しました。

やっぱり銀の弾丸はない

最初から身もふたもないですが、やっぱり銀の弾丸(=これをやれば万事解決する)はありません。
AI モデルはあくまで「ツール」であり、「目的」を設定して価値を見出すのは「ユーザー」です。
とはいえある程度は指針が欲しいので、まずはここを抑えるべきというポイントを2点あげます。

ツール選定の指針

AI 関連ツールはざっくりと以下3種に大別できます。

  • 特化アプリケーション組み込み型
    • 特定の目的のために開発されたAIを搭載したアプリケーション
    • デファクトスタンダードになっているアプリは除く
      • 利用者が段違いに多くどんどん平準化/最適化されていく
      • ex. Office365、Google Workspace
  • API 連携型
    • いわゆる「マネージドAI」と呼ばれるクラウド型のサービス
    • API で連携してモデルの結果を取得
    • 従量課金型が多い
    • 自社で管理しているアプリケーションがある場合、すぐに組み込み可能
  • 自社開発
    • データ分析基盤を利用し自社でモデルを開発
    • プラットフォームによっては従量課金型
    • 各社基盤を用意していて、データ回りのサービスとの連携に優れる

それぞれのツールにメリット/デメリットがあります。
要件定義の重要性はどのツールを利用しても変わりません

AIツール種別 モデル
実装難易度
アーキテクチャ設計
/システム導入難易度
ナレッジの蓄積 汎用性
(ex.モデルを別のシステムから利用)
拡張性
(ex. 外部システムと連携)
#1 特化アプリケーション組み込み型 - - ベンダーに依存 ベンダーに依存
#2 API 連携型 (マネージドAI利用) - ★★ ★★ ★★★ 周辺アーキテクチャの拡張性次第
#3 自社開発 (データ分析基盤利用) ★★★ ★★★ ★★★ ★★ 実装者の能力とアーキテクチャの拡張性次第

個人的に重要視している点は以下の通りです。

  • ナレッジ蓄積
    • 変化への対応可否に直結
    • 人材育成にも直結
    • 中長期的な組織活性には不可欠
  • 拡張性
    • 拡張性や汎用性が自社の要件に沿うか = クラウド上の基盤を強くお勧め (別記事で解説します)
    • 将来的に自社の優先度高い要件がベンダーのそれに合致するとは限らないことは留意
  • 開発コスト/運用コスト

技術難易度が非常に高い課題かつ業界で確立された手法がある場合は、#1 特化アプリケーション組み込み型の課題解決がいいと思いますが、個人的には、

  • #2 API 連携型と #3 自社開発 の併用
    • モデルの開発工数次第でスイッチ
    • 便利な API はどんどん使う
  • 過度にパートナーやベンダーに依存しない
    • 足りないところだけうまく補う
    • 補った分はうまく自社に取り入れる (うまく盗む)

が最もバランスが良いと考えてます。

データ分析のパターン

データ分析のパターンで分類します。
大枠ではこちらも 3 つです。

テーマ 主な利用主体 仮定は必須? 技術難易度 備考
#1 省人化 営利企業 ★★★ プロセスの改善が進むことでコストの低下が見込めるようなケース
・ex.発注業務の一部を代替可能な AIモデル
・ex.有人で検知していた異常を一定の精度で検出するAIモデル
業務設計や組織的な課題が関係してくる
#2 付加価値向上 営利企業 ★★★ ・ユーザーへの付加価値が向上することで売上向上が見込めるようなケース
・LVT(生涯顧客価値)など手法が確立されている分野も多い
#3 データマイニング 研究開発 × ★★★★★ ・集めたデータから何らかの傾向を発見する=データマイニング
・アカデミックな研究やそもそも仮説設定ができないケースが該当
・「データがあれば何かできそう」もこれに該当
目的が不明瞭なまま進行した場合、実証検証が失敗することが多い

ビジネスの場で成功している実証検証のほぼ 100% が #1 省人化 もしくは #2 付加価値向上 に該当します。
具体的な経営課題の解消をテーマに掲げる以上は、目的の明確化が必須です。
そのうえで仮設立案と検証のサイクルを回し、データ分析の結果をビジネス成果にに紐づけていきます。

注意しなくてはいけないのは、精度指標の類はモデルの状態を表すものであるという点です。
実際にモデルが活用される業務フローを踏まえたうえで、プロジェクト全体を評価する指標は別途設ける必要があります。
よってプロジェクトを進める前に以下をしっかり検討すべきでしょう。

  • 自社で取り組もうとしている課題は 1-3 どれに該当するのか?
  • 1 or 2 であれば AI モデルは自社の業務のどの部分に組み込まれるか?
  • 3 であれば仮説を立てて、1-2 の課題に昇華できないか?
  • モデルが業務に組み込まれた結果、業務プロセスはどのように変化するか?
  • モデルの出力結果は、何らかの形で既存 KPI と紐づけ可能か?

まとめ

私もそうですが、データ分析やAIのプロジェクトはどうしても手法に焦点が当たりがちです。
折に触れてこれらの点は見直すようにしたいところです。


これだけは知っておきたい!ビジネス層のためのデータ分析超入門 ③ 二項分類のユースケース

はじめに

エンジニア歴1年目の私が、機械学習について調べたことをまとめていきたいと思います。

今回は、以前記述した「これだけは知っておきたい!ビジネス層のためのデータ分析超入門 ② 評価指標」を踏まえたユースケースについて確認していきます。

分類問題で重要なのは、望まれる状況がどのような状態で望まない状況がどのようなものであるかをとらえることです。

どの評価指標を最適化するべきかのひとつの考え方として偽陽性・偽陰性に分類されたクラスの影響度合いを考えるというものがあります。これによって再現率/適合率のどちらを最適化すべきかの判断ができます。

「どの場合にどの指標をみるのか」がざっくり把握できれば幸いです!

ゴール

今回は以下のユースケースについて考えていきたいと思います。

ユースケース一覧

  1. 緊急のドキュメント探索
  2. 画像プライバシー保護システム
  3. スパムフィルタ
  4. キーワードによるフォト検索

1. 緊急のドキュメント探索

緊急性の高いドキュメントを他よりも優先するシステムを構築したいとします。
ケースとしては、ファイルフォルダーに蓄積されているドキュメントの仕分けなどで、NDAのような重要書類と過去に行われた定例会議の議事録のような緊急性の低い書類の探索とします。

  • 偽陽性(FP)
    緊急でないドキュメントを緊急であるドキュメントとして分類されること。
  • 偽陰性(FN)
    緊急であるドキュメントを緊急でないドキュメントとして分類されること。

無題のプレゼンテーション (25).png

このようなケースでは、偽陽性(FP)であれば誤って分類されたものは緊急でないと判断して、無視して良いのですが、偽陰性だと重大な問題を見落とすケースにつながってしまう恐れがあります。

そのため、「再現率」を最適化する方が好ましいです。
(取りこぼしなく緊急なドキュメントを緊急なドキュメントと判断するモデル)

2. 画像プライバシー保護システム

登録された画像内の機密情報(クレジットカードの番号など)を検出し、それをぼかすシステムを構築するとします。

  • 偽陽性(FP)
    ぼかす必要のないものをぼかしてしまう。(画像内のなんらかの数字など)
  • 偽陰性(FN)
    クレジットカード番号がぼかされずに残ってしまう。

無題のプレゼンテーション (22).png

このようなケースでは、偽陽性の場合は気になるところはありますがシステム上の弊害はありません。しかし、偽陰性であると、個人情報が盗まれてしまう恐れがあり重大な問題につながってしまいます。

そのため、「再現率」を最適化する方が好ましいと言うことができます。
(取りこぼしなく機密情報をぼかすようにするモデル)

3. スパムフィルタ

スパムメッセージとそうでないものをフィルタリングし、スパムメールを受信フォルダから削除するシステムを構築するとします。

  • 偽陽性(FP)
    スパムでないメールが誤ってスパム認定され、受信フォルダから削除される。
  • 偽陰性(FN)
    スパムメールがフィルタリングされずに受信フォルダに残る。

無題のプレゼンテーション (24).png

今回のケースでは、これまでのケースの反対になります。
偽陽性の場合、正常なメールがスパムメールと認定され削除されてしまうと、もし削除されてしまったメールが重要であった場合に問題が発生してしまう可能性があります。しかし、偽陰性の場合、多少の不快感は残るものの、ビジネス上の損失には直結しません。

そのため、「適合率」を最適化するのが好ましいです。
(スパムをスパムと正しく認定する割合を高くするモデル)

4.キーワードによるフォト検索

特定のキーワードに対応する最適なストックフォトを見つけるシステムを構築するとします。
例えば、「犬の画像」と検索した際に表示された画像に実際に犬が含まれていれば正常に分類されていると判断します。

偽陽性(FP)
キーワードと無関係な画像(車の画像など)が表示されている。

偽陰性(FN)
画像内に犬が写っているが、検索結果に表示されなかった画像が存在する。

無題のプレゼンテーション (27).png

偽陽性については、検索キーワードと関連しない画像が表示されているため好ましい状態ではありません。偽陰性については、キーワードと関連する画像が表示されているため、取りこぼしの画像があったとしても検索システムとしては問題にはなりません。

そのため、「適合率」を最適化する方が好ましいです。
(実施される画像検出が正しく行われるモデル)

さいごに

簡単ではありますが、データ分析評価指標でのユースケースについて解説しました。

ぜひ、参考になれば幸いです。


Databricks、使ってみよう①

はじめに

Databricksとは、Databricks 社が開発した 統合データ分析プラットフォームです。
Databricksを利用することで、高度な解析ソリューションの構築とデプロイができます。

概要

ポータル画面で、スピーディ・手軽にAI・データ分析で必要となるさまざまな要素…

  • 分析データをコンピュータに取り込む
  • 取り込んだデータの分析
  • 分析したデータの可視化

などが含まれたデータ分析のトータル環境をクラウド上で構築できます。

データレイクと分析環境を AWS 上に構築することができるため、コンピューティングリソースやストレージも AWS 上で管理できます。

構成図
MicrosoftTeams-image.png

AWS で実装する場合は、
Databricks アプリケーションとユーザー側の AWS リソースを連携させ、リソースとして EC2 を利用する形になります。

Databricksの特徴・導入するメリット

1.オープンソースをベースとした分析プラットフォーム

  • 高速分散処理に特化しているApache Spark
  • 複数のデータベースを管理できるDELTA LAKE
  • 取り込んだデータを可視化するredash など

上記の図のように、Databricks を構成しているサービス群はほとんどがオープンソースとして公開されているサービスです。
Notebookでコードを書き、Notebookで指定できる言語は、Python Scala SQL R の4つになっています。

2.データ分析環境を一元化できる・シンプルなサービス

会社・組織の中で部門ごとにそれぞれのサービスやツールを利用していることが多く、データ分析業務の統一管理ができていないというケースが見られます。

Databricks では、図のように、分析データ収集・蓄積から加工処理、AIモデル管理・運用まで一括で管理できるため、組織間での連携不足の解消や、管理工数の削減につなげられるメリットがあります。

また、Databricks を構成している各サービス群はシンプルな構成になっています。
シームレスに連携できるため使いやすいです。
image.png

3.コラボレーション向上

Databricks の機能の中で、コラボレーション向上ができる仕組みとして提供されているのが
コーディング画面のCollaborative Notebook(コラボレーティブ ノートブック)となっています。

Collaborative Notebook(コラボレーティブ ノートブック)画面
image.png

Collaborative Notebook は、Jupyter Notebook ライクなインターフェースとなっています。

従来の Notebook では、担当者ごとにバラバラで処理を行っていたので、総合的に管理をすることが難しいというデメリットがありましたが、Collaborative Notebook では会社・組織間でのコーディング作業の共有が可能になっています。

他にも、誰がどの処理を行ったのか?という履歴が残るような仕組みがあるため、エラーの履歴を辿るといったことができるようになっています。

また、クリックするだけで以下のように分析結果が簡単に可視化できるのも非常に便利な点だと思います。

databricks notebook gif.gif

事例紹介

Shell社

業界:エネルギー(石油大手)
解決したいこと:ビックデータ活用を活用するため、データ分析基盤を構築したい
問題解決のために行ったこと:データの取り込み、ETL処理、データ分析、機械学習

導入事例:Shell - Databricks

https://databricks.com

Starbucks社

業界:小売・消費財(コーヒーチェーン)
解決したいこと: 需要予測の策定、パーソナライゼーション、製品イノベーション
問題解決のために行ったこと:機械学習、データの取り込み、ETL

導入事例:Starbucks - Databricks

https://databricks.com

おわりに

Databricks の概要と、特徴・導入するメリットについてまとめてみました。
Databricks のメリットについて分かったので勉強になりました!


【AWSで始める異常検知】Part3. 異常検知に便利なAWS製品

はじめに

前回の記事 では、Amazon SageMaker を使って異常検知のサンプルアーキテクチャをご紹介しました。
AWSにはSageMakerの他にも異常検知に便利なサービスがあるので、本記事にて代表的なものをいくつかご紹介いたします。

Amazon Monitron

Amazon Monitron は、機械学習を使用して産業機械の異常な動作を検出し、予知保全によってダウンタイムを低減することを可能にすることができます。
産業機械にMonitronセンサーを取り付け 振動や熱を計測し、そのデータをクラウド上に転送して機械学習によって異常な動作を検知します。

※2021/05/10時点で米国、英国、およびEUのみでデバイス購入可能、利用できるリージョンは米国東部 (バージニア北部) および欧州 (アイルランド)のみです。

Amazon Monitron - アマゾン ウェブ サービス

https://aws.amazon.com

Amazon Monitron に含まれるもの

  • 振動と温度のデータを取得する Amazon Monitron センサー
  • AWS にデータを安全に転送する Amazon Monitron ゲートウェイ
  • 機械学習を使用して機械の異常パターンのデータを分析する Amazon Monitron サービス
  • およびデバイスをセットアップし、機械の潜在的な障害を追跡するためのコンパニオンモバイルアプリ

スクリーンショット 2021-05-07 15.50.31.png

Amazon Lookout for Equipment

Amazon Lookout for Equipment は、機器のセンサーで得られたデータを自動で分析して、機器の異常検知や予知保全を実現します。
リアルタイムでセンサーデータを分析して、機械障害につながる可能性のある早期警告の兆候を正確に特定します。

Amazon Lookout for Equipment - アマゾン ウェブ サービス

https://aws.amazon.com

スクリーンショット 2021-05-07 17.46.08.png

Amazon Lookout for Vision

Amazon Lookout for Vision は、コンピュータービジョン を使用して視覚表現の欠陥や異常を発見する機械学習サービスです。
正常な製品と欠陥のある製品を示す画像をアップロードしてタグ付けをすることで、欠陥を検出するモデルを自動で作成することができます。

 Amazon Lookout for Vision (コンピュータービジョンを使用して視覚表現の欠陥や異常を発見) | AWS

https://aws.amazon.com

スクリーンショット 2021-05-07 17.19.11.png

AWS IoT

AWS IoT を使用すれば、機器の状態、正常性、性能を継続的にモニタリングおよび推測して、問題をリアルタイムで検知できます。

引用元:https://aws.amazon.com/jp/iot/solutions/industrial-iot/?c=i&sec=uc1

スクリーンショット 2021-05-07 17.53.25.png

AWS IoT Analytics

AWS IoT Analytics に事前に定義されているテンプレートを使用して、強力な予知保全モデルを簡単に構築し、フリートに適用できます。
例えば、AWS IoT Analytics を使用して、接続された貨物車で冷暖房装置が故障するタイミングを予測できるため、適切な補修を行って輸送上の損傷を防ぐことができます。

引用元:https://aws.amazon.com/jp/iot-analytics/?c=i&sec=srv

AWS IoT Events

AWS IoT Events は、複数の IoT センサーやアプリケーションのデータを継続的に監視し、AWS IoT Core や AWS IoT Analytics といった他のサービスと統合してイベントの早期検出と固有の分析を可能にします。

引用元:https://aws.amazon.com/jp/iot-events/?c=i&sec=srv

AWS IoT Core

AWS IoT Core を使用すれば、IoT デバイスを AWS クラウドに接続できます。

引用元:https://aws.amazon.com/jp/iot-core/

AWS Lambda、Amazon Kinesis、Amazon S3、Amazon SageMaker、などといった Amazon のサービスを簡単に使用して、接続されたデバイスで生成されたデータを収集、処理、分析し、そのデータに基づいてアクションを起こす IoT アプリケーションを構築できます。

まとめ

このように、AWSには異常検知をする上でたくさんのサービスが用意されています。
やりたいことに合わせて使うサービスを検討することができるのも、AWSなどのクラウドサービスを使うメリットだと思いました。


【AWSで始める異常検知】Part2. Amazon SageMakerで設備故障の検知

はじめに

AWS ソリューションライブラリーにて提供されている 機械学習を利用した予知保全 の実装をやってみます。
用意されているAWS CloudFormation テンプレートを使用するので簡単にデプロイできます。

Amazon SageMakerとは

Amazon SageMaker は、機械学習モデルを短期間で簡単に構築、トレーニング、デプロイできるようにするフルマネージド型サービスです。
あらゆる作業を効率化する機能が提供されているため、人手をかけずに異常検知をやりたいときに最適なサービスです。

本記事のゴール

機械学習モデルとターボファンの劣化シミュレーションデータのサンプルデータセットをデプロイして、潜在的な設備故障を認識するようにモデルをトレーニングするというサンプルアーキテクチャを紹介します。

アーキテクチャ図は以下の通りです。

image.png

このアーキテクチャでは、サンプルデータセットを使って、
設備故障の評価対象としてRUL(残存耐用期間)を計算し、予測値と観測値を比較して異常検知します。
トレーニングデータとテストデータは、S3バケットに格納します。
これをAWS Lambda などを使って1日に1回スケジュール実行します。

実装手順

手順は大まかに以下の4つです。

  1. スタックを起動する
  2. ML モデルをトレーニング
  3. CloudWatch Events ルールを有効にする
  4. Lambda 関数がデータを処理していることを確認する

1. スタックを起動する

機械学習を利用した予知保全 から CloudFormationテンプレートをダウンロードします。

テンプレートに含まれているもの:
Amazon CloudWatch Events ルール
AWS Lambda 関数
Amazon SageMaker ノートブックインスタンス
Amazon S3 バケット

image.png

AWS CloudFormationに移動 → 「スタックの作成」を選択します。

image.png

ダウンロードしたテンプレートをアップロード → 「次へ」を選択します。

image.png

スタックの名前を入力します。

image.png

S3バケットの名前を入力 → SageMaker ノートブックインスタンスをデプロイす
る VPC Id、Subnet Id を選択 → 「次へ」で次に進みます。

image.png

オプションの設定はスキップします。
「次へ」を選択します。

image.png

設定を見直します。
テンプレートが AWS IAM リソースを作成することを確認するチェックボックスをオンにして → 「スタックの作成」を選択します。

image.png

CREATE_COMPLETE のステータスが表示されたら、デプロイが完了したということです。
5分ほどかかりました。

image.png

2. Amazon SageMaker でノートブックを実行する

Amazon SageMaker では、任意の深層学習フレームワークを使用してカスタム深層学習モデルをトレーニングできます。
このソリューションでは、カスタムの Stack LSTM ニューラルネットワークを活用して、時系列データから履歴パターンを学習します。

Amazon SageMaker コンソールに移動 → 「SageMaker Studio」を選択します。

image.png

「ノートブックインスタンス」 → 「PredictiveMaintenceNotebookInstance」を選択します。

image.png

「Jupyterを開く」を選択します。

image.png

sagamaker_predictive_maintenance.ipynb のノートブックを開きます。

image.png

全てのセルを実行します。

image.png

3. CloudWatch Events ルールを有効にする

1日に1回実行するように設定されてます
Amazon SageMaker バッチ変換ジョブを作成する AWS Lambda 関数をトリガーするように設定されており、AWS SageMaker バッチ変換ジョブはトレーニング済みモデルを使用してデータのサンプルから残存耐用年数を予測します。

AWS Lambda コンソールに移動 → 「関数」 → 「predivtive-maintenance-batch-transformer」を選択します。

image.png

「EventBridge(CloudWatch Events)」を選択します。

image.png

predictive-maintenance-ScheduledRule-を選択します。

image.png

「有効にする」を選択し、を有効にします。

image.png

「有効にする」を選択します。

image.png

4. Lambda 関数がデータを処理していることを確認する

[モニタリング] を選択し、[Invocations] グラフにアクティビティが表示されているこを確認します。

image.png

テスト結果はS3バケットに格納されます。
画像のように、RUL(残存耐用年数)の列が追加されていることが確認できます。

image.png

さいごに

今回は、Amazon SageMakerを使って異常検知のアーキテクチャ実装を試してみました。
AWS CloudFormation テンプレートを使用することで、モデルのトレーニングからノートブックのスケジュール実行の設定まで数分で出来ました。
今回はサンプルデータを使用していますが、任意のデータセットを使用するようにソリューションを変更できることもできるようなので、次回はトライしてみたいです。

参考

機械学習を利用した予知保全 | 実装 | AWS ソリューション

https://aws.amazon.com


【AWSで始める異常検知】Part1. 異常検知の始め方

異常検知とは何か

他の大多数のデータとは振る舞いが異なるデータを検出する技術で、
クレジットカードの不正使用検知や機械故障の検知等の分野で用いられています。

異常検知の代表的な手法

以下のような手法がよく用いられています。

  • ホテリング理論
  • k近傍法
  • 局所外れ値因子法(LOF法)

異常検知の活用事例

製品の品質チェック
画像認識の技術を用いて、今まで目視で完成品をチェックしていたものを自動化します。

設備や機器に対する異常検知
センサーから取得したデータを用いて、異常データを検出するようにモデルを構築し、トラブルを早期に発見します。

クレジットカードの不正使用検知
不正利用のパターンをデータ化し、24時間365日カード利用を監視します。
不正利用の事例と類似した場合は、カード利用を停止したり カード名義人へ連絡が入ったりなどの対応が行われます。

異常検知にAIを活用するメリット

  • 人の目や長年の経験がないと分からなかった故障などの判断をAIに置き換えることができる
  • 人間では感じられない違いを画像やデータによって補完することが可能
  • トライ&エラーの繰り返しで検知精度を向上

まとめ

本記事では、異常検知とは何で、どんな分野で使われているのかについて紹介しました。
異常検知の技術を用いた業務の自動化は、人員の削減や生産性の向上にもつながるため様々な分野で取り入れられています。
次回は実際にAWSのサービスを使って、簡単に異常検知を試してみます。

次の記事:【AWSで始める異常検知】Part2. SageMakerで設備故障の検知


AWS Redshift 活用術 ① RedshiftML 紹介

はじめに

SQLで機械学習モデルが作成できるAWSのサービス、RedshiftMLについてご紹介します。
この記事ではRedshiftMLの概要・どのようにして動いているのか?を紹介し、
AWS Redshift 活用術 ②では実際に触ってみた工程を紹介したいと思います。

概要・メリット

RedshiftMLとは、SQLから機械学習モデルを構築・利用・運用できるサービスです。

従来のAWS上の機械学習

これまで、データベースに格納してあるデータを用いて機械学習を行うには…

  1. 学習データをS3バケットにエクスポート
  2. Sagemakerノートブックインスタンスでモデルをトレーニング、予測をします
  3. 予測されたデータをデータベースにインポート

の手順が必要になり、機械学習を行う過程でSagemakerの扱いやプログラミング言語(PythonやR)のスキルが必要でした。

RedshiftMLでの機械学習

  1. RedshiftからSQLをたたく
  2. Amazon Sagemaker が実行され、起動・モデルが生成される
  3. 作成したモデルがS3バケットに保存される

RedshiftMLを使用すると、PythonなどのスキルがなくてもSQLコマンドだけで機械学習モデルが作成できるようになります。

Python、Rなどのプログラミング言語やSagemakerがよく分からないけど、SQLは知っているよ、という層も機械学習モデルが構築できるのが一番のメリットではないかと思います。

また、Amazon SageMaker Autopilot が裏で動いているので、

  • 分類・回帰モデルを自動的に生成
  • 特徴量エンジニアリング・モデルのチューニング
  • XGBoost、線形学習器、深層学習アルゴリズムをサポート

なども行ってくれます。

【RedshiftML構成図】
image.png

さいごに

RedshiftMLの登場で、PythonやRはあまり詳しく知らないけど、SQLに精通しているデータベース開発者の方々が機械学習処理の構築に参入しやすくなったといえます。
AWS Redshift 活用術 ②では実際に触ってみた工程を紹介しているので、もしよかったらそちらも見てみてください。

参考URL

AWS公式ドキュメント:

Terms and concepts for Amazon Redshift ML - Amazon Redshift

https://docs.aws.amazon.com


【AWS OCRサービス】Amazon Rekognition Videoでメタデータ検出してみた

はじめに

今回は、Amazon Rekognition Videoについて概要と、何ができるのか、どんな時に使えるのかを調査しました。
Amazon Rekognition Videoについて概要を知りたい方、どんなデータが検出できるのかを紹介していこうと思います。

Amazon Rekognition Video 概要

Amazon Rekognition Videoとは、AWSの提供する機械学習を利用したビデオ分析サービスです。
Rekognition Videoを利用することで、動画中の数千のオブジェクトや顔、コンテンツを正確に検知し、追跡し、認識し、抽出し、節度を検出することができます。

※こちらの記事にて、デモの利用手順をご確認いただけます。
https://qiita.com/JJ33/items/848aaac7bc68a15c56af

Amazon Rekognition Video 3つの主な機能

1.チーム:動画に登場する人物を識別、追跡
2.有名人:登場人物が有名人か判定
3.オブジェクトとアクティビティ:動画内にある人、モノ、シチュエーションまでを解析

検出できるメタ情報

  • 物体(車両やペットなど)
  • シーン(都市やビーチ、結婚式など)
  • アクティビティ(小包の配達やダンスなど)
  • 有名人(有名人の名前と一意のID)
  • テキスト(英語テキストのみ)
  • 動作(ろうそくを吹く、火を消すなど)
  • 不適切なコンテンツ(ヌード、暴力、武器など)

各検索結果や検出にはタイムスタンプが付いているため、詳細なビデオ検索向けのインデックスをすぐに作成できるほか、さらなる分析のために興味のある箇所にすばやく移動することもできます。
また、対象がフレーム内のどの位置で検出されたのかを境界ボックスの座標で教えてくれます。

デモを試した結果

https://www.youtube.com/watch?v=L91yri_Vmbs
こちらの動画を借りてデモを使ってみました。
結果を一部掲載します。
(今回CelebritiesやModeration Labelsは検出されなかったためLabelsとPersonsのみ)

ケース1 ジェット機の前で写真を撮るシーン

image.png
■Labels(Confidence 80以上のみ表示)
image.png
ジーンズやヘリコプターも認識できているようです!

■Persons
image.png
4人の人物を検知しています。

ケース2 女の子がドーナツを持っているシーン

image.png

■Labels
image.png
こちらのシーンではホットドッグを検出しています。
正確にはドーナツなのですが、食べ物の種類まで認識しているのはすごいですよね!

■Persons
image.png
先程のシーンと同じ女の子だとわかっているようです!

ケース3 ソファーで写真を撮るシーン

image.png

■Labels
image.png
室内で、シェルフなどの家具があることを認識しています。

■Persons
image.png
シーン1と同じ人物が2人いるとわかっているようです。

ケース4 家に荷物を運ぶシーン

image.png

■Labels
image.png
宅配をしているシーンであることも認識しています!これはすごい!

何に活用できそうか考えてみた

  • 不適切なシーンのカット、または警告表示
  • 検索機能を充実させる(タグ付けや顔検索)
  • 顔認証受付(施設の混雑防止や万引き防止につながる)
  • 人物トラッキングで犯人を捕まえる、行方不明者を捜す
  • 動画を投稿前に節度を検出し、不適切なシーンの公開を防ぐ
  • 検出できたメタデータを自動で組み合わせてハイライト動画の作成
  • 撮った動画を、カテゴリーや人物別で勝手にフォルダに分けるアプリ
  • SNS等で動画メディアを投稿する際、顔検索によって友達を自動でタグ付け
  • 小売業の分析(買い物客の行動、平均年齢層、性別分布、人々が表す感情を分析)
  • コンテンツ流動型広告(見ているコンテンツに見合う広告を選ぶ、良いタイミングで挟むなど)

さいごに

デモを試した結果、十分な精度で色々なメタ情報が得られました。(他の動画では自撮りをしているシーンやラーメンを作っているシーンも認識しました!)
アイデア次第で、顔認証受付やハイライト動画の作成など、様々な用途で活躍できそうだと思いました。
ぜひ、Amazon Rekognition Videoを使ってみてください!