In-Database Analyticsの必要性と可能性

41
In-Database Analyticsの 必要性と可能性 永安 悟史 @snaga In-Database Analyticsの集い #1

Transcript of In-Database Analyticsの必要性と可能性

Page 1: In-Database Analyticsの必要性と可能性

In-Database Analyticsの必要性と可能性

永安 悟史@snaga

In-Database Analyticsの集い #1

Page 2: In-Database Analyticsの必要性と可能性

永安 悟史• 略歴

– 2004年 某大学院 修了– 2004年 NTTデータ 入社(~2009)– 2009年 アップタイムテクノロジーズ 創業 代表(現職)– 2012年 某ビジネススクール 修了(MBA)– 2013年 某ヘルスケアベンチャー CTO (~2015)

• 専門領域– データベース、データマネジメント– IT基盤全般、データセンタ、IT運用– 次世代型のR&D、テクノロジー・マネジメント(MOT)、および

ICTによる意思決定プロセスの向上、戦略の遂行能力の向上に特に強い関心を持つ。

@snaga

Page 3: In-Database Analyticsの必要性と可能性

• やってきたこと– 遊休リソースを用いた相同性検索処理の並列化とその評価– 並列分散PostgreSQL研究開発– データセンターサービス開発、運用– レセプト、健康診断データ分析、製薬企業との共同研究– 某研究所の研究開発のお手伝い– 数千万人の会員データのDWH構築– 10 Reasons to Start Your Analytics Project with PostgreSQL– In-Database Analytics– 小規模・中規模データベースにおけるアナリティクス

• 領域– 遺伝子配列解析、細胞シミュレーション– 分散処理、HPC– オープンソース、インターネット– データセンター、クラウド– データウェアハウス、ビジネスインテリジェンス

永安 悟史

@snaga

Page 4: In-Database Analyticsの必要性と可能性

本セッションの目的• In-Database Analyticsとは何かを知って興味を持

っていただく

• PostgreSQLで今できることを知っていただく

• In-Database Analytics仲間を増やす

Page 5: In-Database Analyticsの必要性と可能性

本日の内容• In-Database Analytics とは何か• なぜ In-Database Analytics が必要なのか• In-Database Analytics on PostgreSQL の可能性• 最短経路探索 pgRouting の紹介• 機械学習ライブラリ Apache MADlib の紹介(とデ

モ)• まとめ

Page 6: In-Database Analyticsの必要性と可能性

In-Database Analyticsとは何か

Page 7: In-Database Analyticsの必要性と可能性

In-Database Analyticsとは何か• In-database processing, sometimes referred to as in-database

analytics, refers to the integration of data analytics into data warehousing functionality. Today, many large databases, such as those used for credit card fraud detection and investment bank risk management, use this technology because it provides significant performance improvements over traditional methods.

• In-Database処理、時には In-Database Analytics と呼ばれるものは、データアナリティクスをデータウェアハウス機能の中に統合したものです。今日では、クレジットカードの不正利用の検知や投資銀行におけるリスク管理などの多くの大規模データベースが、伝統的な方法と比較して飛躍的にパフォーマンスが向上する、このテクノロジーを使っています。

In-database processing – Wikipediahttps://en.wikipedia.org/wiki/In-database_processing

Page 8: In-Database Analyticsの必要性と可能性

In-Database Analyticsとは何か

In-Database Analytics の進化。サンプル数が 100 億行になっても圧倒的性能を記録http://www.intel.co.jp/content/www/jp/ja/big-data/xeon-e5-v3-in-database-analytics-ntt-data-study.html

Page 9: In-Database Analyticsの必要性と可能性

In-Database Analyticsとは何か• In-database processing makes data analysis more accessible and

relevant for high-throughput, real-time applications including fraud detection, credit scoring, risk management, transaction processing, pricing and margin analysis, usage-based micro-segmenting, behavioral ad targeting and recommendation engines, such as those used by customer service organizations to determine next-best actions.

• In-Database処理は、データ分析を、よりアクセス可能かつ高スループットでリアルタイムなアプリケーションにします:不正検知、クレジットスコアリング、リスク管理、トランザクション処理、価格や利益分析、利用実績に基づくマイクロセグメンテーション、行動に基づく広告ターゲティング、レコメンデーションエンジンなど、「次の最適なアクション」を見つけるために顧客サービスを行う組織によって利用されています。

In-database processing – Wikipediahttps://en.wikipedia.org/wiki/In-database_processing

Page 10: In-Database Analyticsの必要性と可能性

In-Database Analyticsとは何か• Types

– Translating models into SQL code– Loading C or C++ libraries into the database process space– Out-of-process

• 種類– モデルをSQLに翻訳する– C/C++のライブラリをデータベースのプロセス空間に持ち込む– データベースのプロセス空間の外で処理する

In-database processing – Wikipediahttps://en.wikipedia.org/wiki/In-database_processing

Page 11: In-Database Analyticsの必要性と可能性

In-Databaseのパフォーマンス

• In-DatabaseとOut-of-Databaseで約70倍の差– 500次元の空間ベクトル、10,000レコードのコサイン類

似度を計算

コサイン類似度に基づくソート処理の実装方法とその性能比較http://pgsqldeepdive.blogspot.jp/2017/01/consine-similarity-performance.html

Page 12: In-Database Analyticsの必要性と可能性

In-Database Analyticsとは何か

• データベースからデータを取り出さない

• データに近いところに分析処理そのものを持っていく

• そのことによってスループットとレスポンスタイムを劇的に改善させる

Page 13: In-Database Analyticsの必要性と可能性

なぜ In-Database Analytics の可能性が高いのか

Page 14: In-Database Analyticsの必要性と可能性

In-Database Analytics の可能性が高い4つの理由

• データのサイズと種類

• 分析手法の普及

• 複雑なSQLとアナリティクスの統合

• SQLを使えるエンジニアの存在

Page 15: In-Database Analyticsの必要性と可能性

理由1:データのサイズと種類• 使ってるデータベース、何GBですか?

• 商品マスタ、会員マスタ、購買履歴、どこにありますか?

• 新しいデータはどこから入ってきて、どこから出ていきますか?

Page 16: In-Database Analyticsの必要性と可能性

理由2:分析手法の普及• 分析手法は広く知られるようになった

• 価値は「データ > 手法・スキル」になりつつある

• あとは実際に実践するだけ。誰でも使えるようになる必要がある

• 「NATO (No Action, Talk Only)」にならないように

Page 17: In-Database Analyticsの必要性と可能性

理由3:複雑なSQLとアナリティクスの統合

• SQLはデータの取得、加工、集計の機能を拡充させてきた

• 結局、みんなSQLを使いたい

• 「SQLの上」にアナリティクスを載せるのが現実的なソリューション

Page 18: In-Database Analyticsの必要性と可能性

理由4:SQLを使えるエンジニアの存在

• SQLを書けるエンジニアは大勢いる

• Pythonで機械学習書ける人(scikit-learn使いこなせる人)とどちらが多いか

• SQLを書けるエンジニアが、 (使い方を理解した上で) UDFを呼び出せばよい

• SQLの機能もそのまま使える

Page 19: In-Database Analyticsの必要性と可能性

In-Database Analytics on PostgreSQL の可能性

Page 20: In-Database Analyticsの必要性と可能性

In-Database Analytics on PostgreSQL の可能性

• RDBMSとしての豊富な機能

• ソフトウェアとしての拡張性

• データベースらしい使い方

Page 21: In-Database Analyticsの必要性と可能性

データベースらしい使い方• WHERE句によるデータの絞り込み

• ORDER BY句によるソート

• 使用するデータ項目(カラム)の取捨選択

Page 22: In-Database Analyticsの必要性と可能性

最短経路探索pgRoutingの紹介

Page 23: In-Database Analyticsの必要性と可能性

pgRoutingとは

Page 24: In-Database Analyticsの必要性と可能性

巡回セールスマン問題と聖地巡礼の最適化

巡回セールスマン問題における最短経路をpgRoutingで探索するhttp://pgsqldeepdive.blogspot.jp/2016/09/pgrouting.html

Page 25: In-Database Analyticsの必要性と可能性

聖地巡礼マエショリ

Page 26: In-Database Analyticsの必要性と可能性

聖地巡礼マエショリ

Page 27: In-Database Analyticsの必要性と可能性

Let’s 聖地巡礼

SELECT * FROM pgr_tsp('SELECT sid id, lat x, lon y FROM seichi ORDER BY sid', 1);

Page 28: In-Database Analyticsの必要性と可能性

Let’s 聖地巡礼

Page 29: In-Database Analyticsの必要性と可能性

Let’s 聖地巡礼

Page 30: In-Database Analyticsの必要性と可能性

聖地巡礼最短経路の可視化

Page 31: In-Database Analyticsの必要性と可能性

機械学習ライブラリApache MADlibのご紹介

Page 32: In-Database Analyticsの必要性と可能性

Apache MADlibとは• オープンソースの機械学習ライブラリ

– PostgreSQL、Greenplum Database、Apache HAWQと組み合わせて使用可能。

– In-Databaseで動作。– 多くの機械学習アルゴリズムを実装済み。

http://madlib.incubator.apache.org/

Page 33: In-Database Analyticsの必要性と可能性

ユースケース

Apache MADlib (Incubating) User Survey Results Oct 2016http://madlib.incubator.apache.org/community-artifacts/Apache-MADlib-user-survey-results-Oct-2016.pdf

Page 34: In-Database Analyticsの必要性と可能性

機能

MADlib: Distributed In-Database Machine Learning for Fun and Profithttps://archive.fosdem.org/2016/schedule/event/hpc_bigdata_madlib/

Page 35: In-Database Analyticsの必要性と可能性

デモ• 高度な機械学習のデモでありません

• どこでも応用可能なシンプルな使い方

• 「似ている順に商品をソートしたい」

• シンプルなマスタを使って実現する

Page 36: In-Database Analyticsの必要性と可能性

デモ• IMDBのデータ from Kaggleを使用

• 監督、俳優、カテゴリ、キーワード、国、言語の項目を使用

• データの前処理から手順を説明

• 映画をひとつ指定して、それに似ている順番にソートする

Page 37: In-Database Analyticsの必要性と可能性

デモ• 映画データのマスタを空間ベクトルに変換して、類

似度でソート

CSV マスタ unnest

vector 検索

Page 38: In-Database Analyticsの必要性と可能性

デモ• デモで使った資材は以下を参照。

– https://github.com/snaga/apache-madlib-imdb-demo

Page 39: In-Database Analyticsの必要性と可能性

ベクトル化とは• カテゴリー変数をダミー変数に変換すること

– MADlibではencode_categorical_variables関数

機械学習によるデータ分析まわりのお話https://www.slideshare.net/canard0328/ss-44288984

Page 40: In-Database Analyticsの必要性と可能性

まとめ

Page 41: In-Database Analyticsの必要性と可能性

まとめ• In-Database Analytics とは何か

• なぜ In-Database Analytics なのか

• PostgreSQLで使えるソフトウェア実装としてのApache MADlibのご紹介

• ぜひデータをいじってみましょう