Azure Computer Vision APIでテキスト抽出(Read API)やーる(Python3.6)

はじめに

画像からテキスト抽出をやってみました

開発環境

  • Windows 10
  • Anaconda
  • Python 3.6
  • OpenCV 4.4.0
  • Azure Computer Vision API
  • Computer Vision クライアント ライブラリ(必要なら)

導入

1.Azureポータルにログインします
2.Computer Vision APIのリソースを作成します
image.png

3.キーとエンドポイントをメモします
image.png

4.必要なライブラリをインストールしてください。

[crayon-60989ceba87b2442254141/]

5.メモしたキーとエンドポイントを入力し、次のコードを実行してみましょう!

[crayon-60989ceba87bd551771406/]

エンドポイントはリージョン(場所)指定でも動くようです。

[crayon-60989ceba87c0378784265/]

画像URLからテキスト抽出する

クイック スタート:Computer Vision の REST API と Python を使用して印刷されたテキストと手書きテキストを抽出する

[crayon-60989ceba87c3645536954/]
input output
readsample.jpg Figure_1.png

ローカル画像からテキスト抽出する

[crayon-60989ceba87cc484610416/]
input output
readsample.jpg Figure_3.png

Computer Vision クライアント ライブラリを使用する

クイック スタート:Computer Vision クライアント ライブラリを使用する

[crayon-60989ceba87d5837247528/]
[crayon-60989ceba87da827276936/]

お疲れ様でした。


【初心者向け】Azure Custom Vision Serviceを使って写真の天気を判別するモデルを作る

はじめに

この記事では、Azure Custom Vision Serviceを使って画像分類モデルを作成→トレーニング→テストをする流れについてまとめていきます。

Azure Custom Visionとは

Azure Custom Visionは、独自の画像識別子を構築、デプロイ、改良できるようにする画像認識サービスです。 画像識別子は、視覚特性に従って画像に (クラスまたはオブジェクトを表す) ラベルを適用します。 Computer Vision サービスとは異なり、Custom Vision ではユーザーがラベルを指定し、それらを検出するためのカスタム モデルをトレーニングできます。

今回やりたいこと

写真から天気を判別するモデル作成→トレーニング→テスト
画像はこちらから天気認識用のデータセットをお借りしました。

作業の流れ

画像の準備

今回は「曇り」「雨」「晴れ」「日の出」の写真を、それぞれ60枚トレーニング用に使用します。

プロジェクト作成

①Azureにログイン→Custom Visionに移動。
②新しいプロジェクトを作成
recipe1.png
③プロジェクト名入力→ドメインなどを選択→「Create project」を押す。

  • Classification:画像認識
  • Object Detection:物体検出
  • Multilabel (Multiple tags per image):1つの画像につき複数タグ付け
  • Multiclass (Single tag per image):1つの画像につきタグは1つ
  • Domainsで画像の種類を選択。今回はFood(食料)でもLandmarks(ランドマーク)でもRetail(小売)でもないのでドメインはGeneral(全般)を選択

recipe2.png

学習に使用する画像をアップロード

①「Add image」から画像をアップロード。
recipe3.png
②タグをつけて「Upload ×× files」をクリック。
recipe4.png
③数秒待つとアップロードされる
他の画像も同様にアップロードし、タグ付けをしていく。
recipe5.png

トレーニング

①画像のアップロードとタグ付けが終わったら右上の「Train」をクリック。
recipe6.png
②Tranining Typeを選択し「Train」でトレーニング開始。
(Advanced Trainingを選択すると1時間以上のトレーニングにかけることができる。)
recipe6.5.png
③数分待つ。
recipe7.png
④結果が表示される。
Precision(適合率)は例えば「雨」と判断したもので、実際に「雨」であった確率
Recall(再現率)は例えば「雨」のもののうち、「雨」と判断した確率
APは精度の平均

今回の結果はPrecisionとRecallが97.9%、APは99.9%となりました。
100枚中97枚正しい天気の認識ができるということですね。
下部の表でタグごとの精度も見ることができます。
recipe8.png

テスト

①「Quick Test」をクリック。
recipe8のコピー.png
②テストに使用する写真をアップロード。
recipe10.png
③予測結果を見る。
こちら日の出の写真ですが、ちゃんとsunriseが100%と予測されました。
recipe11.png
曇りの写真も「cloudy」が99.9%で出ています。
recipe12.png
晴れも。
recipe13.png
雨も。
recipe14.png
また、テストで使用した画像をそのまま再学習に使用することもできます。
recipe15.png
タグを追加して保存するだけ。
recipe16.png
モデル作成後はExportして利用したり、API連携してアプリケーションと組み合わせることも可能です。

おわりに

モデルの作成→トレーニング→テストの作業がたったの数分で完了しました。
Azure Cognitive Servicesには、画像系に限らず言語や音声などの解析ができるAPIも用意されているので、そちらも触ってみて記事にしていきたいです。

参考リンク

https://docs.microsoft.com/ja-jp/azure/cognitive-services/custom-vision-service/overview


Databricks事例紹介 ~メディア編~

はじめに

今回はDatabricksのメディア業界での事例をご紹介させていただきます。
【掲載事例】
1.Showtime
公式事例URL : https://databricks.com/customers/showtime
2.Comcast
公式事例URL : https://databricks.com/customers/comcast
3.CondéNast
公式事例URL : https://databricks.com/customers/conde_nast

Showtime

image.png

ユースケース

今日の消費者はコンテンツプロバイダーに期待していることが多く、期待に応えられない場合はすぐに対応する必要があります。
エンゲージメントとロイヤリティを確保するために、Showtimeはデータを活用してコンテンツ戦略を推進したいと考えていましたが、レガシーシステムのスケーリングの制限と非効率的なデータパイプラインに苦労していました。
Databricksの統合データ分析プラットフォームを使用したことにより、解約を減らしながらエンゲージメントを向上させることを目的としました。
その結果カスタマージャーニーの実用的なビジョンを得ることができました。

課題
  • レガシーシステムによる新機能の市場投入までの時間の遅延
  • インフラストラクチャが複雑なので、柔軟性を可能にしながら、継続的なメンテナンスを必要としないインフラストラクチャが不可欠
  • 機械学習モデルを開発、トレーニング、デプロイするプロセスは非常に手作業でエラーが発生しやすく、新しいモデルの市場投入までの時間が長い
成果
  • データエンジニアリングチームを大幅に簡素化し、データサイエンスチームの生産性を向上
  • 豊富なデータプール内の洞察を利用して、視聴者のエンゲージメントを促進し、解約を減らす機会の発見
  • チームおよび複数のプログラミング言語間でコラボレーションを簡単かつシームレスにして、データサイエンスの生産性を向上
  • MLflowによって、MLライフサイクル全体を合理化
  • DatabricksはShowtimeが組織全体でデータと機械学習を民主化するのに役立ち、よりデータ主導の文化を生み出した
  • 24時間以上かかっていたデータパイプラインが4時間未満で実行されるようになり(6倍の高速化)、チームがより迅速に意思決定を行えるように
  • 自動クラスター管理を備えたクラウド内のフルマネージドプラットフォームにより、データサイエンスチームはハードウェア構成、クラスター のプロビジョニング、デバッグなどではなく、機械学習に注力
  • データサイエンスのコラボレーションと生産性の向上により、新しいモデルと機能の市場投入までの時間が短縮されました。チームはより速く実験でき、加入者にとってより良い、よりパーソナライズされたエクスペリエンスに

Comcast

image.png

ユースケース

Comcastは数百万の顧客にパーソナライズされた体験を提供するグローバルなテクノロジーおよびメディア企業です。
Comcastは大量のデータ、壊れやすいデータパイプライン、不十分なデータサイエンスコラボレーションに苦労していました。
Delta LakeやMLflowなどのDatabricksを使用して、ペタバイト規模のデータ用の高性能データパイプラインを構築し、数百のモデルのライフサイクルを簡単に管理できるようになりました。
その結果、音声認識と機械学習を使用した、非常に革新的でユニークな視聴者体験を提供します。

課題
  • 数十億の個別のやり取りを実用的な洞察に変えな​​がら、特定のプログラムに対する顧客の声の要求に即座に答える必要があり、ITインフラストラクチャとデータ分析およびデータサイエンスチームに大きな負担があった。
  • 作成したモデルを、クラウド、オンプレミス、場合によっては直接デバイスに直接接続するなど、ばらばらで異なる環境に展開する必要があった。
  • エンターテインメントシステムによって生成された数十億のイベントと2000万以上の音声リモコンにより、分析する必要があるペタバイトのデータが発生している。
  • さまざまなスクリプト言語で作業する世界的に分散したデータサイエンティストは、コードの共有と再利用に苦労していた。
  • 数百のMLモデルの開発、トレーニング、デプロイは非常に手動で行われ、時間がかかり、複製が困難であったため、スケーリングが困難
  • 開発チームは最新のツールとモデルを使用することを望み、運用チームは実証済みのインフラストラクチャに展開することを望んでいた。
成果
  • Databricks統合データ分析プラットフォームにより、Comcastは豊富なデータセットを構築し、大規模な機械学習を最適化し、チーム全体でワークフローを合理化し、コラボレーションを促進し、インフラストラクチャの複雑さを軽減し、優れた顧客体験の提供を実現
  • 自動クラスター管理と、自動スケーリングやスポットインスタンスなどのコスト管理機能により、運用コストを削減
  • Delta Lakeは、取り込み、データエンリッチメント、ビデオおよび音声アプリケーションとデバイスからの生テレメトリの初期処理に使用
  • Delta Lakeにより、ファイルを最適化し、大規模で迅速かつ信頼性の高い取り込みを実現
  • インタラクティブなノートブックにより、チーム間のコラボレーションとデータサイエンスの創造性が向上し、モデルのプロトタイピングを大幅に高速化して反復も高速化
  • マネージドMLflowは、Kubeflow環境を介して機械学習ライフサイクルとモデルの提供を簡素化し、数百のモデルを簡単に追跡および管理可能に
  • Delta Lakeは、効率的な分析パイプラインを大規模に提供し、履歴データとストリーミングデータを確実に結合して、より深い洞察を得ることが可能

CondéNast

image.png

ユースケース

Vogue, the New Yorker, Wiredなどの象徴的な雑誌の出版社であるCondéNastは、データを使用して、印刷物、オンライン、ビデオ、ソーシャルメディアで10億人以上の人々にリーチしています。

膨大な量のデータを活用するため、インフラストラクチャの管理とデータサイエンスの生産性の向上に苦労していました。
Databricksを使用すると、クラスターの自動化により不要なDevOps作業が排除され、Delta Lakeにより、月に1兆データポイントまで拡張できるデータパイプラインを構築できるようになり、MLライフサイクル全体を管理するMLflowとのコラボレーション環境でデータサイエンスのイノベーションが実現しました。
これにより、ブランド全体でパーソナライズされたコンテンツを配信し、顧客を引き付けて維持することができます。

課題
  • Sparkクラスターの構築と管理には、多くの設定と継続的なメンテナンスが必要で、より価値の高い活動からチームを遠ざけた
  • チームがデータパイプラインを構築し、コラボレーションを促進するために分析を進めるための共通のプラットフォームを見つける必要があった
  • データが多すぎてデータセットが既存のデータレイクソリューションを上回っていた
成果
  • 運用を簡素化し、優れたパフォーマンスを提供し、データサイエンスの革新を可能にするフルマネージドクラウドプラットフォームを提供
  • データサイエンティストは、データと洞察を共同作業、共有、追跡し、共同作業の環境を促進可能に
  • データセットの量が増えると(月に1兆データポイントを超える)、Delta Lakeはこれに対応し、データの書き換えやデータのマージなど、より多くのユースケースに対応可能
  • MLflowを使用することにより実験の追跡から生産モデルの監視まで、機械学習ライフサイクル全体を簡単に管理可能に

おわりに

Databricks のメディアに関する事例の紹介は以上となります。
今回ご紹介した事例以外にも多くの参考になる事例が公開されておりますのでぜひ下記のリンク先をご参照ください。

参考リンク

https://databricks.com/jp/customers

 

 

 


Databricks事例紹介 ~コンシューマー編~

はじめに
本記事では、Databricksのコンシューマいわゆる消費者にまつわる事例をご紹介します。

1,Electrolux社
公式事例URL:https://databricks.com/customers/electrolux

2,Grab社
公式事例URL:https://databricks.com/customers/grab

■Grab社

image.png

■ユースケース
豊富な顧客セグメントとより深いプロファイルを構築
より効率的かつ効果的に、顧客により良いサービスを提供

■課題
・様々なデータチームがそれぞれの目的を基に業務を行なっていたため
一貫性をもって顧客を理解できていなかった
・部門間での各データにある属性間の関係を見落としていた
・それぞれのチームでそれぞれのシステムを構築していたため複数のデータパイプラインができ、それぞれを維持および更新管理をする必要があった
・エンジニアの工数が増大し、コストも大幅に増加した
・データの民主化を行ない各チームでその可能性を統合して深い洞察を得る必要があった

上記課題から必要としていたニーズ
・データ量に関係なく拡張や部門間などでのコラボレーションを可能にする統合データ分析プラットフォームが必要だった。
・顧客にパーソナライズされた体験を提供するために顧客セグメントの集中化された一貫したビューを提供するソリューションが必要だった。

■成果
・Databricksを搭載したGrabの社内セルフサービス顧客データソリューション(Customer 360)は、様々な角度から集約された顧客属性の真の単一ソースを実現した。
この民主化された顧客データにどこからでも安全にアクセスして、顧客の習慣やニーズについてよりよく学習し、強化されたアプリ内エクスペリエンスを作成できるようになった。
・Databricksを活用したCustomer 360により、Grabは顧客データを活用し、地理空間的またはトランザクションの観点を超えて、さまざまな製品セグメントおよび機能にわたってお客様の一貫した理解を構築できるようになった
・Delta Lakeを通じて、Grabは、データの整合性とセキュリティをさらに強化する方法で、Webサイトやアプリケーションからユーザーが生成した数千の信号とデータソースを取り込み、最適化。
・数週間かかっていた面倒な作業が今では数時間に短縮
・データをシームレスに統合するDatabricksの機能により、豊富な顧客セグメントとより深いプロファイルを実現
・完全にセルフサービスの内部ポータルを通じて、さまざまなチームが簡単にコラボレーションして、顧客データ、洞察、属性、およびライフタイムバリューを調査可能になった
・より効率的かつ効果的に、より適切な推奨を行ったり、顧客の好みに合わせた新機能を設計したりして、アプリ内エクスペリエンスを改善し、顧客により良いサービスを提供できるようになった。

■Electrolux社

image.png

■ユースケース
売上予測を改善し、サプライチェーンを合理化し、製品をタイムリーに提供することで収益を予測し、顧客満足度を向上

■課題
・400以上の倉庫と流通センターより年間6000万以上位の製品を製造、出荷しているため、非常に複雑なサプライチェーン(仕入れから出荷までの一連の流れのこと)となっている
・このサプライチェーンにより、競争圧力や揮発性物質のコストの発生
・サプライチェーンの複雑さと管理するモデルの数が多かったため、データ資産を管理するだけでなく、さまざまなモデルすべてをバージョン管理するためのより良い方法が必要
・分析方法は、従来Excelに複数のデータソースから履歴情報(価格、オンライン評価、レビューなど)を入力。このプロセスで非常に大きなリソースを消費するだけでなく、マーケティングキャンペーンの影響を明確に示さない不正確な予測をもたらした

■成果
・Databricksを使用すると、Electroluxは大量の消費者データと製品データを簡単に取り込み、機械学習を大規模に活用して、マーケティングROIと売上予測の改善を通じてバリューチェーンを最適化する方法をより深く理解できた
・Delta Lakeを使用すると、Electoluxのデータチームは数百万のデータポイントを簡単に取り込み、データ品質の問題を心配することなく、大規模な堅牢な本番データパイプラインを構築できた。
・MLflowは、Electroluxの完全な機械学習ライフサイクルを合理化します。「Databricksを使用すると、さまざまなバージョンの実験とシミュレーションを追跡し、組織全体でモデルをパッケージ化して共有及び展開が可能。その結果、予測モデルをはるかに速いペースで反復して、より正確な予測を行うことができる。
・データチームにとって、技術者ではないチームメンバーが活用できる方法で実用的な洞察を提供することも重要である。全体として、同じプラットフォームでのデータサイエンス、エンジニアリング、およびアナリストチームの統合により、チーム間のコラボレーションが促進され、ビジネス全体の販売と運用を改善する新しいデータ主導の機会が生まれた。
・エレクトロラックスの販売予測エンジンの中核にDatabrikcsを導入したことにより、絶え間なく改善されてスマートになっている何千ものモデルにデータを供給するため、グローバルサプライチェーンの複雑さは今や貴重な資産であり、競争上の差別化要因と見なされている。
同社は現在、消費者と市場が将来どのように振る舞うかをより正確に予測することが可能。これらの新たな洞察により、サプライチェーンのすべての重要な側面が改善。特に、販売およびマーケティングキャンペーンが販売予測に与える影響大。
・Databricksを使用すると、セールスプロモーションがより的確に行われるだけでなく、適切な製品を適切なコンシューマーに適切なタイミングで提供可能となる


Azureデータ分析入門 #6 【CSVデータ → Power BI サービス】

はじめに

BI ツールはストレージやデータベース、DWH への接続が一般的ですが、まずは手元の CSV データで試してみたい、という方向けの記事です。

本連載のツール比較では、eコマースストアの売上データを用いて、

  • 単価と配送料の合計に占める配送料の割合が低い
  • 単価が高い
  • 売上ボリュームが大きい

の条件を満たす製品カテゴリを選ぶための集計と可視化を行いました。

同じ課題設定のもと、ローカルPC上に保存されている CSV データ をPower BI サービス にインポートし、以下のダッシュボードを作成するまでの流れをご紹介します。
image.png

ダッシュボードはこちら で公開してます。

連載目次

Azureデータ分析入門 #1 【はじめに】
Azureデータ分析入門 #2 【ツール比較 Excel編】
Azureデータ分析入門 #3 【ツール比較 Azure Notebook編】
Azureデータ分析入門 #4 【ツール比較 Databricks編】
Azureデータ分析入門 #5 【Databricks → Power BI Desktop】
Azureデータ分析入門 #6 【CSVデータ → Power BI サービス】 → 今回の記事
Azureデータ分析入門 #7 【AutoML でタイタニック号の生存者予測】

作業環境

今回はブラウザ上で作業が完結可能な Power BI サービス でダッシュボードを作成します。Power BI の概要、および Power BI Desktop と Power BI サービスの違いについては 前回の記事をご参照ください。

データのダウンロード/インポート

ツール比較で使用した3つのデータを結合加工したCSVデータを使用します。11万行程度のデータですので、散布図の描画はかなり重い処理になるはずですが、そのあたりはうまいことやってくれるオプションがありますので、今回はそのままデータを使用します。

こちらから zip ファイルをダウンロード、解凍しておきます。

Power BI サービス にサインアップします。
image.png

データの取得タブで、ファイルの取得をクリック
2019-12-09_18h35_50.png

ローカルファイルを選択し、ダウンロードしたファイルの中から、table for Power BI.csvを選択、インポートします。
image.png

データセットの...をクリック
image.png

完了するとこちらの画面に遷移します。
image.png

各要素の作成

このダッシュボードは、以下5つの要素で構成されています。それぞれの作成手順を紹介します。
image.png

カード

指定した列の合計や平均を出すことができます。目立たせたい数値を乗じさせるのにぴったりです。単価の合計、運賃の合計の2カテゴリそれぞれ作成。
card.gif

スライサー

指定列で条件の絞り込みができます。カテゴリごとの売上高ランキング、参照データ全体のカテゴリ別送料比率、販売月の3カテゴリで作成。
slicer.gif

テーブル

統計値の一覧表などを出しておくのに有用です。
table.gif

ツリー図

カテゴリごとの売り上げ比率を可視化します。価格合計も表示しておきます。
tree.gif

散布図

X軸に運賃、Y軸に単価に設定し、ここの売り上げデータが、カテゴリごとに色分けして表示される散布図を作成します。
scatter.gif

今回作成した要素の中では、散布図が一番いじるポイントが多かったので補足解説します。
ペイントロールアイコンから、書式の変更やグラフの描画範囲を設定が可能です。
2019-09-30_11h35_43.png

ローデータのサンプル数が約11万で、一画面中の表示数としては多すぎます。このような場合は高密度サンプリングオプションをオンにすることで、描画時間の長さによる UX の低下を防ぐことができます。今回は表示されるサンプル数を 3500 個としています。
2019-09-30_11h35_21.png

要素が集中している箇所が表示されるように、X軸の表示範囲を以下のように設定してみました。
2019-09-30_11h36_27.png

Y軸も同様。
2019-09-30_11h37_00.png

データの傾向が見やすくなるように、図形のサイズを変更します。
2019-09-30_11h37_30.png

回帰直線を簡単に引くことができます。
2019-09-30_11h38_26.png

動かしてみる

要素の位置やデータラベルを調整してできた完成形がこちら。ほとんどマウスだけの処理でこのようなダッシュボードができます。すごい…
image.png

以下の条件でスライサを絞り込みます

  • 売上高がトップ10以内
  • 送料の占める割合が12%以下
  • 9月~12月の売上

dashboard.gif

カテゴリごとの特徴もマウスオーバーの操作で簡単に確認できます。
dashboard2.gif

まとめ

時系列データの可視化には Power BI Desktop が必要になってきますが、事前に集計ラベルが付与されているデータであれば、基本的にはエクセルのピボットグラフに似た操作感でグラフ化できます (レイアウトにこだわると時間が簡単に溶けてくので注意しましょう)

次回はデータ分析入門の最終回として、Azure AutoML を使って、タイタニック号の生存者予測をしてみます。お楽しみに!

参考サイト

Power BI Desktop とは何ですか?


Databricks でワインの品質を予測するモデルを構築 2

はじめに

前回の記事の続編、Azure Databricks で機械学習モデルを構築する例を試していきます。

データの前処理

モデルをトレーニングする前に、欠損値をチェックし、データをトレーニングセットと検証セットに分割します。

[crayon-60989ceba9710574599581/]

2020-09-01_16h59_32.png

欠損値はありません。

[crayon-60989ceba9719563834125/]

ML flow を使う準備

Workspace → ユーザー名 → プルダウンで Createと進み、MLflow Experiment をクリックします。
image.png
任意で名前をつけます。
image.png
この画面に遷移します。Experiment ID は Notebook の中で使うのでメモしておきます。
image.png

mlflow をインストールするために、以下のコマンドを実行します。

[crayon-60989ceba9720843798030/]

ベースラインモデルの構築

出力はバイナリであり、複数の変数間に相互作用がある可能性があるため、このタスクはランダムフォレスト分類器に適しているようです。

次のコードは、scikit-learnを使用して単純な分類子を作成します。
MLflowを使用してモデルの精度を追跡し、後で使用するためにモデルを保存します。

[crayon-60989ceba9725421492980/]

モデルによって出力された、学習された機能の重要性を調べます。

[crayon-60989ceba972a375207768/]

image.png

前に示した箱ひげ図に示されているように、品質を予測するにはアルコールと密度の両方が重要です。

ROC曲線下の面積(AUC)をMLflowに記録しました。
右上の「実験」をクリックして、実験実行サイドバーを表示します。

モデルは0.89のAUCを達成しました。

ランダム分類子のAUCは0.5であり、AUC値が高いほど優れています。

MLflowモデルレジストリへのモデルの登録

このモデルをモデルレジストリに登録すると、Databricks内のどこからでも簡単にモデルを参照できます。

次のセクションでは、これをプログラムで行う方法を示しますが、「モデルレジストリにモデルを登録する」 の手順に従って、UIを使用してモデルを登録することもできます。

[crayon-60989ceba972f043555178/]
[crayon-60989ceba9733323267773/]

[モデル]ページにワイン品質のモデルが表示されます。
「モデル」ページを表示するには、左側のサイドバーの「モデル」アイコンをクリックします。

次に、このモデルを本番環境に移行し、モデルレジストリからこのノートブックにロードします。

[crayon-60989ceba9736652866810/]

「モデル」ページに、ステージ「生産」のモデルバージョンが表示されます。

パス「models:/ wine-quality / production」を使用してモデルを参照できるようになりました。

[crayon-60989ceba9739758120428/]

新しいモデルを試す

ランダムフォレストモデルは、ハイパーパラメーター調整なしでもうまく機能しました。

次のコードは、xgboost ライブラリを使用して、より正確なモデルをトレーニングします。
Hyperopt と SparkTrials を使用して、並列ハイパーパラメータースイープを実行し、複数のモデルを並列にトレーニングします。
以前と同様に、コードはMLflowを使用して各パラメーター構成のパフォーマンスを追跡します。

[crayon-60989ceba973c481335030/]

次回は結果を表示していきます。3へ続きます。

公式リンク

Databricks


Databricks でワインの品質を予測するモデルを構築 1

はじめに

今回は初、Databricksに触れていきます。
機械学習の構築で難しいところは、データソースに欠損値が含まれていたり、メモリに収まらない可能性があることです。
さらに、アルゴリズムの知識だけでなく、マシンアーキテクチャと分散システムの知識も必要とされます。

Databricksを使う良さ

image.png

Databricks はそんな気難しい機械学習プロセスを、簡略化します。
表形式のデータで、機械学習モデルをトレーニングするエンドツーエンドの例をチュートリアルでやっていきます。

手順について

このチュートリアルでは、次の手順について説明します。

  • ローカルマシンから、Databricksファイルシステム(DBFS)にデータをインポートする
  • Seabornとmatplotlibを使用して、データを視覚化する
  • 並列ハイパーパラメータースイープを実行して、データセットで機械学習モデルをトレーニングする
  • MLflowを使用して、ハイパーパラメータースイープの結果を調べる
  • MLflowで最もパフォーマンスの高いモデルを登録する
  • Spark UDFを使用して、登録済みモデルを別のデータセットに適用する

この例では、ワインの物理化学的特性に基づいて、ポルトガルの 『Vinho Verde』ワインの品質を予測するモデルを作成します。

物理化学的特性からの、データマイニングによるワインの好みのモデリング [Cortez et al。2009] に示されている
『UCI Machine Learning Repository』のデータセットを使用しています。

クラスターの起動

Databricksランタイム6.5 ML以上を実行しているPython 3クラスターを起動します。
image.png
image.png

ファイルのアップ

このセクションでは、Webからデータセットをダウンロードして、Databricksファイルシステム(DBFS)にアップロードします。

https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/
この両方をダウンロードします。
[winequality-red.csv][winequality-white.csv]

このDatabricksノートブックから、[ ファイル] >>[ データのアップロード]を選択し、このファイルをドラッグアンドドロップターゲットにドラッグして、DBFSにアップロードします。
2020-08-27_11h27_25.png
2020-08-27_13h30_31.png

[ファイル] >>[ データのアップロード ]オプションがない場合は、Databricksサンプルデータセットからデータセットをロードできます。
コードの最後の2行をコメント解除して実行します。

データをロードするための自動生成コードが表示されます。
image.png

データをマージする

pandasをインポートし、サンプルコードをコピーします。
新しいセルにコードを貼り付けます。

[ファイル]>>[データのアップロード]メニューオプションがある場合は、前のセルの指示に従って、ローカルマシンからデータをアップロードします。

pandas を pd としてインポートします。
次の行で、『username』をユーザー名に置き換えます。

[crayon-60989cebaa16c607384035/]

ワインが赤か白かを示す新しいバイナリ機能「is_red」を使用して、2つのデータフレームを1つのデータセットにまとめます。

[crayon-60989cebaa173684466566/]

image.png

データを可視化する

モデルをトレーニングする前に、Seaborn と Matplotlib を使用してデータセットを探索します。
従属変数(関数 y =f (x )において、独立変数 x の変化に応じて変わる y をいう語。)である、品質のヒストグラムをプロットします。

[crayon-60989cebaa176847140615/]

image.png

品質スコアは通常3から9の間に分布しているようです。
品質が7以上のワインを高品質と定義します。

[crayon-60989cebaa178531223840/]

ボックスプロットは、特徴とバイナリラベルの間の相関関係を知るのに役立ちます。
matplotlibをインポートします。
pyplot として PLT と記します。

[crayon-60989cebaa17a320925696/]

image.png

上記の箱ひげ図では、いくつかの変数が品質の一変量予測子として際立っています。

アルコールボックスプロット

  • 高品質ワインのアルコール度数の中央値は、低品質ワインの75分位よりも高くなっています。 高アルコール含有量は品質と相関しています。

密度ボックスプロット

  • 低品質のワインは高品質のワインよりも密度が高くなっています。 密度は品質と反比例します。

では2に続きます。

公式サイト

databricks


Azure Databricks クラスター実行履歴確認・費用概算

はじめに

Azure Databricks 利用に際しあらかじめ運用コストを把握しておきたいところですが、ワークロードの性質や規模によって計算負荷が大きく変わってくるため、見積もりそのものが困難です。

本稿では Azure Databricks Workspace 上でクラスタの実行履歴を確認、その利用料金を概算する手順を示します。※以下の記事で利用したクラスタの履歴/概算

金融取引データから異常検知
1. 導入/環境設定
2. Collaborative Notebook でデータ可視化
3. Anomaly Detector をデータ探索ツールとして使ってみる
4. 1つ目のモデル構築 (データの偏り 未考慮)
5. 2つ目のモデル構築 (データの偏り 考慮)

クラスタ実行履歴確認

Cluster から Notebook に紐づけたクラスターを選択。
2020-09-04_13h21_39.png

赤枠で囲っている履歴の料金を算出してみます。おおよそ 5 時間、Auto Scaling が働かない状態でクラスタが起動していたようです。
2020-09-04_13h35_30.png

この時はクラスタ起動の直前に設定項目を変えています。EDITED をクリックすると、変更前後の設定を確認できます。以下は一部抜粋。Notebook の編集や可視化メインでモデリング処理はやらないつもりだったのでしょう。クラスタのスペックを下げ、Auto Scaling を長めに設定しています。

EventType_EDITED
[crayon-60989cebaaa15808182474/]

つまり、

  • Standard_DS3_v2 インスタンスが、
  • driver と worker で 1 台づつ、
  • 5 時間稼働した

ことになります。

料金算出

公式サイトから単価を拾い、Azure Databricks の利用料金を算出します。仮想マシン (VM) と、選択した VM インスタンスに基づく Databricks の単位 (DBU) に対して課金されるので、従量課金制の合計額の項目を参照。

77.448 (インスタンス単価) x 2 (起動台数) x 5 (実行時間) ≒ 800 円弱
2020-09-04_14h40_11.png

備考:メトリクス確認方法

ビッグデータ解析や各種バッチ処理を行う場合には、何回か実験を繰り返して費用対効果の高い構成にする必要があるはずです。Metrics から任意の Name を選択すると、
2020-09-04_14h16_21.png

メトリクスのスナップショットを取得できます。Azure Monitor や Datadog との連携も可能。
image.png

おわりに

従量課金型なので実際に試してみて利用料金を見てみるのが手っ取り早いです。

参考サイト

Azure Databricks の価格
databricks configure metrics collection


Databrciks 事例紹介 ~教育編~

はじめに

本記事では Databrciks の教育業界での事例をご紹介いたします。
【掲載事例】
McGraw-Hill Education
公式事例URL: https://databricks.com/customers/mcgraw-hill-education
ウエスタンガバナーズ大学
公式事例URL: https://databricks.com/customers/western-governors-university

McGraw-Hill Education

image.png

ユースケース

  • 企業とユーザーとの関係性の強さと定着率を向上させる
  • 個別学習
  • 機械学習の活用
  • 取り込みや ETL 処理

課題

  • 効果的なデータ分析が必要
  • 市場投入までの時間の短縮
  • 学習者への取り組みと適応

成果

  • 1000 万以上の個々の学生のやり取りが正常にキャプチャ、集約、分析され学生の定着率を 19% 以上向上できました。
  • 機械学習を使用して、生徒の理解度のレベルを分析し、推奨事項を提供して生徒の合格率を 13% 向上できました。
  • 550 万人をこえる学生にソリューションをより迅速かつ効果的に提供できました。
  • 運用コストが 30% 削減されました。

ウエスタンガバナーズ大学

image.png

ユースケース

  • 学生のプロファイル、マーケティングデータ、評価データなどの様々なデータに基づく内部意思決定
  • データ処理時間の短縮
  • 機械学習の活用

課題

  • データ量が増加していくことでデータ処理を集中的に短期間で行いたい。
  • 様々なデータをエンドユーザーが簡単に保存・整理・アクセスできる仕組みの構築。
  • データサイエンティストが行うべき仕事ではない作業に時間がかかっていた。

成果

  • クラスター管理が自動化されクラスターのプロビジョニングが簡素化されました。それにより、データサイエンティストが本来の仕事に多くの時間をかけることが可能になりました。
  • Databricks のワークスペースにより、データサイエンティストの開発環境が向上しました。
  • 複数のプログラミング言語がサポートされたことで、様々なスキルを持つチームがデータにアクセスして分析が可能になりました。
  • ETL 処理が向上し、夜間の ETL でのジョブの実行にかかる時間を 3 時間から 10 分未満に短縮されました。
  • クエリの応答時間を 30 分以上から数秒に短縮できました。

おわりに

Databricks は教育業界での様々なデータに対応できる親和性の高いサービスになっています。

参考

【お客様の成功事例】
公式 URL: https://databricks.com/jp/customers


Databricks事例紹介 ~医療編~

はじめに

今回はDatabricksの医療業界での事例をご紹介させていただきます。
【掲載事例】
1.REGENERON
公式事例URL : https://databricks.com/customers/regeneron
2.SANFORD
公式事例URL : https://databricks.com/customers/sanford-health
3.OPTUM
公式事例URL : https://databricks.com/customers/optum

REGENERON

2020-09-03_09h26_57.png

ユースケース

大容量のゲノムデータを分析し、新薬の開発を効率化しました。

課題

REGENERONでは新薬開発のために、
40万人分以上の遺伝子データを記録したデータベースを構築しました。
しかし、それらのデータを戦略的に活用するには以下の課題がありました。

  • ゲノムデータと臨床データが複雑に分散している
  • 10TBのデータセットのETL処理だけで何日もかかる
  • データ量が多いため、モデルの分析およびトレーニングは困難を極めた

成果

  • データセット全体に対してのクエリ実行時間が30分から3秒に短縮(600倍の高速化)
  • 共同作業環境を構築できたことで、エンジニアチームとしての生産性が向上
  • 分析環境の管理を自動化
  • ETL処理全体が3週間から2日に短縮

SANFORD

2020-09-03_09h27_31.png

ユースケース

大規模な患者データセットから
(10万人分以上の遺伝子データ、医療画像、健康記録など)
慢性疾患の原因となる遺伝子疾患を特定し、
患者ごとに最適化された治療を提供する基盤を構築しました。

課題

分析環境を構築するにあたり、以下のような問題がございました。

  • エンジニアリングやインフラ知識の不足
  • 上記が原因で、分析基盤のセットアップや拡張が困難
  • 機械学習を大規模に実行するために、数か月または数年も準備する必要があった

成果

  • データから知見を得るのに数日から数時間に短縮
  • データエンジニアリングと運用を簡素化
  • データをモデルに組み込むことが簡単になり、予防ケアと精密医療の提供を推進

OPTUM

2020-09-03_09h26_31.png

ユースケース

病院から保険会社への医療保険請求から
過小支払いを検出をするのに利用しました。

課題

  • 1日あたり数百万件の請求から、8時間以内に病院に結果を返す必要があった
  • データ規模の拡大につれて、パフォーマンスの課題が増大
  • 計算パフォーマンスの拡張が困難
  • 現状の計算に莫大なコストが発生

成果

  • 8000万件の処理をする時間が86分間から160分間に短縮
  • 分析の高速化により、失われる可能性のあった数百万ドルの収益を節約
  • オートスケーリングにより計算コストを最適化
  • あらゆる形式のデータの取り込みが容易に

おわりに

Databricksは大容量の臨床データなどを分析するのピッタリなサービスですので
非常に医療との親和性は高いです。

参考リンク

https://databricks.com/jp/customers