アルパカログ

ゼロから作り始める前に読んでほしい「仕事ではじめる機械学習」まとめ

2018年5月28日
🔖機械学習🔖読書メモ

「仕事ではじめる機械学習」は、ディープラーニング入門の1冊目と言われる「ゼロから作るDeep Learning」の次に読むのがおすすめです。

なぜなら「ゼロから作るDeep Learning」は、初心者にもわかりやすいがゆえに「あらゆる問題がディープラーニングで解決できてしまうのでは」という万能感を感じさせてしまうからです。

本書は、そんな幻想に「待った」をかけてくれます。

本書の一文をご紹介しましょう。

「機械学習は技術的負債の高利貸しのクレジットカード」というタイトルの論文があるほど、機械学習を含んだシステムは通常のシステム以上に技術的負債が蓄積しやすいのです。

このエントリでは、「仕事ではじめる機械学習」の内容をまとめます。

1章 機械学習プロジェクトのはじめ方

機械学習プロジェクトの流れについて、何をどういった順で行うのかが説明されています。

  1. 問題を定式化する
  2. 機械学習をしないで良い方法を考える
  3. システム設計を考える
  4. アルゴリズムを選定する
  5. 特徴量、教師データとログの設計をする
  6. 前処理をする
  7. 学習・パラメータチューニング
  8. システムに組み込む

特筆すべきはやはり「2. 機械学習をしないで良い方法を考える」でしょう。

前述したように、機械学習は技術的負債が蓄積しやすい技術です。機械学習以外の既存技術で実現できるのならコストの高い方を選ぶ道理はないでしょう。

機械学習の研究では4と7について重点的に取り扱いますが、実務では1~8の全てを行う必要があります。この事実だけでも機械学習プロジェクトの難しさが想像できます。

では成功させるためにはどうしたら良いのでしょうか?著者は次の4者の存在が重要だと述べています。

  1. プロダクトに関するドメイン知識を持った人
  2. 統計や機械学習の明るい人
  3. データ分析基盤を作れるエンジニアリング能力のある人
  4. 失敗しても構わないとリスクを取ってくれる責任者

人工知能を扱える人材は先端IT人材と呼ばれ、需要に対して供給が大きく不足しているという現状があります

私自身に当てはめて考えてみますと、CREという職種柄、ある程度CSに関するドメイン知識があります。

今は機械学習の勉強中なので、1と2を兼ね備えた人材を目指していけば市場価値のある人材になれそうです。

2章 機械学習で何ができる?

機械学習でできることを次のように分けて、それぞれのアルゴリズムの特徴を説明しています。

分類

本書では次のアルゴリズムが紹介されています。

ここではロジスティック回帰、SVM、k-NN、ランダムフォレストだけまとめておきます。

ロジスティック回帰

線形分離可能な対象を分離するアルゴリズム。パーセプトロンとの違いは下記。

シンプルな方法であることから、機械学習のアルゴリズムを比較する際のベースラインとしてよく使われる。

SVM

分類問題を解くときに非常によく利用され、線形分離可能なだけでなく非線形分離が必要の問題にも適用できる。

学習も高速で、マージンを最大化することで過学習を抑えることができること、カーネルを使って線形分離不可能なデータでも高次元のベクトルに変換することで線形分離できるという特徴がある。

k-NN

未知のデータが入力された際、近くの既知データk個の所属クラスの多数決によってクラスを決める。非線形分離が必要な問題にも適用できる。

「近くの既知データ」との距離には、2点間の直線の長さであるユークリッド距離や、データ群の平均からの近さだけでなく分散も考慮したマハラノビス距離が用いられる。

ランダムフォレスト

決定木から派生したアルゴリズムで、利用する特徴量の組み合わせをいくつか用意して決定木に学習させ、性能が良かった学習器の予測結果を多数決で決めるというもの。

決定木の決定境界は直線にならないため、線形分離不可能な問題に利用するのが良い。

回帰

教師あり学習の1つで、入力データから連続値を予測する。

本書では次のアルゴリズムが紹介されています。

クラスタリング

教師なし学習の1つで、データの傾向を掴むために使われる。

似ている組み合わせをまとめていく階層的クラスタリング (Hierarchical Clustering)や、距離の近いもの同士をk個のグループの分割する k-means などがある。

次元削減

高次元のデータからできるだけ情報を保存するように低次元のデータに変換すること。

主成分分析 (Principal Component Analysis) が有名だが最近は t-SNE も可視化のために人気がある。

異常検知

外れ値検知 (Outlier Detection) とも言う。通常、異常データの件数はとても少ないため、単純に分類モデルを学習しようとすると常に「正常」を出力してしまう。

データに極端な偏りがあるという特徴から、教師なし学習が使われることが多い。scikit-learn では SVM ベースの One Class SVM などで異常検知ができる。

3章 学習結果を評価しよう

評価の指標として次の4つが紹介されている。

正解率

偏りがあるデータに対して単純な正解率は意味をなさないことがほとんど。

100件中60件がスパムだったとして、100件全てをスパムと判定すると正解率60%になってしまう。

適合率

出力した結果がどの程度正解していたかを表す指標。

スパム分類の例で言えば、スパムと予測したうち本当にスパムだった割合。

再現率

出力した結果が実際の正解全体のうちどの程度カバーしていたかを表す指標。

スパム分類の例で言えば、全スパムのうちスパムであると予測した正解の割合。

F値

適合率と再現率の調和平均。適合率と再現率のバランスが良いほどF値が高くなる。

4章 システムに機械学習を組み込む

タグ