旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【機械学習】「仕事ではじめる機械学習」を読んでのメモ

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

1.2 機械学習プロジェクトの流れ


1. 問題を定式化する
* ○○のために××が必要。そのために機械学習を利用する。機械学習が○○に貢献しているかどうかの判断として、□□をKPIとする

2. 機械学習をしなくて良い方法を考える
* ルールベースで期待する精度が出るのに機械学習を適用しようとしていないか
* 100%の精度が得られるといった実現不可能な期待はないか
*(画像処理で十分なのにCNNを適用しようとしていないか)

3. システム設計を考える
* 予測結果はどういう形で利用するのか
* 予測誤りをどこでどうやって吸収するのか

4. アルゴリズムの選定
* 過去に類似の問題がどのように解かれているか(Kaggle等を調べる?)
* PCAやt-SNEでデータの特性を可視化してあたりをつけられないか
* (問題設定が複数考えられる場合は顧客に前もって確認しておく。例えば顧客はクラス分類問題を求めているようで、実は対象の大きさも知りたいと思っており、セグメンテーション問題として扱わなければならないかもしれない。逆に顧客はセグメンテーション問題を求めているようで、実は対象の大きさは必須ではなく、ラベリング負荷が減るのであればクラス分類問題として扱っても良いかもしれない)

5. 特徴量、教師データとログの設計をする
* ビジネスドメインに詳しい人に予測に必要な情報を確認する

6. 前処理をする

7. 学習・パラメータチューニング
* ロジスティック回帰等シンプルなアルゴリズムをまず適用する
* (学習データで精度が出ない? ⇒ モデルを大きくする、学習期間を長くする、別のモデルを試す)
* (バリデーションデータで精度が出ない? ⇒ データを増やす、正則化を適用する、別のモデルを試す)

8. システムに組み込む
* 予測性能とKPIをモニタリングし、継続してビジネスに貢献しているのか確認/改善を続ける
* 改善を続けることが出来る組織づくりもしておく

1.4 機械学習を含めたシステムを成功させるには

機械学習を含めたプロダクトをビジネスとして成功させる上で重要になるのは以下の4者がいること

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

機械学習プロダクトを作っていくうえで参考になる資料

www.slideshare.net

www.slideshare.net

5章 学習のためのリソースを収集しよう

1. 公開されたデータセットやモデルを活用する
* モデルやデータセットは商用利用可能なライセンスか
* 学習済みモデルやデータセットを自分のドメインに適用できるか

2. 開発者自身が教師データを作る
* 決めたカテゴリはそのままで良いのか、分類の定義を更新した方が良いのか考えて分類する
* 他に重要そうな特徴量が判明したら、それを含めると改善する可能性がある
* 分類基準は実例を残して他人に説明できるようにしておく

3. 同僚や友人などにデータ入力してもらう
* 複数名で作業するとき、同一のデータに対して正解を付与してもらうことも重要。人間同士でも分類が一致しないようなタスクは機械学習では解けない問題の可能性が高い

4. クラウドソーシングを活用する
メリット
* 専門の作業者を雇うより作業が速く、金額も専門家への依頼より安い * 作業が速く終わるため試行錯誤しやすい * 作業コストが低いことから、複数人に同一タスクを依頼するなど冗長性を持ったデータ作成が可能

注意点
* 作業者が短時間で解けるようにする必要があり、タスクの設計が難しい * 高い専門性が求められる作業は、手順の分割、詳細化などが必要 * 作業結果の質を担保するために、結果をチェック/利用する際の工夫が必要

5. サービスに組み込み、ユーザーに入力してもらう

仕事ではじめる機械学習

仕事ではじめる機械学習