[書評]Sparkによる実践データ解析

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Sparkによる実践データ解析を株式会社三菱UFJトラスト投資工学研究所の阿部一也様から弊社に寄贈いただきました。ありがとうございます! *1

picture_large978-4-87311-750-8

全体を通しての感想

一通り読んだ感想としては、SparkのMLlibを利用を検討している方は間違いなく読んだ方がいいですし、MLlibの利用予定はなくとも機械学習でどんなことが出来るのか興味を持っている方にもおすすめできる内容かと思います。本書の特によいと思った点はモデルの構築と評価だけでなく、データクレンジングやデータの探索、ハイパーパラメータの選択についても触れている点です。また、統計や機械学習の理論面は概要に留め、利用事例毎にどのようなコードを書けばよいかがその理由と共に載っているため、自分で実際に各種手法を利用する際の参考になります。なお、扱っている分野(事例)が幅広いため、自分が興味を持っている章のみ読むという読み方でもよいかと考えます。

各章の紹介

1章 ビッグデータの分析

本書をどういう意図で企画したかとか、Sparkの簡単な紹介が載っています。数ページですので、目を通した方がよいかと考えます。

2章 ScalaとSparkによるデータ分析の紹介

Sparkの説明と本書で利用するScalaの構文に関する解説です。コンパクトにまとまっていますし、書籍内で示されるコードを読む上では目を通した方がよいかと考えます。

3章 音楽のレコメンドとAudioscrobblerデータセット

last.fmが配布したデータセットを用いて交互最小二乗法(Alternating Least Squares = ALS)によるレコメンデーションエンジンの構築方法について説明しています。評価指標であるAUCの算出方法や交差検証のやり方、ハイパーパラメータが紹介されています。そしてハイパーパラメータをどのように選択していくかについてのコードとその解説が述べられています。

4章 決定木を使った森林被覆の予測

決定木とランダムフォレストを用いた多項分類の実装例です。Covtypeデータセットに対してまず決定木を用いて分類を実施し、次にランダムフォレストを適用します。その中で分類と回帰/ベクトル/質的特徴/量的特徴/one-hotエンコーディング/混同行列などを紹介しています。

5章 K平均クラスタリングを使ったネットワークトラフィックにおける異常の検出

K平均法によるクラスタリングの実装例です。KDD Cup 1999データセットにK平均法を適用して異常なトラフィックを検出可能なモデルを作成します。その中でRによる可視化と特徴の正規化なども紹介しています。異常の検出にクラスタリングを利用できるというのは知らなかったので面白かったです。

6章 潜在意味解析を使ったWikipediaの理解

Wikipediaの文書に潜在意味解析(Latent Semantic Analysis = LSA)を適用します。XMLから記事の抽出、レンマ化、TF-IDFの計算、特異値分解(SVD)(とセットで次元圧縮)を行い、実際にクエリを発行する所まで紹介されています。

7章 GraphXを使った共起ネットワークの分析

MLlibではなくGraphXというグラフ処理フレームワークを利用したネットワーク分析の実装例です。MEDLINEのXMLから引用情報(MeSH)を抽出し、GraphXを用いて共起グラフを構築して、ネットワークの分析を実施します。具体的には次数分布にカイ二乗検定を適用しグラフのフィルタリングを行います。またPregel APIの利用例としてノード群の平均パス長を計算しています。グラフ処理の具体的な分析事例は知らなかったので面白かったです。

8章 ニューヨーク市のタクシーの移動データに対する地理空間及び履歴データ分析

履歴データと地理空間データの分析例です。ニューヨーク市のタクシーの乗降データとニューヨーク市の行政区地図のGeoJSONデータを使って、タクシーの運転手が乗客を下ろした行政区と次の乗客を捕まえるまでにかかった時間との関係性を調査します。時間の操作にJodaTimesとNScalaTimeを利用し、GeoJSONの操作にEris Geometory APIとSprayを利用しています。また、データを運転手毎に時系列にまとめるためのセッション化の実装方法についての解説もあります。

9章 モンテカルロシミュレーションによる金融リスクの推定

モンテカルロシミュレーションの実装例です。株価の履歴データとリスクファクターからVaRを算出します。シミュレーションの並列実行にSparkを利用しており、最小二乗回帰や固有値分解はMLlibではなくApache Commons Mathを利用しています。私はこの分野に関する知識がないので、とりあえず目を通してみたというのが正直な所です(^_^;)

10章 ゲノムデータの分析とBDGプロジェクト

ゲノム分析のプラットフォームであるADAMの紹介です。ADAMはSparkとAvroとParquetを利用しており、本説ではAvroとParquetについても解説しています。そのため、ゲノムデータ分析に関わらない方であっても、Spark上でのAvroとParquetの利用方法について理解する目的で読むと良いのではないかと考えます。

11章 PySparkとThunderを使った神経画像データの分析

大量の空間/時系列データセットをSparkで処理するためのPythonのツールセットであるThunderの紹介です。PySpark上でThunderのチュートリアルであるゼブラフィッシュの脳画像データをK平均法用いてクラスタリングします。PySparkの利用方法について理解する目的で読むと良いのではないかと考えます。

付録

本編の他に付録が4つあります。

  • 付録A Sparkの詳細
  • 付録B MLlib Pipelines API
  • 付録C SparkRについて
  • 付録D SparkのJVM、OSレベルのチューニングによる高速化

最後に

ご購入される方は以下のリンクをご利用下さい。オライリーのサイトからはEbook版を購入することも可能なようです。

脚注

  1. 1月末には寄贈いただき、2月中旬には読み終わっていたのですが、ブログを書くことが遅くなり申し訳ございません。。