機械学習プロジェクトの進め方2018-03-19宮川 拓
View Slide
#ccc_e42/105背景と動機 機械学習プロジェクトは、繰り返し的にシステムを改善していくプロセスらしい 繰り返しごとに、どこのツマミを回せば良いのか?デ ー タ 収 集特 徴 抽 出モ デ ル 構 築ハ イ パ ー パ ラ メ ー タ 調 整学 習 ・ 評 価評 価 軸 設 計
#ccc_e43/105ネタ元 Coursera「Machine Learning」 機械学習の基礎を学ぶ実務者向け講義 厳密な根拠づけは省いて、「直観的にはこんな感じ、やり方はこう」という内容 「実務上どう実現すればいいの?」という話もちょいちょい出てくる 今回は第6週、第11週がネタ元
題材1 (第6週)線形回帰による住宅価格予測#ccc_e44/105
#ccc_e45/105題材1: 線形回帰 説明変数 (x) 広さ 部屋数 階数 築年数 …… 目的変数 (y) 住宅価格
#ccc_e46/105次にどの手を打つべきか? 「予測がうまくいかない」とき そもそもそれはどういう時? 何をするべき? データをもっと集める? 説明変数を増やす?減らす? 12 + 2みたいな多項式を新たな説明変数にする? 正則化を強くする?弱くする?
def. 予測がうまくいっていない#ccc_e47/105一般的なデータに対する予測の誤差が大きい訓練データセットに対する予測の誤差が大きい○×
データセットの分割#ccc_e48/105モデルのパラメータの推定のために使うデータセット最適な説明変数群、ハイパーパラメータなどを選択する基準として使うデータセット最終的な予測の性能を測る一般的なデータとして使うデータセット訓練セットバリデーションセットテストセット
説明変数の数と誤差の関係#ccc_e49/105誤差説明変数の数訓練誤差バリデーション誤差←underfit overfit→
説明変数の数と誤差の関係#ccc_e410/105誤差正則化項の係数λ訓練誤差バリデーション誤差←overfit underfit→
訓練セット量と誤差の関係#ccc_e411/105誤差訓練データセットの量Learning Curve訓練誤差バリデーション誤差←overfit誤差が過大ならunderfit→
#ccc_e412/105状況ごとのやるべきことUnderfit: データに対してモデルが単純過ぎ 説明変数を増やす 正則化項の係数を小さくするOverfit: データに対してモデルが複雑過ぎ 訓練セットの量を増やす 説明変数を減らす 正則化項の係数を大きくする
題材2 (第6週)spamフィルタ#ccc_e413/105
#ccc_e414/105基本的な進め方 まずは簡単なモデルを作ってみる Learning Curve (訓練セット量vs誤差)をプロットしてみる 誤差が充分に小さければOK! 誤差が大きければ underfit → モデルを複雑に overfit → データを集める→ モデルを単純に
#ccc_e415/105エラー分析 具体的に打つ手を決めるためには、分類エラーを分析することが有用 例: “med1cine”のような意図的なミススペルを持つメールがspamとして分類できていない→ 未知語の数を説明変数に追加
題材3 (第11週)Photo OCR#ccc_e416/105
題材: OCRパイプライン#ccc_e417/105画像テキスト検出文字分割文字認識(分類)
#ccc_e418/105Ceiling Analysis やみくもに各ステップを改善するのは非効率的 Ceiling Analysisを行って、どのステップを改善するべきか突き止めよう
Ceiling Analysis#ccc_e419/105最終的なaccuracy改善現行のパイプライン 70% -+ 完璧なテキスト検出器 75% +5%+ 完璧な文字分割器 90% +15%+ 完璧な文字認識器 100% +10%→ 最も改善が見込める文字分割器の改善に労力をそそぐべき