Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Machine Learning Training

Machine Learning Training

Machine Learning Training for new grads in Money Forward, Inc.

marisakamozz

May 27, 2022
Tweet

More Decks by marisakamozz

Other Decks in Education

Transcript

  1. © Money Forward, Inc. © Money Forward, Inc. 10:00〜11:30 0.

    はじめに 1. なぜ機械学習か? 2. 機械学習の基礎 11:30〜12:30 休憩 12:30〜13:30 3-1. ビジネス理解 グループワーク 13:30〜14:30 3-2. データ理解 (EDA) グループワーク 14:30〜16:00 3-3. データ準備 (Feature Engineering) 3-4. モデル作成 実習 16:00〜17:30 3-5. 評価 3-6. 共有・展開 実習 17:30〜18:00 4. 発展 本日のスケジュール
 4
  2. © Money Forward, Inc. © Money Forward, Inc. • Name:

    森正和 / Mori Masakazu (Call me “Mozz”) • Twitter: @marisakamozz • Language: Python>=3.9 • Award: Kaggle Competitions Master (1 gold, 2 silvers) • Distance run so far: over 3000 km • Game: Apex Legends, Splatoon/Splatoon2 自己紹介
 5
  3. © Money Forward, Inc. 1-1. 機械学習とは
 従来のプログラミングと違い、機械学習では人手でルールを記述しない。
 機械がデータから自動的にルールを導き出す。
 IF 気温

    > 20度 AND 湿度 < 40% THEN 晴れ 
 ELSE
 IF 湿度 > 40% AND 湿度 < 60% THEN 曇り 
 ELSE
 IF 気温 > 25度 AND 湿度 > 60% THEN 晴れ 
 ELSE
 …
 従来のプログラミング 
 機械学習
 f データ データから ルールを導き 出す 演繹的
 帰納的
 11
  4. © Money Forward, Inc. 1-1. 機械学習とは
 単回帰の例:
 f データ ルールを

    導き出す 身長
 170cm
 150cm
 180cm
 155cm
 165cm
 …
 体重
 65kg
 45kg
 90kg
 55kg
 60kg
 …
 f 175cm
 ?kg
 12
  5. © Money Forward, Inc. 1-1. 機械学習
 機械学習の性質
 • より多くのデータがあれば正確に予測できる
 ◦

    5件より50件、50件よりも500件の方が正確に予測できる 
 • 各データに関するより詳細な情報(=特徴量)があれば正確に予測できそう
 ◦ 日々の摂取カロリーや運動量などの情報があれば正確に予測できそう 
 • 表現能力の高いモデルがあれば正確に予測できそう
 ◦ 身長が高ければ、それに比例して体重が増える訳ではない 
 より多くのデータや特徴量を扱える表現能力の高い機械学習アルゴリズムが考案され、 利用されてきた。
 しかし、相変わらず特徴量は人間の手で用意する必要があった。
 13
  6. © Money Forward, Inc. 1-1. 機械学習とは
 すべては「データ」次第。
 • データ量が増えればモデルの性能が向上するし、データ量が少なければ性能は向 上しない


    • 偏りがあるデータからは偏った予測が生まれる
 • モデルは単に過去統計的にこういうパターンが多かったというだけであり、未来もそ うなるかはわからない
 いかに質の高いデータを集められるかが決定的に重要。
 19
  7. © Money Forward, Inc. 1-2. データ活用と機械学習
 データ分析・活用には4つのステップがあると言われる。 
 1. Descriptive

    analytics
 何が起きたのかを把握する。
 2. Diagnostic analytics
 なぜ起きたのかを把握する。
 3. Predictive analytics
 これから何が起きるのかを把握する。
 4. Prescriptive analytics
 これから何をすべきかを把握する。
 tableauやLookerなどのBIツールを利用 
 機械学習を利用
 21
  8. © Money Forward, Inc. 1-2. データ活用と機械学習
 • 景気動向予測
 ◦ 金融機関が保有するテキストから足元の景気がどうなっているかを予測する

    
 • デフォルト予測
 ◦ 金融機関が企業に資金を融資する際に、返済可能かどうかを予測する 
 • レコメンデーション
 ◦ どのコンテンツを表示すればクリックされるのかを予測する 
 ◦ コールセンターのオペレータがどのお客様に架電すれば売上に繋がるのかを予測し、コールリスト を作成する
 22
  9. © Money Forward, Inc. 1. なぜ機械学習か? まとめ
 この章で学んだこと
 • 機械学習とは何か
 •

    機械学習が何をもたらしたか
 • データ活用のステップと機械学習の位置付け
 • 機械学習がどのように活用されているのか
 • MoneyForwardの取り組み
 27
  10. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 • CRISP-DM
 CRoss-Industry Standard

    Process for Data Mining
 データ分析プロジェクトのプロセスを示 した業界標準。
 データを中心にして6つの工程が存在す る。
 ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開
 データ
 30
  11. © Money Forward, Inc. ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開


    データ
 2-1. 機械学習プロジェクトのプロセス
 1. ビジネス理解
 Business Understanding
 現状を把握し、あるべき姿との乖離から 機械学習を使って解くべき課題を特定 する。
 KPIを設定する。
 31
  12. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 2. データ理解
 Data Understanding


    データを取得・蓄積してきた背景を理解 した上で、集計・可視化して分布や傾向 を把握する。
 EDA (Exploratory Data Analysis)ともい う。
 ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開
 データ
 32
  13. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 3. データ準備
 Data Preparation


    データを機械が理解できる形・判別しや すい形(特徴量)に変換する。
 機械が判別しやすい形に変換すること、 またそのようなテクニックをFeature Engineeringともいう。
 ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開
 データ
 33
  14. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 4. モデル作成
 Modeling
 各種機械学習アルゴリズムを利用して

    モデルを作成する。モデルはデータに共 通するパターンを数式化したもの。
 ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開
 データ
 34
  15. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 5. 評価
 Evaluation
 作成したモデルがKPIを達成している

    か、未知のデータを使って評価する。
 
 ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開
 データ
 35
  16. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 6. 共有・展開
 Deployment
 作成したモデルをプロダクション環境に

    デプロイする。
 モデルの性能を継続的に確認し、新た なデータで再学習を行う。
 ビジネス理解
 データ理解
 データ準備
 モデル作成
 評価
 共有・展開
 データ
 36
  17. © Money Forward, Inc. 2-1. 機械学習プロジェクトのプロセス
 • 機械学習プロジェクトの特徴
 反復的
 各工程は順番に進めるのではなく、

    何度も同じ工程を行ったり来たりす る。
 探索的
 結果はやってみるまでわからない。 
 37
  18. © Money Forward, Inc. 2-2. 機械学習の分類
 機械学習には学習のさせ方によって三つの分類に分けられる。
 • 教師あり学習
 ◦

    入力X(説明変数)と出力y(目的変数)のペアを与える 
 • 教師なし学習
 ◦ 入力Xのみを与える
 • 強化学習
 ◦ 環境の状態を観測し、それを元にとった行動から得られる報酬を最大化する 
 38
  19. © Money Forward, Inc. 2-2. 機械学習の分類
 教師あり学習
 入力X(説明変数)と出力y(目的変数)のペアを与える。
 出力yのことを「教師信号」「ラベル」「クラス」ということもある。
 •

    分類問題
 ◦ 出力yがカテゴリー変数の場合(例:明日の天気) 
 ◦ 2値分類、多クラス分類、マルチラベル分類 
 • 回帰問題
 ◦ 出力yが数値変数の場合(例:明日の気温) 
 プロジェクトとしては取り組みやすいが、一般に正解ラベルを収集することが困難 だったり、ラベルの品質が問題になることがある。
 39
  20. © Money Forward, Inc. 2-2. 機械学習の分類
 教師なし学習
 入力Xのみを与える。
 • クラスタリング


    ◦ トピック分析
 ◦ 顧客セグメント分割
 • 可視化
 プロジェクトとしては難易度が高くなる場合が多い。
 プロジェクトの初期段階の予備調査として行われることもある。
 40
  21. © Money Forward, Inc. 2-2. 機械学習の分類
 強化学習
 1. エージェントは状態を観測する
 2.

    エージェントは行動を選択する
 3. 環境はその行動によって変化し、新たな状 態に遷移する
 4. エージェントは報酬を受け取り、新たな状態 を観測する(2.に戻る)
 環境とのインタラクションを通じて、最終的に得ら れる報酬が最も多くなるように、ある状態におけ る最適な行動を求める。
 自動運転やロボット操縦、AlphaGoなど。 
 エージェント 環境 状態・報酬 行動 41
  22. © Money Forward, Inc. 2-3. 機械学習の理論
 1. 何らかの方法で調整可能な関数 f(X) を定義する

    
 ◦ 関数 f のことを「モデル」という
 2. 目的変数 y とモデルの出力 ŷ の誤差を評価する関数を定義する 
 ◦ この関数を「目的関数」または「誤差関数」という 
 3. 目的関数を最小化する最適化問題を解いて、最適解 f(X) を求める 
 ◦ 最適化問題を解く過程を「学習」あるいは「訓練」という 
 y ŷ f X 目的関数 *
 42
  23. © Money Forward, Inc. 2-3. 機械学習の理論
 • 機械学習アルゴリズム
 ◦ 関数

    f とその最適解の求め方を「機械学習アルゴリズム」という 
 ◦ さまざまな「機械学習アルゴリズム」が提案されているが、そのほとんどは前ページの流れに従って 学習することが多い 
 • 帰納バイアス - Inductive Bias
 ◦ ポイントは関数 f に何らかの前提条件や制約が課されていること 
 ▪ 線形回帰であれば説明変数Xと目的変数yは線形関係があるという仮定を置いている 
 ◦ 与えられたデータがその前提条件にフィットしていればうまく予測できるし、そうでなければうまく予 測できない
 ◦ つまり、データの性質によって機械学習アルゴリズムには向き・不向きがある 
 ◦ 逆に言えばあらゆるデータに対して有効な機械学習アルゴリズムは存在しない 
 ▪ ノーフリーランチ定理 (No Free Lunch Theorems) という 
 43
  24. © Money Forward, Inc. 2. 機械学習の基礎 まとめ
 この章で学んだこと
 • 機械学習プロジェクトのプロセスとその特徴
 ◦

    反復的、探索的
 • 機械学習の分類
 ◦ 教師あり、教師なし、強化学習 
 • 機械学習はどのようにしてデータからルールを導き出すのか
 • 帰納バイアス
 44
  25. © Money Forward, Inc. 3-1. ビジネス理解
 ビジネス課題の例:
 • 営業担当が往訪先企業に対してどのサービスを薦めるべきかを知りたい。
 ◦

    MoneyForwardには40以上のサービスがある。 
 ◦ 営業担当が往訪先企業と面談可能な時間はせいぜい30分程度。 
 ◦ そのため、往訪先企業が興味を持ってくれそうなサービスに絞って重点的に説明したい。 
 ◦ どの企業が現在どんなサービスを利用しているかというデータがある。 
 
 みなさんならどうしますか?
 48
  26. © Money Forward, Inc. 3-1. ビジネス理解
 • 機械学習ありきで考えない
 機械学習はあくまで数ある問題解決手段の一つにすぎない。
 機械学習を使わなくて済むのであればそれに越したことはない。


    • 今あるデータに固執しない
 データが有益なものかどうかは対象の問題による。
 
 ユーザーが真に求めているものに焦点をあて、データ(ここでは刺さる提案)が生成され る過程・背景を理解する事が重要。
 50
  27. © Money Forward, Inc. 3-1. ビジネス理解
 失敗プロジェクトの例 その2:
 営業担当のAさんに過去刺さった提案はどんな場合だったかをヒアリングしたとこ ろ、
 •

    面談相手の方が意思決定権を持っているか
 • その方の機嫌がいい時を見計らってアプローチすることが重要
 という回答だった。
 
 どこがダメ?
 51
  28. © Money Forward, Inc. 3-1. ビジネス理解
 • 仮説が間違っている
 「往訪先企業ごとに有益なサービスは異なる」という仮説が間違っている可能性。 →ピボットすることも検討すべきか(データを元に判断する)


    現場を知らない人が企画すると起きやすい。
 • 機械学習はデータがなければ手出しできない
 機械学習は魔法の杖ではない。データが無いところからは何も生まれない。
 • ただし、そこであきらめない
 データがなければ集めることも考える。コスト感覚を持つことも重要。
 例:往訪先担当者のTwitterを見る
 52
  29. © Money Forward, Inc. 3-1. ビジネス理解
 業務フローのデザイン
 機械学習だけで最終的なビジネス目標を達成することはできない。
 業務運用+エンジニアリング+機械学習の連携が必要。
 特に機械学習の観点からは以下の点に注意する。


    • API実行なのか、バッチ実行なのか
 • いつ実行されるのか、実行にかけられる時間はどの程度か
 • その時に使用可能なデータはどのデータか
 ここから機械学習の入力Xと出力yが定義される。
 例:入力X=往訪先企業IDとサービスID、出力y=関心スコア
 53
  30. © Money Forward, Inc. 3-1. ビジネス理解
 KPIの設定
 出力yが決まると機械学習モデルの評価指標を決める事ができる。
 ビジネス目標と機械学習モデルの評価指標をなるべく一致させる。
 具体的な閾値よりもどういう観点で評価するのかが重要。(ただし、ビジネスサイド

    からは閾値が重要となる場合はある)
 • サービスの提案はいくつまで可能か?
 • 確実にささる提案が欲しいのか、顧客ニーズ全てに応えたいのか
 プロジェクトの初期段階でKPIが明確になっていることは稀。プロジェクトを進めなが ら関係者全員の目線を合わせる。
 54
  31. © Money Forward, Inc. 3-1. ビジネス理解
 制約条件
 機械学習モデルの実行時に課せられる制約条件を整理する。
 • 非機能要件


    ◦ メモリ
 ◦ ターンアラウンドタイム 
 • 説明性・解釈性
 ◦ 例えば、営業担当は刺さるサービスの名前だけではなく、なぜその企業にはそのサー ビスがマッチするのかを知りたいと思うかもしれない。 
 
 55
  32. © Money Forward, Inc. 3-1. ビジネス理解 まとめ
 この章で学んだこと
 • このプロセスの目標
 ◦

    入力Xと出力y
 ◦ KPI
 ◦ 制約条件
 • 機械学習は一つの手段
 • データが生成される過程に思いを巡らせる
 • 機械学習特有の考慮事項
 ◦ 実行時間・タイミング 
 ◦ 説明性・解釈性
 ◦ 100%の精度を求めない 
 57
  33. © Money Forward, Inc. 3-1. ビジネス理解
 <グループワーク>
 機械学習を使ったMoneyForwardの新しいサービスを企画してください。
 • サービスの名前


    • サービスの内容
 • 機械学習に必要なデータ
 • 機械学習モデルの作成にあたって考慮すべき事項
 58
  34. © Money Forward, Inc. 3-2. データ理解
 このプロセスで行うこと
 • データに関する基本的な情報を把握する
 •

    データの分布や傾向を把握する
 • データ間の依存関係を把握する
 目的①:ビジネス理解のため
 • 仮説が正しいことをデータから確認する
 • 新たな仮説を立て、プロジェクトの方向性を見直す
 目的②:よりよいモデルの作成のため
 60
  35. © Money Forward, Inc. 3-2. データ理解
 1. データに関する基本的な情報を把握する
 • キー情報やリレーション


    • 個々のデータがどのタイミングで生成され、更新されるのか
 ◦ 実運用を想定してモデルの学習・テストを行うために必要 
 • 今保有しているデータ(全体)はいつからいつまでの期間のデータか
 ◦ 季節性やイベントはないか 
 • いつ時点の断面でロードされたものか
 ◦ 後々のプロセスでモデルの評価を行う際に重要 
 • データ取得経緯
 ◦ なるべくランダムなデータが望ましいが、現実的には不可能 
 ◦ 例えば、Money Forwardのデータは「Money Forwardを利用している人」というバイアスがある 
 61
  36. © Money Forward, Inc. 3-2. データ理解
 2. データの分布や傾向を把握する
 • 項目のデータ型を確認する


    ◦ カテゴリー変数、数値変数 
 ▪ 名義尺度:犬、猫
 ▪ 順序尺度:Short, Tall, Grande 
 ▪ 間隔尺度:気温(摂氏) 
 ▪ 比例尺度:体重
 ◦ カテゴリー変数の場合はcardinality(種類の多さ)を確認する 
 ▪ cardinalityの高い変数が特殊な対処が必要 
 62
  37. © Money Forward, Inc. 3-2. データ理解
 2. データの分布や傾向を把握する
 • 欠損値を確認する


    ◦ RDBでいう「NULL」を欠損値という 
 ◦ なぜ欠損しているのかを確認する 
 ▪ 値がわからない
 ▪ NULLを何らかのコード値として利用している 
 ▪ 毎日?時にシステムを停止してる 
 ◦ 機械学習アルゴリズムによっては欠損値を補完する必要がある 
 ◦ 欠損していることに意味がある場合は、欠損値を一つのカテゴリーとする 
 ◦ 欠損値の割合があまりに多い場合は項目を削除することを検討する 
 63
  38. © Money Forward, Inc. 3-2. データ理解
 2. データの分布や傾向を把握する
 • 分布を見る


    ◦ ヒストグラムを作る
 ◦ 平均値はどの程度か、値の範囲はどこからどこまでのあたりに多いか、偏りがないか、裾が 重くないか
 ◦ 線形回帰やニューラルネットなどの機械学習アルゴリズムは説明変数が標準正規分布に従 うことを仮定している場合が多い 
 ◦ 目的変数(出力y)が偏っているとモデルの作成や評価がうまくいかない場合がある 
 64
  39. © Money Forward, Inc. 3-2. データ理解
 2. データの分布や傾向を把握する
 • 外れ値を見る


    ◦ 何らかの理由でデータに間違いが含まれていることはよくある 
 ◦ 正常なデータでも極端に大きな(あるいは小さな)データが含まれていると、そのデータにモデ ルが引っ張られてしまうことがある 
 身長
 170cm
 150cm
 180cm
 155cm
 60cm
 …
 体重
 65kg
 45kg
 90kg
 55kg
 165kg
 …
 65
  40. © Money Forward, Inc. 3-2. データ理解
 データ:Monthly Airline Passenger Numbers

    1949-1960 
 https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/AirPassengers.html 
 2. データの分布や傾向を把握する
 • 時系列に並べる
 ◦ 単調増加・単調減少していないか? 
 ▪ そのままでは入力Xとして使えない→差分を取る、など 
 ◦ 周期的変動はないか? 
 ▪ 季節調整用のカテゴリー変数を追加する、など 
 66
  41. © Money Forward, Inc. 3-2. データ理解
 3. データ間の依存関係を把握する
 • 散布図(scatter

    plot)や重ね合わせヒストグラムを作る
 ◦ seabornのpair_plot() 
 67
  42. © Money Forward, Inc. 3-2. データ理解
 3. データ間の依存関係を把握する
 • 相関係数、カイ二乗検定、相互情報量


    ◦ いずれもデータ間の依存関係を表す指標 
 ◦ 相関が強い説明変数があると、「多重共線性」という問題を引き起こすことがある 
 • とりあえずモデルを作ってみることも
 ◦ LightGBMのfeature_importanceを見る、など 
 • 「相関が強い」ということは必ずしも「因果関係がある」とは言えないが、その データが生成される過程をうまく説明できる可能性がある。
 正の相関
 負の相関
 無相関
 68
  43. © Money Forward, Inc. 3-2. データ理解
 よく使うツール
 • Pandas-Profiling, Sweetviz,

    D-Tale
 ◦ 非常に便利
 • matplotlib, seaborn, plotly, bokeh
 ◦ 可視化する
 • pandas, numpy, scipy, scikit-learn
 ◦ 相関係数やカイ二乗検定、相互情報量を求めるのに使う 
 69
  44. © Money Forward, Inc. 3-2. データ理解
 このプロセスで大事なこと
 • ついついデータ全体の傾向や分布だけを見て満足しがち
 •

    データ1件1件がどのように生成されたかを想像することが重要
 ◦ このお客様が置かれている状況 
 ◦ データを生成するに至った経緯 
 ◦ 他にはないその人だけの特徴 
 ◦ 複数の人に共通するパターン 
 70
  45. © Money Forward, Inc. 3-2. データ理解 まとめ
 この章で学んだこと
 • このプロセスの目的
 ◦

    ビジネス理解
 ◦ よりよいモデルの作成 
 • データの何を理解すれば良いのか
 ◦ 基本的な情報
 ◦ 分布と傾向
 ◦ 依存関係
 • どうやってその情報にアクセスするか
 • どういう観点でデータを眺めるのか
 71
  46. © Money Forward, Inc. 3-2. データ理解
 <グループワーク>
 Adult Data Set

    (UCI Machine Learning Repository)
 pandas-profilingとseabornで可視化したものがあります。
 気づいたことを議論してください。
 • 年収5万ドル以上の人はどんな人か?
 • モデルを作成する時に気をつけるべき項目はないか?
 • 他に気になることはないか?
 72
  47. © Money Forward, Inc. 3-3. データ準備
 このプロセスで行うこと
 • データをMLアルゴリズムでうまく処理できる形式に変換する
 •

    モデルの精度を高めるために説明変数を加工する
 具体的には、
 1. 前処理
 2. 特徴量生成
 3. 特徴量選択
 74
  48. © Money Forward, Inc. 3-3. データ準備
 1. 前処理
 • 欠損値補完


    ◦ 線形モデルなどは欠損値を何らかの値で埋める必要がある 
 ◦ 平均値や中央値、最頻値で補完することが多い 
 ◦ 平均値を求める際にテストデータを含めないことが重要 
 • 標準化・正規化
 ◦ 説明変数のスケールを揃える 
 ◦ Min-Max Scaler, StandardScaler, PowerTransformer 
 ◦ 欠損値補完と同様にテストデータを含めないことが重要 
 75
  49. © Money Forward, Inc. 3-3. データ準備
 1. 前処理
 • カテゴリー値


    ◦ カテゴリー値を何らかの数値に変換する 
 カテゴリー値 OrdinalEncoder LabelEncoder One-Hot Encoder ねずみ 牛 虎 うさぎ ねずみ 0 1 0 0 0 牛 1 0 1 0 0 虎 2 0 0 1 0 うさぎ 3 0 0 0 1 76
  50. © Money Forward, Inc. 3-3. データ準備
 1. 前処理
 • テキスト


    ◦ BoW (Bag of Words) 
 ▪ テキストを単語に分割して、テキストに含まれる単語の数を数える 
 ◦ TF-IDF
 ▪ 全てのドキュメントに共通して頻繁に出てくる単語の重要度を下げるため、テキストに 含まれる単語の割合(=TF)をドキュメント全体に含まれる割合(=DF)で割ったもの 
 ◦ Word Embedding
 ▪ Wikipediaのような大規模コーパスを使って単語の意味を数値に置き換えたもの 
 ◦ nltkやgensimを利用 
 77
  51. © Money Forward, Inc. 3-3. データ準備
 2. 特徴量生成(Feature Engineering)
 •

    業務的な特徴量
 ◦ そのドメインに特化した特徴量 
 ◦ Riiid Answer Correctness Prediction 
 ▪ ユーザーが問題に正しく答えられるかどうかを予測するコンペ 
 ▪ 最初の30問は診断テストであることがわかった 
 • https://www.kaggle.com/code/shuntarotanaka/riiid-the-first-30-questions-are-proficiency-test
 ▪ そのため、診断テストの何問目かを特徴量に追加し、精度向上 
 ▪ モデルが不得意とするデータを確認している中で発見した 
 ◦ 最も有効
 78
  52. © Money Forward, Inc. 3-3. データ準備
 2. 特徴量生成(Feature Engineering)
 •

    複数の特徴量の組み合わせ
 ◦ カテゴリー変数 + カテゴリー変数 
 ◦ カテゴリー変数 + 数値変数 
 ▪ あるカテゴリーの中での数値変数の平均値や標準偏差 
 • 水曜日の平均売上を計算し、水曜日のカテゴリー値を平均売上で置き換える 
 ▪ その平均値から数値変数がどの程度乖離しているか 
 • その日の売上が水曜日の平均売上からどれだけ乖離しているか 
 ◦ 数値変数 + 数値変数 
 ▪ 四則演算
 • 数値変数の層化 (binning)
 ◦ 数値変数の分位点などで分割し、カテゴリー変数として扱う 
 • (後付けでもいいが、)解釈可能なレベルに止めるべき
 79
  53. © Money Forward, Inc. 3-3. データ準備
 2. 特徴量生成(Feature Engineering)
 •

    Target Encoding
 ◦ カテゴリー変数をそのカテゴリーの出力yの平均値で置き換える 
 ◦ 単純に学習データ全体の平均値で置き換えてしまうと、入力Xに本来知り得ない出力yの情 報が埋め込まれてしまう(「リーク」という) 
 ◦ データを5つ程度のグループに分割して、自身のデータが含まれていないグループの平均値 を使ってエンコードする(「OOF (Out Of Fold)」という) 
 ◦ 詳しくは書籍「Kaggleで勝つデータ分析の技術」(著者:門脇 大輔, 阪田 隆司, 保坂 桂佑, 平 松 雄司)を参照
 80
  54. © Money Forward, Inc. 3-3. データ準備
 3. 特徴量選択
 • 過学習


    ◦ 特徴量が多くなると、実際には依存関係がない特徴量であるにも関わらずたまたま残差(そ れ以外の特徴量による予測 ŷと実測値yの誤差)にフィットしてしまう事がある。 ◦ このような場合、汎化性能が下がる。(学習データの性能に対してテストデータの性能が下が る) • 多重共線性 ◦ 相関の強い特徴量があると以下のような問題を引き起こす。 ▪ 目的変数に対する寄与度が分散される(特に決定木系のモデルで起きる) ▪ 本来プラスの影響を与えるはずの特徴量がマイナスの寄与になったり、過剰に大きな 寄与度になったりする(特に線形モデルで起きる) • 運用 ◦ 複雑な特徴量を多数用意するのはサービスの保守性を低下させる 81
  55. © Money Forward, Inc. 3-3. データ準備
 3. 特徴量選択
 • 全て同じデータが入っている特徴量は削除する


    • cardinalityが高い、もしくは、全て異なる値が入っているカテゴリー変数は削除 する
 ◦ cardinalityの高いカテゴリー変数は何らかのエンべディング手法を検討 
 • 相関係数が高い特徴量は削除する ◦ 全特徴量間で相関係数を計算し、特徴量ごとに集計したり調和平均を取ったりして、値が大 きい特徴量を削除する • 目的変数yとの依存関係が強い特徴量を選ぶ ◦ 相関係数やカイ二乗検定、相互情報量など ◦ scikit-learnのmutual_info_classif/mutual_info_regression 82
  56. © Money Forward, Inc. 3-3. データ準備
 3. 特徴量選択
 • モデルを利用する

    ◦ 決定木系モデルのfeature_importanceを見る ◦ 線形モデルのL1正則化(Lasso回帰) ◦ PCAやtSNE、UMAPによる次元削減 • 特徴量を順番に追加したり、徐々に削除したり 83
  57. © Money Forward, Inc. 3-3. データ準備
 よく使うツール
 • pandas
 ◦

    pandasには特徴量を加工するための便利な関数が多数用意されている。 
 • scikit-learn
 ◦ feature_selectionに特徴量選択に有効なツールが多数用意されている。 
 • featuretools
 ◦ 履歴系のテーブルから集計して特徴量を作る際に便利。 
 • Category Encoders
 ◦ カテゴリー変数を数値変数に変換する際に使える。 
 ◦ Target Encodingをする場合は「James-Stein Encoder」を利用すると良い。 
 ◦ ただし、OOFは自分でやる必要あり。 
 84
  58. © Money Forward, Inc. 3-3. データ準備
 このプロセスで大事な事
 • 精度の高いモデルを作る上で最も重要なプロセス
 ◦

    KaggleではFeature Engineeringに最も多くの時間を割く 
 ◦ 以下の作業の繰り返し 
 ▪ 丁寧なEDA
 ▪ データが生成される過程を想像 
 ▪ 仮説を立てる
 ▪ 仮説に基づいて特徴量を追加 
 ▪ モデルを作成し、精度の向上に寄与するかを確認 
 ◦ ビジネスに精通した人にヒアリングするというのも有効 
 ▪ ヒューリスティック分析という 
 85
  59. © Money Forward, Inc. 3-3. データ準備
 このプロセスで大事な事
 • リークに気をつける
 ◦

    本来知り得ない目的変数yやテストデータに関する情報を特徴量に入れない 
 • 運用段階のことを考慮する
 ◦ その特徴量は運用段階で利用できるか?(たとえば、データ連携のタイムラグがないか?な ど)
 ◦ 大量かつ複雑な特徴量は保守性を低下させる可能性 
 ◦ その特徴量が理論的にも有効であることが示されているとベスト 
 86
  60. © Money Forward, Inc. 3-3. データ準備
 <実習(各自で作業)>
 Adult Data Set

    (UCI Machine Learning Repository)
 年収5万ドル以上かどうかを予測する問題です。
 前処理を行うコードが実装されているので、実行して結果を確認してください。
 余裕があれば、どんな特徴量を追加すればよいかを考え、特徴量を追加してみてく ださい。
 88
  61. © Money Forward, Inc. 3-4. モデル作成
 このプロセスで行うこと
 • 適切な機械学習アルゴリズムを使ってモデルを作成する
 •

    データの性質に応じて適切に対処する
 以下の内容を説明します。
 1. 機械学習アルゴリズムの使い分け
 2. 実践的なテクニック
 90
  62. © Money Forward, Inc. 3-4. モデル作成
 1. 機械学習アルゴリズムの使い分け(テーブルデータの教師あり学習の場合)
 MLアルゴリズム 説明

    勾配ブースティング決定木 前処理が楽で特徴量選定もあまり気にする必要がなく、そこそこの精度が期待 できるため、まずはこれで試すのがよい。 RandomForest 勾配ブースティング決定木では過学習する場合に試す場合がある。 線形モデル 丁寧な前処理が必要だが、勾配ブースティング決定木とは違った予測を行うこ とが多いため、アンサンブル(後述)に使える場合がある。 SVM 複雑なモデルを構築できるが、過学習しやすい。データによっては有効な場合 がある。 MLP 複雑なモデルを構築できるが、過学習しやすい。データによっては有効な場合 がある。 91
  63. © Money Forward, Inc. 3-4. モデル作成
 • 勾配ブースティング決定木
 ◦ 実装としてはXGBoost,

    LightGBMが有名どころ 
 ◦ Kaggleでは「初手LightGBM」が合言葉 
 ◦ 以下のような理由から非常に使い勝手が良い 
 ▪ 説明変数の前処理が雑でよい 
 • 数値変数はそのままでOK 
 • 欠損値はそのままでOK 
 • カテゴリー変数はLabelEncoderでOK 
 ▪ 特徴量が多くても過学習しにくい 
 ▪ 学習が速い(特にLightGBM) 
 ▪ ハイパーパラメータチューニングしなくてもそこそこの精度 
 92
  64. © Money Forward, Inc. 3-4. モデル作成
 • Random Forest
 ◦

    実装としてはscikit-learnのRandomForestClassifier/RandomForestRegressorがよく利用される 
 ◦ LightGBMのパラメータでRandom Forestを指定することも可能 
 ▪ boosting: “rf”
 ◦ 過学習に強い
 ◦ 丁寧な前処理が不要な点は勾配ブースティング決定木と同様 
 ◦ 勾配ブースティング決定木でどうしても過学習が避けられない時に試す 
 93
  65. © Money Forward, Inc. 3-4. モデル作成
 • 線形モデル(分類問題:ロジスティック回帰、回帰問題:線形回帰(単回帰・重回 帰))
 ◦

    実装としてはscikit-learnが使われる事が多い 
 ▪ 分類問題:LogisticRegression 
 ▪ 回帰問題:Ridge, Lasso 
 ◦ 統計検定を行う場合はstatsmodelsを使う 
 ◦ 各説明変数Xに重みWをかけてバイアスbを足したものを予測 ŷとする
 ▪ ŷ=WX+b ◦ 説明変数に対する丁寧な前処理が必要 ▪ 数値変数はなるべく標準正規分布に近づける ▪ 欠損値は何らかの値で補完する ▪ カテゴリー変数はOne-Hotベクトルに変換する ▪ 説明変数が多いと過学習しやすい ◦ 多重共線性に気をつける必要がある ◦ 決定木系のモデルとアンサンブルすることが多い 94
  66. © Money Forward, Inc. 3-4. モデル作成
 • SVM (Support Vector

    Machine)
 ◦ 実装としてはscikit-learnが使われる事が多いようだが、あまり速くない 
 ◦ 決定境界をなるべく広げるように学習する 
 ◦ カーネル関数を指定する事で非線形の決定境界を学習できる 
 ◦ 説明変数の前処理や多重共線性については線形モデルと同様 
 • MLP (Multi-Layer Perceptron)
 ◦ 実装としてはscikit-learnを使うか、pytorchやtensorflow(keras)が使われる 
 ◦ 非線形の決定境界を学習できるが過学習しやすい 
 ◦ 説明変数の前処理や多重共線性については線形モデルと同様 
 95
  67. © Money Forward, Inc. 3-4. モデル作成
 2. 実践的なテクニック
 2-1. 過学習


    2-2. インバランス
 2-3. アンサンブル
 2-4. スタッキング
 2-5. ハイパーパラメータチューニング
 2-6. モデルの解釈性・説明性
 96
  68. © Money Forward, Inc. 3-4. モデル作成
 2-1. 過学習
 画像出典:「Underfitting vs.

    Overfitting - scikit-learn 1.0.2 documentation」scikit-learn developers. 
 https://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html 
 97
  69. © Money Forward, Inc. 3-4. モデル作成
 2-1. 過学習
 • データを増やす


    ◦ 最も有効だが、最もコストがかかる 
 • 特徴量を減らす
 ◦ 3-3. データ準備の「3. 特徴量選択」で説明した手法を試す 
 • 過学習に強い機械学習アルゴリズムを選択する
 ◦ 勾配ブースティング決定木やRandomForest 
 • 機械学習アルゴリズムのハイパーパラメータを調整する
 ◦ LightGBMであれば、num_leavesやmax_depthを減らす 
 ◦ MLPであれば、Dropout、weight_decayを試す 
 98
  70. © Money Forward, Inc. 3-4. モデル作成
 2-2. インバランス
 分類問題で出力yが偏っていると学習や評価で問題が生じやすい。
 例えば、2値分類問題で99%が0だった場合、モデルは常に0を出力すれば99%の精

    度が達成できる。しかし、そのようなモデルは役に立たない。
 • アンダーサンプリング
 ◦ 多いラベルのデータからランダムに抽出する 
 • オーバーサンプリング
 ◦ 少ないラベルのデータをコピーして増やす 
 • 目的関数を調整する
 ◦ 少ないラベルのデータの重みを増やす 
 99
  71. © Money Forward, Inc. 3-4. モデル作成
 2-3. アンサンブル
 複数のモデルを組み合わせて最終的な予測を行う手法。
 一般的に単一のモデルで予測するよりも汎化性能が向上することが多い。


    • 決定木と線形モデル
 • 使用するデータや特徴量の異なるモデル
 • 乱数シードの異なるモデル
 などを組み合わせる。
 最終的な予測値は平均値や最大値を使用する。性能の高いモデルの重みを大きく したり、その重みを最適化したりすることも。
 101
  72. © Money Forward, Inc. 3-4. モデル作成
 2-4. スタッキング
 あるモデルAの予測値を特徴量として学習した別のモデルBで最終的な予測を行う 手法。(その際にモデルBは入力Xも特徴量として利用できる)


    Target Encodingや欠損値を平均値で補完するのもスタッキングの一種。
 単純に実装するとリークしてしまうのでOut of Foldでモデルを学習する必要があ る。
 モデルAはどういう時に正解しやすいか(間違えやすいか)ということを、モデルBが 学習する。
 103
  73. © Money Forward, Inc. 3-4. モデル作成
 2-5. ハイパーパラメータチューニング
 機械学習アルゴリズムには、学習の過程で自動的に調整されるパラメータとは別 に、手動で学習の前に設定しておくパラメータがある。


    ハイパーパラメータはデータに応じて適切に設定する必要があるが、事前に当たり をつけることが難しいものも多い。
 • Grid Search
 • Random Search
 • 最適化ツール
 ◦ optuna
 ◦ hyperopt
 104
  74. © Money Forward, Inc. 3-4. モデル作成
 2-6. モデルの解釈性・説明性
 モデルがどのような特徴量を重視しているかは以下の情報からわかる。
 •

    勾配ブースティング決定木、Random Forest
 ◦ feature_importance
 ▪ 2種類ある
 • split: どの特徴量で枝分かれしているか 
 • gain: その枝分かれによってどれだけ目的関数の値が下がっているか 
 ▪ どちらの方向に寄与しているかはわからない 
 • 線形モデル
 ◦ 重みW
 ▪ 寄与する方向がわかる 
 105
  75. © Money Forward, Inc. 3-4. モデル作成
 2-6. モデルの解釈性・説明性
 SHAPやLIMEを利用すれば、各予測データに対してどの特徴量が寄与しているか がわかる。


    • SHAP (SHapley Additive exPlanations)
 ◦ 各特徴量の貢献度をゲーム理論から割り出したもの 
 • LIME
 ◦ 予測データ周辺の決定境界を超平面で近似し、その垂直方向を寄与度とするもの 
 106
  76. © Money Forward, Inc. 3-4. モデル作成 まとめ
 この章で学んだこと
 • 機械学習アルゴリズムの使い分け
 ◦

    初手LightGBM
 • 各種テクニック
 ◦ 過学習
 ◦ インバランス
 ◦ アンサンブル
 ◦ スタッキング
 ◦ ハイパーパラメータチューニング 
 107
  77. © Money Forward, Inc. 3-4. モデル作成
 <実習(各自で作業)>
 Adult Data Set

    (UCI Machine Learning Repository)
 年収5万ドル以上かどうかを予測する問題です。
 LightGBMで学習するコードが実装されているので、実行して結果を確認してくださ い。
 余裕があれば、その他の機械学習アルゴリズムも試してください。
 108
  78. © Money Forward, Inc. 3-5. 評価
 このプロセスで行うこと
 • 作成したモデルの性能を適切な評価指標で評価する
 •

    オンラインの環境でモデルの性能を確認する
 以下の内容を説明します。
 1. 交差検証(Cross Validation)
 2. 評価指標
 3. A/Bテスト
 110
  79. © Money Forward, Inc. 3-5. 評価
 機械学習モデルの評価において一番大切なことは・・・
 学習時に使用していない「未知のデータ」で評価する事
 ハイパーパラメータチューニングのデータも学習データとは別に用意する。
 •

    train: モデル学習用のデータ
 • validation: ハイパーパラメータチューニング用データ
 ◦ trainで学習後、validationで評価したスコアが最も良い値を採用する 
 • test: 最終的にモデルを評価するためのデータ
 train validation test 111
  80. © Money Forward, Inc. 3-5. 評価
 少ないvalidationデータセットで評価を行うことは以下のリスクがある。
 • validationデータセットが偏っている可能性
 •

    validationデータセットに過学習する可能性
 かと言って、validationデータセットの割合を増やすとモデルの学習に使用するための データが減る。
 →Cross Validation(交差検証)
 データセットをK個のFOLDに分割し、一つのFOLDをvalidationに、残りのFOLDを trainにする、というのをK回繰り返す。
 各FOLDに含まれるデータの偏りにも注意が必要。
 112
  81. © Money Forward, Inc. 3-5. 評価
 5 Fold Cross Validationの例:


    train validation train validation train validation train train validation train train validation train 113
  82. © Money Forward, Inc. 3-5. 評価
 画像出典:「3.1. Cross-validation: evaluating estimator

    performance - scikit-learn 1.0.2 documentation」 
 scikit-learn developers. 
 https://scikit-learn.org/stable/modules/cross_validation.html 
 114
  83. © Money Forward, Inc. 3-5. 評価
 下記のようなケースではどのような評価指標で評価すべきでしょうか?
 1. 病気の陽性・陰性を判断する診断モデル
 ◦

    本当は陰性なのにモデルが誤って「陽性」を予測: 
 ◦ 本当は陽性なのにモデルが誤って「陰性」を予測: 
 
 2. 郵送コストがかかるダイレクトメールの送信先リスト作成モデル
 ◦ 本当は購入してくれるお客様なのにモデルが誤って「購入しない」を予測: 
 ◦ 本当は購入してくれないお客様なのにモデルが誤って「購入する」を予測: 
 どちらも正しく判断して欲しいことに違いはないが、誤った判断を下した時の影響が異な る。
 116
  84. © Money Forward, Inc. 3-5. 評価
 混同行列(confusion matrix)
 
 


    
 
 
 ケース1(診断モデル):FNを減らしたい
 ケース2(DMモデル):FPを減らしたい
 予測 Positive Negative 事実 True TP: True Positive FN: False Negative False FP: False Positive TN: True Negative 118
  85. © Money Forward, Inc. 3-5. 評価
 Recall
 予測 Positive Negative

    事実 True TP: True Positive FN: False Negative False FP: False Positive TN: True Negative TP
 TP + FN
 Recall =
 119
  86. © Money Forward, Inc. 3-5. 評価
 Precision
 予測 Positive Negative

    事実 True TP: True Positive FN: False Negative False FP: False Positive TN: True Negative TP
 TP + FP
 Precision =
 120
  87. © Money Forward, Inc. 3-5. 評価
 Accuracy
 予測 Positive Negative

    事実 True TP: True Positive FN: False Negative False FP: False Positive TN: True Negative TP + TN
 TP + TN + FP + FN
 Accuracy =
 121
  88. © Money Forward, Inc. 3-5. 評価
 業務的な判断が難しい場合はF1スコアやAUCが利用される。
 F1スコア:PrecisionとRecallの調和平均
 AUC: Area

    Under the ROC-Curve(ROC曲線の下の面積)
 ROC-Curve: 縦軸にRecall、横軸にFPR(=False Positive Rate)をとって、閾値を変化 させたときにできる曲線。
 122
  89. © Money Forward, Inc. 3-5. 評価
 ROC-Curve
 予測 Positive Negative

    事実 True TP: True Positive FN: False Negative False FP: False Positive TN: True Negative TP
 TP + FN
 Recall =
 FP
 FP + TN
 FPR =
 閾値を左や右に動かす 
 画像出典:「Receiver Operating Characteristic (ROC)」scikit-learn developers. 
 https://scikit-learn.org/stable/modules/cross_validation.html 
 123
  90. © Money Forward, Inc. 3-5. 評価
 回帰問題によく使われる評価指標
 • RMSE
 •

    MAE
 • R2スコア(決定係数)
 • 相関係数
 業務的には最終的に何らかのアクションを起こすことが多いので、回帰問題のモデ ルであっても分類問題として評価するのも一つのやり方。
 124
  91. © Money Forward, Inc. 3-5. 評価
 オフラインの環境で性能が確認できたらオンラインの環境で評価する。
 目的:
 • 学習に使用したデータは収集段階で偏っている可能性があるため、オンライン

    の環境では期待した性能が出ない場合がある。
 • ビジネス理解の工程で立てたKPIは業務的な目標となっていて、オンラインで なければ確認できないことがある。
 A/Bテストを実施し、従来のモデルやランダム群と比較してモデルの性能を最終確認す る。
 125
  92. © Money Forward, Inc. 3-5. 評価
 A/Bテスト
 従来モデル 新モデル 対象


    顧客
 全体
 コンバージョン?名 / 全体?名 
 コンバージョン?名 / 全体?名 
 比較して評価する
 データ量が少ない場合は統計検定 
 126
  93. © Money Forward, Inc. 3-5. 評価 まとめ
 この章で学んだこと
 • 機械学習モデルの評価において大切なこと
 ◦

    学習時に使用していないデータで評価する 
 • Cross Validation
 • 評価指標
 ◦ Precision, Recall, F1 
 ◦ AUC
 127
  94. © Money Forward, Inc. 3-5. 評価
 <実習(各自で作業)>
 Adult Data Set

    (UCI Machine Learning Repository)
 年収5万ドル以上かどうかを予測する問題です。
 LightGBMのモデルの性能を評価する処理が実装されています。実行して結果を確 認しましょう。
 CVの結果や混同行列の結果を見て、このモデルの評価を行ってください。
 128
  95. © Money Forward, Inc. 3-6. 共有・展開
 リモデリング
 • 新しく収集したデータで再学習を行う
 •

    EDAからやり直す
 ◦ 既存モデルの学習データと新しく収集したデータの分布を見比べる 
 ◦ 既存モデルのfeature importanceと新しく収集したデータで再学習したモデルのfeature importanceを見比べる 
 ◦ 特徴量を追加、あるいは、削除して再学習する 
 ◦ A/Bテストを実施する 
 既存モデルの性能を維持しつつ、新たなことにチャレンジするためにはCRISP-DM のサイクルを高速に回す必要がある。
 133
  96. © Money Forward, Inc. 3-6. 共有・展開
 MLOps
 機械学習モデルのライフサイクルを高速に回すために必要な
 • 円滑なチーム間の連携


    • 自動化
 • バージョン管理(データを含む)
 • それらを支える基盤・ツール群
 などを整備し、管理体制を構築することをMLOpsという。
 (DevOpsの機械学習版)
 134
  97. © Money Forward, Inc. 3-6. 共有・展開
 Google の「MLOps」の定義(https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning?hl=ja )
 •

    レベル0:手動プロセス
 ◦ モデル作成、デプロイを手動で実施 
 • レベル1:MLパイプラインの自動化
 ◦ 新しいデータを用いたリモデリングを自動化 
 ◦ オフラインでの前処理〜モデル作成〜評価までのパイプラインを自動化 
 ◦ EDAとモデルの分析、パイプラインのデプロイは手動で実施 
 • レベル2:CI/CDパイプラインの自動化
 ◦ モデルのデプロイを自動化 
 135
  98. © Money Forward, Inc. 3-6. 共有・展開
 Microsoft AI bot "Tay"


    「マイクロソフトのAI、ヘイト発言を「学習」して停止」 - WIRED
 https://wired.jp/2016/03/25/tay-tweet-microsoft/
 しかしマイクロソフトは、開始してから16時間後の24日、 Tayを停止した。ナチスを賛美する発言などを始めてしまっ たからだ。もともとは、人間の発言を繰り返すよう指示され るとそれに従う機能によるものだったが、そのうち、関係の ない場面でも問題発言が見られるようになった。 
 136
  99. © Money Forward, Inc. 3-6. 共有・展開
 アマゾンの採用AI
 Amazon scraps secret

    AI recruiting tool that showed bias against women - Reuters (https://www.reuters.com/article/us-amazon-com-jobs-automation-insight/amazon-scraps-secret-ai-recruiting-tool-that-showed-bias-against-women-idUSKCN1MK08G) 
 In effect, Amazon’s system taught itself that male candidates were preferable. It penalized resumes that included the word “women’s,” as in “women’s chess club captain.” And it downgraded graduates of two all-women’s colleges, according to people familiar with the matter. They did not specify the names of the schools. 
 137
  100. © Money Forward, Inc. 4. 発展
 この章では以下の内容についてご紹介します。
 1. 本日は詳しくご紹介しなかった機械学習トピック
 2.

    自習教材
 a. 書籍
 b. 学習サイト
 c. 実行環境
 d. データセット
 e. データ分析コンペ
 3. MoneyForwardのサポート体制
 140
  101. © Money Forward, Inc. 4. 発展
 • Pythonではじめる機械学習
 Andreas C.

    Muller、Sarah Guido 著、中田 秀基 訳
 ◦ 本日紹介した機械学習プロジェクトの一連 のプロセスとPythonによる実装を学ぶこと ができる
 ◦ 機械学習アルゴリズムの理論については 触れる程度
 142
  102. © Money Forward, Inc. 4. 発展
 • Kaggleで勝つデータ分析の技術
 門脇大輔,阪田隆司,保坂桂佑,平松雄司 著 


    ◦ Kaggleで勝つために必要な様々なテク ニックを紹介してくれる良書 
 ◦ 実務でも有効
 143
  103. © Money Forward, Inc. 4. 発展
 • 機械学習帳 - 岡崎

    直観 (東工大)
 ◦ https://chokkan.github.io/mlnote/index.html 
 ◦ 機械学習の理論を基礎から教えてくれる 
 ◦ サンプルコードはGitHubで公開されており、バナーボタンから簡単にGoogle Colabなどで試すことが できる
 144
  104. © Money Forward, Inc. 4. 発展
 • Python実行環境
 ◦ Google

    Colab
 ▪ https://colab.research.google.com/ 
 ▪ Googleアカウントを持っていればすぐに使えるJupyter Notebook環境 
 ▪ 無料アカウントでもGPUが使えるが、12時間でセッションが切れるなどの制限がある 
 ▪ ProやPro+に入ればより高速なGPUが利用でき、制限も緩和される 
 ◦ SageMaker Studio Lab 
 ▪ https://studiolab.sagemaker.aws/ ▪ プレビューだがすぐに利用可能 
 ▪ パッケージ・ライブラリは自分で入れないといけないものが多い 
 ▪ GPUは割と使えるレベル 
 ▪ データを一時的に保存しておくこともできる 
 145
  105. © Money Forward, Inc. 4. 発展
 • データセット
 ◦ UCI

    Machine Learning Repository 
 ▪ https://archive.ics.uci.edu/ml/index.php 
 ▪ 今回使用したAdultやIrisなどの有名なデータセットが多数 
 ◦ scikit-learn
 ▪ https://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets 
 ▪ データセットをダウンロードしたり、サンプルを生成したり 
 146
  106. © Money Forward, Inc. 4. 発展
 • データ分析コンペ
 ◦ Kaggle


    ▪ https://www.kaggle.com/ 
 ▪ 世界最大のデータ分析コンペプラットフォーム 
 ▪ 世界中のデータサイエンティストが集まり、常時10程度のコンペが開催されている 
 ▪ GPUが利用可能なJupyter Notebook環境やDatasetなども無料で利用可能 
 ◦ 日本のデータ分析コンペプラットフォーム 
 ▪ SIGNATE
 ▪ probspace
 ▪ Nishika
 ▪ atmaCup
 147