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


Amazon Rekognition Videoの活用法について考える

はじめに

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

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

3つの主な機能

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

検出できるメタ情報

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

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

デモを試した結果

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

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

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

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

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

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

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

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

2020-10-09_15h34_03.png
■Labelsimage.png

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

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

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

2020-10-09_14h48_10.png

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

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

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

さいごに

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

参考リンク

Amazon Rekognition Video | AWS

https://aws.amazon.com

使用した動画リンク

AWS Curiosity Kid: Belonging

https://www.youtube.com


これだけは知っておきたい!ビジネス層のためのデータ分析超入門 ② 評価指標

はじめに

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

今回は、私が分からないなりにも「これだけは覚えておきたい!!」と感じた、データ分析を始める上で欠かせない評価指標についてまとめてみました。

私の理解を深めるためにも、今回はシンプルな(※)二項分類を例に解説していきます。

二項分類...属性によって、2つに分類すること(英語か日本語、大文字か小文字など)

ゴール

今回は以下の評価指標ざっくり解説していきます。

解説用語

  1. TP,TN,FP,FNと混同行列
  2. 適合率と再現率
  3. ROC曲線とAUC

1.TP,TN,FP,FNと混同行列

TP,TN,FP,FNとは、二値分類の種類
混同行列とは、二値分類の結果を可視化したもの

TP,TN,FP,FNは、以下の4つになります。(例として車の画像を判別する例で示します)

  • 真陽性(True Positive)
    例)車の画像(Positive)を正しく(True)車の画像である(Positive)と判別した
  • 真陰性(True Negative)
    例)車以外の画像(Negative)を正しく(True)車以外の画像である(Negative)と判別した
  • 偽陽性(False Positive)
    例)車以外の画像(Negative)を間違えて(False)車の画像である(Positive)と判別した
  • 偽陰性(False Negative)
    例)車の画像(Positive)を間違えて(False)車以外の画像である(Negative)と判別した

これらの情報を一つにまとめ、正解・不正解を整理した表を混同行列(confusion matrix)といいます。

ちなみに上記の例を混同行列で表すと以下になります。

正しくは車 正しくは車ではない
予測が車 無題のプレゼンテーション (8).png 無題のプレゼンテーション (7).png
予測が車ではない 無題のプレゼンテーション (9).png 無題のプレゼンテーション (10).png

2.適合率と再現率

適合率とは、出力した結果の内、本当に見つけたいデータの割合はどの程度あるかの指標
再現率とは、網羅性を測る指標

例を出して説明していきます。

車と電車の写真データ群の中から、車の写真を選び出す検索システムAと検索システムBがあるとします。

結果は図のようになりました。

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

システムAでは検索でヒットしたのが60件。車以外の電車などの写真をヒットさせる誤りはなんと0でした。しかし、車の写真の取りこぼしが70件発生してしまったようです。

システムBでは検索でヒットしたのが250件。Aとは反対に電車の写真をヒットさせる誤りが90件発生してしまいました。しかし、車の写真の取りこぼしはありませんでした。

この場合、どちらの検索システムのほうが優秀でしょうか??

それは、検索の目的によって異なります。

上記のケースですと、

システムAは、出力した結果の内、本当に見つけたいデータ(車の写真)の割合が高かったので、「適合率が高い」と言え

反対にシステムBは、正解の検索ヒット数が高い(網羅性が高かった)ので、「再現性が高い」と言えます。

3. ROC曲線とAUC

データ分析の中でも、白黒はっきりしない曖昧な結果が出てくることがあると思います。
そんな時に使用する評価指標が、「ROC曲線とAUC」です。

この評価指標は、医療現場における検査や診断薬の性能などで多く使われるものになりますので、医療での検査を例に解説していきます。

下記は、ウイルスに感染しているかをAIが判断するモデルとします。
笑顔の人は健康な状態、目がバッテンで明らか体調の悪そうな人が病気の状態です。
アイコンの下の数字は陽性率を示します。

陽性率が低い人の中にも体調が悪そうな方がいますね。

このウイルスの感染の有無を2項分類したときに、「病気」とAIが判断する確率を陽性率とすると「真陽性率=AIが陽性と判断した中で本当に病気を患っている人の割合」、「偽陽性率=本当に陰性の人をAIが陽性と判断した割合」と定義できます。

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

では、陽性率が0.7以上の人を陽性とします。

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

このように赤枠で表示することができます。

ROC曲線とは、真陽性率(TP)を縦軸に、偽陽性率(FP)を横軸にした2次元のグラフのこと

この例であるならば、「AIが陽性と判断した中で本当に病気がある人の割合」が縦軸になり、「本当に陰性の人をAIが陽性と判断した割合」が横軸になり、偽陽性率は1/6、真陽性率は1/3となるわけです。

ROC曲線を実際に作成すると以下になります。

2021-05-06_15h45_57.png

曲線中にできた面積(図中の灰色の部分)がAUCになります。

AUCとは、ROC曲線を作成した時に、グラフの曲線より下の部分の面積をAUC(Area Under the Curve)のこと

AUCは0から1までの値をとり、値が1に近いほど優れた精度で分類ができていると言えます。

さいごに

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

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


これだけは知っておきたい!ビジネス層のためのデータ分析超入門 ① 基礎用語

はじめに

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

今回は、私が分からないなりにも「これだけは覚えておきたい!!」と感じた、データ分析の超入門用語を7つピックアップしました。

ゴール

今回は以下の解説用語をざっくり解説していきます。

解説用語

  1. 特徴量
  2. 説明変数と目的変数
  3. データ探索
  4. 可視化
  5. 特徴量エンジニアリング
  6. 学習と推論

1. 特徴量

特徴量とは、対象となるデータの特徴を数値化したもの

犬を例に説明していきます。

私たち人間は犬を見ると、大きさや顔の特徴、毛並み等から「チワワ」とか「日本の犬」等を判別することができます。

ですが、コンピュータの世界ではそうはいかず、大きさや顔の特徴などを明確に数値化して始めて「犬種」を判断することが可能になります。
これらの大きさや顔の特徴などを数値化したものが「特徴量」に当たります。

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

特徴量の選択は、機械学習を行うさいには最も大事なデータの質や量が求められます。つまり、良質な機械学習を行いたい場合は良質なデータの質と量が大きく影響してくると言っても過言ではありません。

ちなみに、特徴量のデータの数のことを「次元」と言います。私たちが、犬の種類を判別するときに複数の情報から判断するように、機械学習でも複数のデータをコンピュータに学習させ判断させます。

大きさや毛並みの色を特徴量にする場合は2次元、そこに顔の特徴などを加える場合は3次元といった感じですね。

2. 説明変数と目的変数

説明変数とは、予測のポイントとなるデータのこと。特徴量に当たる。
目的変数とは、予測対象の過去のデータのこと

セールスを例に説明していきます。

Aという会社でペンを販売しているとします。
セールスでは売上を管理する際に、「今期はお客様にどれだけ売れるか?」の予測がつくと便利ですよね。

この予測を行うためには、コンピューターに「過去どれくらい売上が立っているか」を学習させる必要がありますので、「過去の売り上げ」が目的変数になります。

そして、この予測の根拠となるデータ(セールスマンの人数、景気、アポイントの数、等)を学習させることによって予測の精度を上げることができます。この「根拠のデータ」にあたるのが、説明変数(特徴量)になります。

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

3.データ探索(EDA)

データ探索(EDA)とは、分析初期のフェーズで「データを理解するため」に行う作業のこと

データ探索を行う目的としては、まずはデータに触れてみて、データを可視化したり、データのパターンを探したりすることで、「データを見てからモデルを修正する」必要性があるからです。

少しわかりずらいですね。
図で説明しましょう。

Aさんが売上予測モデルを作ってほしいと依頼されました。
しかし、Aさんは売上のデータは扱ったことがありません。

そこで、まずは営業部から売上のデータを集めて、簡単にグラフを作ってみることにしました!

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

するとどうでしょう。構想段階では分からなかった「異常値や欠損値」が発見され、またデータの「トレンド・パターン」を発見することが出来ました。

この実際のデータを集めて、図や表に表してみるという行動が「探索的データ解析」に当たります。

探索的データ解析の成果によってその後の作業効率が変わるため、非常に重要な作業になります。

4.可視化

可視化とは、データを見える形で整理すること

身近な例だと、エクセルで管理している売上データや在庫の数などを表や図に変換することなどが挙げられますね。

例えば、売り上げの数字がエクセルに羅列されているとします。
ぱっと見たときに、数字が大量に並んでいるだけでは「何がどう変わっているか」って分かりづらいと思います。特に大事な意思決定の場では、数字だけ並べられても判断までに時間がかかってしまいます。さらに、そこにデータ量が1000行とかあったらどうでしょう、、、。ぞっとしますよね。

そんなときに必要になるのが可視化です。

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

可視化は以下のようなメリットがあります。

・属人的なスキルへの依存解消
・クイックな意思決定

5.特徴量エンジニアリング

特徴量エンジニアリングとは、人為的にAIの予測精度を上げるために用いる技術のこと

データ分析ではあるあるにはなりますが、せっかくデータ分析のモデルを作成したのに、予測精度がいまいちだと利用価値がなくなってしまうことが多々あります。

上記の要因の一つとして、集めた生のデータには不良値や欠損値などが含まれている場合や、そのまま扱えない文字データ・画像データがある場合があり、より利用価値の高いモデルを作るために、人がデータを加工する必要があります。

そのデータを表形式にまとめてパターン認識できるように変換する技術を特徴量エンジニアリングと呼んでいます。

【代表的な特徴量エンジニアリング】

Label encoding

例えば、好きな色…青なら3、白なら1 といった感じで、好きな色を言語ではなく数値に変換する技術です。

2021-04-30_19h00_50.png

Count Encoding

例えば、好きな色を集計したデータが1000件あるとして、その中から
好きな色…青は300件、白は200件…と、そのまま集計した好きな色のデータ件数を数値に変換する技術です。

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

まだまだ他にもデータ分析のモデルの予測精度を上げるための特徴量エンジニアリングはたくさんありますが、
長くなるので割愛します。

6.学習と推論

そもそも、機械学習とは、大量の学習データをコンピュータに読み込ませ、そのデータを分析することで分類や識別のルールを作ろうというプログラムのことを指しています。

機械学習をするためのプロセスは、学習 と 推論 の2つに分けられます。

学習とは、大量の学習データの統計的分布から、特徴の組み合せパターンを作り出すプロセス

例えば、学習データである「イチゴ」「レモン」「スイカ」の画像から、コンピュータがそれぞれの画像から見つけた典型的な特徴の組み合わせパターン(=推論モデル)を作ります。

推論とは、分類や識別をしたいデータを、学習で生成しておいた推論モデルに当てはめて、その結果を導くプロセスで

例えば、未知の画像から、画像の特徴を抽出し、「イチゴ」「レモン」「スイカ」を識別する推論モデルに抽出した特徴を照合します。

そして、イチゴの特徴の組み合わせパターンから作られた推論モデルが最も抽出した特徴に近いと判断すれば、「イチゴ」という推論をコンピュータが出力してくれます。

MicrosoftTeams-image (2).png

さいごに

簡単ではありますが、データ分析に関する基礎用語について解説しました。
一つ一つをじっくり説明すると長くなってしまいますので、色々割愛させていただきましたが、調べていく中でデータ分析の奥深さと難しさを改めて感じました。

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


Databricks と AWS の VPC ピアリング接続設定

はじめに

今回は異なる AWS アカウント上に立てた RDS と Databricks を、ピアリング接続する方法について紹介したいと思います。
Databricks の下記のドキュメントを参考にしておりますので、詳細については下記リンク先を参照。

■リンク
VPC peering

前提条件

ピアリング接続を実施するにあたり、確認すべき項目があります。
少なくとも下記の2つは満たしていないと、VPC の構築からやり直す必要があるので気をつけましょう。

■ピアリング接続の条件
・接続する VPC は互いに異なる CIDR 範囲であること
・接続する VPC は同じリージョンにあること

今回ピアリング接続を実施する環境の情報は以下となります。

AWSアカウント情報 Databricks RDS CIDR範囲 リージョン
AWSアカウントA あり なし AWSアカウントBと異なる 東京リージョン
AWSアカウントB なし あり(Oracle RDS) AWSアカウントAと異なる 東京リージョン

手順1

AWSアカウントA

①Databricks 側のVPCコンソール画面で、左にある「ピアリング接続」をクリック
②「ピアリング接続の作成」をクリック
③必要情報を入力して作成。無事に作成できたら、「ピアリング接続の承認待ち」というステータスになるので、AWSアカウントB側で承認されるのを待つ

image.png

AWSアカウントB

①VPCコンソールの「ピアリング接続」タブを確認
②AWSアカウントAよりピアリング接続の承認依頼が来ているので(直ぐに表示されない場合があるので、まだ表示されてなかったら更新などして待つ)、表示されているピアリング接続をクリックし、「アクション」→「承認」と選択
③AWSアカウントAよりピアリング接続の承認依頼が来たのを確認したら、表示されているピアリング接続をクリックし「アクション」→「承認」と選択

手順2

AWSアカウントA

①VPCダッシュボードの「ピアリング接続」を選択
②承認されたピアリング接続を選択したら、「アクション」→「DNS編集」を選択
③「DNS解決を有効」にして保存

AWSアカウントB

①VPC ダッシュボードの「ピアリング接続」を選択
②承認したピアリング接続を選択したら、「アクション」→「DNS編集」を選択
③「DNS 解決を有効」にして保存

手順3

AWSアカウントA

①VPC ダッシュボードにある「ルートテーブル」を選択し、該当 VPC のルートテーブルを検索
②ルートテーブルの「編集」を選択し、ピアリング接続している AWS アカウントB の VPC の CIDR 範囲を「送信先」に入力し、「ターゲット」に作成したピアリングを選択して保存

AWSアカウントB

①VPC ダッシュボードにある「ルートテーブル」を選択し、該当 VPC のルートテーブルを検索
②ルートテーブルの「編集」を選択し、ピアリング接続している AWS アカウントA の VPC の CIDR 範囲を「送信先」に入力し、「ターゲット」に作成したピアリングを選択して保存

image.png

手順4

AWSアカウントA

①VPCダッシュボードで「セキュリティグループ」を選択し、Databricks と連携している VPC の ID で検索をかける
②検索をかけた際、セキュリティグループの説明の部分に「Unmanaged security group 」と記載があるセキュリティグループのIDをコピーして、アカウントB側に情報を提供する

image.png

AWSアカウントB

①VPCダッシュボードで「セキュリティグループ」を選択し、RDSを構築している VPC の ID で検索をかける
②検索して出てきたセキュリティグループを選択し、「編集」を選択し、「ルールの追加」を選択
③「タイプ」には「Oracle-RDS」 を選択し、AWSアカウントA側で提供された「Unmanaged security group」の ID を「ソース」に入れて保存

image.png

手順5

AWSアカウントA

①Databricks 側でクラスターを用意
②notebook で下記のコマンドを入力して、疎通を確認

[crayon-610832dcbfd7b765558395/]

・hostname:RDS のエンドポイント
・port:ポート番号(Oracle の場合は1521)

おわりに

これで、異なる AWS アカウントにある Databricks と RDS ピアリング接続することが可能となりました。


Amazon Lookout for Visionで異常検出 その2(Python3.6)

はじめに

Amazon AI by ナレコム アドベントカレンダー 2020の20日目の記事です。

前回のAmazon Lookout for Visionで異常検出 その1では、AWSコンソール上でAmazon Lookout for Visionの異常検出プロジェクトを作成し、学習とトライアル検出を行いました。
今回は、boto3を用いて作成したモデルをホスティングし、推論を行ってみましょう。

開発環境

  • AWS CLI 2.1.13
  • boto3 1.16.40
  • Python 3.6
  • Windows PC

導入

IAMユーザーの作成、AWS CLI & SDKs の設定、AmazonLookoutVisionFullAccessのアクセス権限を与えます。AmazonLookoutVisionFullAccessポリシーが見つからなかったので、作成しました。

image.png

AWS CLIとboto3を更新しておきましょう。

Windows での AWS CLI バージョン 2 のインストール、更新、アンインストール

[crayon-610832dcc0986584082407/]

Start

作成したモデルを開始します。プロジェクト名(test)とモデルのバージョン(1)を指定します。

[crayon-610832dcc098d006635017/]

状態が「STARTING_HOSTING」となります。

[crayon-610832dcc0990323470710/]

Describe

モデルを開始したら、状態を確認しましょう。

[crayon-610832dcc0992552866646/]

状態が「STARTING_HOSTING」となっています。

[crayon-610832dcc0996389631641/]

「HOSTED」になれば使用可能です。

[crayon-610832dcc0998690972133/]

もしモデルが停止していた場合は、「TRAINED」となっています。

[crayon-610832dcc099a318846966/]

Detect

モデルの状態が「HOSTED」になったら、推論してみましょう。これらの画像をテストしました。

異常(capsule/test/squeeze/001.png) 正常(capsule/test/good/022.png)
000.png 022.png
[crayon-610832dcc099d505596225/]

正しい予測結果が出ています。

[crayon-610832dcc099f423248175/]
[crayon-610832dcc09a1413064596/]

モデルが「STARTING_HOSTING」の状態のときに推論した場合、以下のようなエラーが出ます。

[crayon-610832dcc09a3302350317/]

また、AWSコンソールのLookout for Visionのダッシュボードで検出結果を見ることができます。

最初に異常画像を推論した結果です。

image.png

次に正常画像を推論した結果です。ダッシュボードはすぐに更新されます。

image.png

Stop

モデルを停止します。停止するまで料金かかるので注意しましょう。

[crayon-610832dcc09a6266844728/]
[crayon-610832dcc09a8761880578/]

まとめ

前回作ったモデルをboto3を用いてホスティングし、推論してみました。これで運用できそうです。

参考