渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

まとめて書評:ネットワーク分析第2版・Rによる自動データ収集・仕事ではじめる機械学習

f:id:TJO:20171208174942p:plain

今年も何冊か書籍をご恵贈いただいたんですが、忙しかったり他に書きたい記事があったりでそのタイミングで書評を書きそびれたものを、大変恐縮ですがこのタイミングでまとめて書かせていただこうかと思います。


ネットワーク分析・第2版(Rで学ぶデータサイエンス8)


f:id:TJO:20170608163938j:plain

ネットワーク分析 第2版 (Rで学ぶデータサイエンス)

ネットワーク分析 第2版 (Rで学ぶデータサイエンス)

後述の黒い本をご恵贈くださるという話をいただいて会社のメールボックスを見に行ったら、まだ来ていなかった黒い本の代わりにメールボックスに入っていたのがこちらの本でした。鈴木先生ならびに共立出版様、遅くなってしまいましたがご恵贈くださいまして有難うございましたm(_ _)m


以前このブログでグラフ・ネットワーク分析のおさらいを一通りやった際にテキストとして引いたのが実は初版本だったんですが、その時は例えば{linkcomm}パッケージに代表されるような複数コミュニティの重複を許すコミュニティ検出手法が載っていなかったということで別の資料を参照していたのでした。


なのですが、今回の第2版では{igraph}, {sna}のみならずその{linkcomm}パッケージの内容もカバーされていて非常に有難い限りです。{linkcomm}も含めて初版本からの加筆点を列挙すると、

  • 第3章:階層的構造に関する指標
  • 第5章:リンクコミュニティ({linkcomm}の話題)
  • 第7章:統計的ネットワーク分析
  • 第8章:社会ネットワークの調査分析法
  • 第9章:ソーシャル・メディアのネットワーク分析
  • 第10章:複雑ネットワーク(大幅改訂)
  • 第11章:ネットワーク描画(大幅改訂)

と広汎に及び、実務でネットワーク分析を手がける立場としては痒いところ以外にも手が届く充実したラインナップになっています。特に第7章の統計的ネットワーク分析のパートはSiena
(Simulation Investigation for Empirical Network Analysis)など全く知らなかった話題についても触れられており、大いに勉強になりました。


個人的には様々な事情からグラフ・ネットワーク分析を手がける機会が多いのですが*1、最近は他の現場でもグラフ・ネットワーク分析を始めたとか手がけているとかいう声を聞くことが増えてきています。にもかかわらず、実務家でも手が出るようなグラフ・ネットワーク分析のテキストというのは和書洋書問わずあまり多くなく、和書となるとそもそも数が非常に限られてしまいます。そのような業界事情の中にあって、こちらのネットワーク分析第2版は多くの実務家にとって確実に必携のテキストだと思います。


Rによる自動データ収集


Rによる自動データ収集: Webスクレイピングとテキストマイニングの実践ガイド

Rによる自動データ収集: Webスクレイピングとテキストマイニングの実践ガイド

こちらが上述の黒い本で、タカヤナギ=サンからご恵贈いただきました。僕はあまりスクレイピングはしないんですが、それでも普通はPythonとかRubyでやるものだと思っていたのでまさかRで全部やるとかいうとち狂った本*2が現れるとは正直夢想だにしていませんでした(笑)。


この本の親切なところは目次をご覧いただければお分かりかと思いますが、

第1部 Webとデータの技術入門

HTML
XMLJSON
XPATH
HTTP
AJAX
SQLとリレーショナルデータベース
正規表現と重要な文字列関数

第2部 Webスクレイピングテキストマイニングのためのツールボックス(Webからのスクレイピング)

統計的テキスト処理
データ分析プロジェクトの管理

第3部 事例集(アメリカ上院議員間のコラボレーション・ネットワーク)

半構造化されたドキュメントから情報を抜き出す
Twitterによる2014年度アカデミー賞予測
名字の地理的な分布のマッピング
携帯電話のデータを集める
商品レビューのセンチメント分析

そもそも第1部でweb周りの技術に明るくない読者のために基礎的なポイントがみんな解説されているんですね。大昔、前々職に採用された頃に新卒エンジニア研修に混じって覚えたような話がみんな載っていて正直懐かしくなりました。また統計的テキスト処理のような「スクレイピングしたらその次にすぐやりそうな分析」についてもカバーされていて、いかにもRでスクレイピングをやりそうな人向けの内容が多いという印象です。Rでゴリゴリオープンデータを集めながらデータ分析をやりたいという人にお薦めできる一冊だと思います。


仕事ではじめる機械学習


仕事ではじめる機械学習

仕事ではじめる機械学習

そして、今年データ分析業界で最大のヒットを記録したのではないかと思われるのがこちらの一冊。既にあちこちに書評ブログ記事が沢山出ていますので、僕からはほんの少しだけ個人的に良かったと思った点を書き添えておきます。ご恵贈くださいました@こと有賀さん、まことに有難うございました。


そもそも、この本が何故そんなに大人気を博したのか?という点ですが、個人的にはNIPS2015論文"Hidden Technical Debt in Machine Learning Systems"で示されたこの図が全てを物語っていると思う次第です。

f:id:TJO:20171208145454p:plain

"Only a small fraction of real-world ML systems is composed of the ML code, as shown by the small black box in the middle. The required surrounding infrastructure is vast and complex"(この図の真ん中にある小さな黒い四角こそが、実世界の機械学習システムにおけるほんのちっぽけな部分たる機械学習コードだ。これに対して周囲を囲む必要なインフラは遥かに広大でなおかつ複雑だ)というキャプションの通り、世間の人々が持て囃す最先端の機械学習(そして昨今では特にDeep LearningやXXNet*3)に関する研究開発やそのコード実装・ライブラリといったものは広大な機械学習システムの世界においてはほんの一部に過ぎません。残りの「広大で複雑なインフラ」も含めて組み上げてこその、実務で使える機械学習だというわけです。


この本は、そんなコード実装以外の広大で多岐に渡る複雑な機械学習のエコシステムについて、実務の様々なシチュエーションに即して豪華著者陣の豊富な実務経験に基づいて解説するもので、僕の知る限り機械学習を手がける実務家にとってはこれ以上ないという素晴らしいバイブルだと思っています。


特にこの本のコンテンツの中で個人的にお薦めしたいのは、第4章です。目次を見るとこういうラインナップになっています。

4章 システムに機械学習を組み込む
  • 4.1 システムに機械学習を含める流れ
  • 4.2 システム設計
    • 4.2.1 混乱しやすい「バッチ処理」と「バッチ学習」
    • 4.2.2 バッチ処理で学習+予測結果をWebアプリケーションで直接算出する(リアルタイム処理で予測)
    • 4.2.3 バッチ処理で学習+予測結果をAPI経由で利用する(リアルタイム処理で予測)
    • 4.2.4 バッチ処理で学習+予測結果をDB経由で利用する(バッチ処理で予測)
    • 4.2.5 リアルタイム処理で学習をする
    • 4.2.6 各パターンのまとめ
  • 4.3 ログ設計
    • 4.3.1 特徴量や教師データに使いうる情報
    • 4.3.2 ログを保持する場所
    • 4.3.3 ログを設計する上での注意点
  • 4.4 この章のまとめ

浅学ながら僕が知る限りでは、機械学習システムのアーキテクチャについてここまで実践的な内容を想定して解説した書籍は、和書ではこれまで皆無だったのではないでしょうか。何よりも、この手の機械学習「システム」に関するノウハウというのは従来の機械学習プレイヤー企業にとっては「秘伝のタレ」のようなものであり、公の場に出てくることは極めて稀か、さもなくばクローズドな勉強会の席で非公開で語られるということが大半だったという印象です。そういう観点から言えば、現段階でこれほどの充実した「実務に即した機械学習」の話題を取り上げた本は極めて貴重だと言って良いかと。


あまりの大人気ぶりに、当初電子版のみでの販売(しかもオライリーさんからの配信のみ)を予定していたはずがいつの間にやら冊子版でも販売されることになったそうですが、僕から見ればむしろ当然のことだと思います。機械学習を実務で手がける人にとってはバイブル、いやそれ以上の何かだと言っても過言ではない、絶対に必携の書です。

*1:詳細は伏せますが

*2:テキスト処理に関してはPythonよりも弱いRでやるとかアタマ大丈夫かと昔はよく思ってました笑

*3:「俺が考えた最強のネットワーク選手権」系のアレです笑