Machine Learning Training for new grads in Money Forward, Inc.
© Money Forward, Inc.© Money Forward, Inc.機械学習研修 CTO室 AI推進部 Mozz | 森 正和
View Slide
© Money Forward, Inc.O. はじめに 2
© Money Forward, Inc.この研修のゴール ● 機械学習とは何かを理解する ● 何らかの課題に直面した時に、機械学習が解決策の一つとして思い浮かぶ状態を目指す 3
© 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
© 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
© Money Forward, Inc.サポート 6AWS環境や個別に質問したいことがあれば、いつでもサポート担当にご連絡ください。 幸野 達也 足立 悠
© Money Forward, Inc.質問 ● Pythonの経験は? ● 機械学習の経験は? 7
© Money Forward, Inc.1. なぜ機械学習か? 8
© Money Forward, Inc.1. なぜ機械学習か? 1-1. 機械学習とは 1-2. データ活用と機械学習 9
© Money Forward, Inc.1-1. 機械学習とは 何らかの入力Xを受け取って何らかの出力yに変換する関数f(=モデル)を、データから導き出す仕組み。 入力X (気温、湿度、気圧、…) 出力y (明日の天気) fデータモデル 10
© 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
© Money Forward, Inc.1-1. 機械学習とは 単回帰の例: fデータルールを導き出す身長 170cm 150cm 180cm 155cm 165cm … 体重 65kg 45kg 90kg 55kg 60kg … f175cm ?kg 12
© Money Forward, Inc.1-1. 機械学習 機械学習の性質 ● より多くのデータがあれば正確に予測できる ○ 5件より50件、50件よりも500件の方が正確に予測できる ● 各データに関するより詳細な情報(=特徴量)があれば正確に予測できそう ○ 日々の摂取カロリーや運動量などの情報があれば正確に予測できそう ● 表現能力の高いモデルがあれば正確に予測できそう ○ 身長が高ければ、それに比例して体重が増える訳ではない より多くのデータや特徴量を扱える表現能力の高い機械学習アルゴリズムが考案され、利用されてきた。 しかし、相変わらず特徴量は人間の手で用意する必要があった。 13
© Money Forward, Inc.1-1. 機械学習とは これは何? 14
© Money Forward, Inc.1-1. 機械学習とは ILSVRC 2012という画像認識コンペでトロント大学の「AlexNet」が圧倒的な精度で優勝。 出典:ImageNet Classification with Deep Convolutional Neural Networks - Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton 15
© Money Forward, Inc.1-1. 機械学習とは なぜこのようなブレイクスルーが起きたのか。 ビッグデータ16
© Money Forward, Inc.1-1. 機械学習とは データ量の爆発的な増加 出典:総務省「ICTコトづくり検討会議」報告書https://www.soumu.go.jp/main_content/000242149.pdf17
© Money Forward, Inc.1-1. 機械学習とは 18
© Money Forward, Inc.1-1. 機械学習とは すべては「データ」次第。 ● データ量が増えればモデルの性能が向上するし、データ量が少なければ性能は向上しない ● 偏りがあるデータからは偏った予測が生まれる ● モデルは単に過去統計的にこういうパターンが多かったというだけであり、未来もそうなるかはわからない いかに質の高いデータを集められるかが決定的に重要。 19
© Money Forward, Inc.1-1. 機械学習とは 機械学習はビジネスへ応用するフェーズに入った。 お客様が本当に求めているものは何か、お客様を深く理解し、一人一人のお客様に応じた最適な答えをデータから導き出す。 そのために使える強力なツールが機械学習。 20
© Money Forward, Inc.1-2. データ活用と機械学習 データ分析・活用には4つのステップがあると言われる。 1. Descriptive analytics 何が起きたのかを把握する。 2. Diagnostic analytics なぜ起きたのかを把握する。 3. Predictive analytics これから何が起きるのかを把握する。 4. Prescriptive analytics これから何をすべきかを把握する。 tableauやLookerなどのBIツールを利用 機械学習を利用 21
© Money Forward, Inc.1-2. データ活用と機械学習 ● 景気動向予測 ○ 金融機関が保有するテキストから足元の景気がどうなっているかを予測する ● デフォルト予測 ○ 金融機関が企業に資金を融資する際に、返済可能かどうかを予測する ● レコメンデーション ○ どのコンテンツを表示すればクリックされるのかを予測する ○ コールセンターのオペレータがどのお客様に架電すれば売上に繋がるのかを予測し、コールリストを作成する 22
© Money Forward, Inc.1-2. データ活用と機械学習 MoneyForwardの機械学習活用事例 ● 「マネーフォワード クラウド債務支払」での請求書解析システム 23
「マネーフォワード クラウド債務支払」とは 請求書やワークフロー管理に関わる業務を効率化するクラウド型債務管理システム 購買・発注や請求書の支払における申請・承認・決裁のワークフローを、クラウド上で完結できます。紙の稟議書や請求書の回覧が不要になるため、ペーパーレス、ハンコレスでの対応が可能になります。また、外出先や自宅からでも申請と承認作業が可能なため、テレワークでも活用できます。
「マネーフォワード クラウド債務支払」 ユーザは請求書に関する情報を入力し、支払依頼を作成します
「マネーフォワード クラウド債務支払」での請求書解析システム 重要項目の入力作業を半自動化するために機械学習技術を利用 https://corp.moneyforward.com/news/release/service/20211129_mf_press-3/背景:請求書の申請のために、請求書に書かれている項目を手動入力する必要がありました ( 「支払期日」は...”2022/3/17”...) ソリューション:請求書に記述されている重要項目を機械的に抽出し予め入力することで、ユーザの入力作業を減らします。項目の機械抽出部分で機械学習技術を利用しています。
© Money Forward, Inc.1. なぜ機械学習か? まとめ この章で学んだこと ● 機械学習とは何か ● 機械学習が何をもたらしたか ● データ活用のステップと機械学習の位置付け ● 機械学習がどのように活用されているのか ● MoneyForwardの取り組み 27
© Money Forward, Inc.2. 機械学習の基礎 28
© Money Forward, Inc.2. 機械学習の基礎 2-1. 機械学習プロジェクトのプロセス 2-2. 機械学習の種類 2-3. 機械学習の理論 2-4. 代表的な機械学習アルゴリズム 29
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス ● CRISP-DM CRoss-Industry Standard Process forData Mining データ分析プロジェクトのプロセスを示した業界標準。 データを中心にして6つの工程が存在する。 ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 30
© Money Forward, Inc.ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 2-1. 機械学習プロジェクトのプロセス 1. ビジネス理解 Business Understanding 現状を把握し、あるべき姿との乖離から機械学習を使って解くべき課題を特定する。 KPIを設定する。 31
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス 2. データ理解 Data Understanding データを取得・蓄積してきた背景を理解した上で、集計・可視化して分布や傾向を把握する。 EDA (Exploratory Data Analysis)ともいう。 ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 32
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス 3. データ準備 Data Preparation データを機械が理解できる形・判別しやすい形(特徴量)に変換する。 機械が判別しやすい形に変換すること、またそのようなテクニックをFeatureEngineeringともいう。 ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 33
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス 4. モデル作成 Modeling 各種機械学習アルゴリズムを利用してモデルを作成する。モデルはデータに共通するパターンを数式化したもの。 ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 34
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス 5. 評価 Evaluation 作成したモデルがKPIを達成しているか、未知のデータを使って評価する。 ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 35
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス 6. 共有・展開 Deployment 作成したモデルをプロダクション環境にデプロイする。 モデルの性能を継続的に確認し、新たなデータで再学習を行う。 ビジネス理解 データ理解 データ準備 モデル作成 評価 共有・展開 データ 36
© Money Forward, Inc.2-1. 機械学習プロジェクトのプロセス ● 機械学習プロジェクトの特徴 反復的 各工程は順番に進めるのではなく、何度も同じ工程を行ったり来たりする。 探索的 結果はやってみるまでわからない。 37
© Money Forward, Inc.2-2. 機械学習の分類 機械学習には学習のさせ方によって三つの分類に分けられる。 ● 教師あり学習 ○ 入力X(説明変数)と出力y(目的変数)のペアを与える ● 教師なし学習 ○ 入力Xのみを与える ● 強化学習 ○ 環境の状態を観測し、それを元にとった行動から得られる報酬を最大化する 38
© Money Forward, Inc.2-2. 機械学習の分類 教師あり学習 入力X(説明変数)と出力y(目的変数)のペアを与える。 出力yのことを「教師信号」「ラベル」「クラス」ということもある。 ● 分類問題 ○ 出力yがカテゴリー変数の場合(例:明日の天気) ○ 2値分類、多クラス分類、マルチラベル分類 ● 回帰問題 ○ 出力yが数値変数の場合(例:明日の気温) プロジェクトとしては取り組みやすいが、一般に正解ラベルを収集することが困難だったり、ラベルの品質が問題になることがある。 39
© Money Forward, Inc.2-2. 機械学習の分類 教師なし学習 入力Xのみを与える。 ● クラスタリング ○ トピック分析 ○ 顧客セグメント分割 ● 可視化 プロジェクトとしては難易度が高くなる場合が多い。 プロジェクトの初期段階の予備調査として行われることもある。 40
© Money Forward, Inc.2-2. 機械学習の分類 強化学習 1. エージェントは状態を観測する 2. エージェントは行動を選択する 3. 環境はその行動によって変化し、新たな状態に遷移する 4. エージェントは報酬を受け取り、新たな状態を観測する(2.に戻る) 環境とのインタラクションを通じて、最終的に得られる報酬が最も多くなるように、ある状態における最適な行動を求める。 自動運転やロボット操縦、AlphaGoなど。 エージェント 環境状態・報酬行動41
© Money Forward, Inc.2-3. 機械学習の理論 1. 何らかの方法で調整可能な関数 f(X) を定義する ○ 関数 f のことを「モデル」という 2. 目的変数 y とモデルの出力 ŷ の誤差を評価する関数を定義する ○ この関数を「目的関数」または「誤差関数」という 3. 目的関数を最小化する最適化問題を解いて、最適解 f(X) を求める ○ 最適化問題を解く過程を「学習」あるいは「訓練」という yŷfX 目的関数* 42
© Money Forward, Inc.2-3. 機械学習の理論 ● 機械学習アルゴリズム ○ 関数 f とその最適解の求め方を「機械学習アルゴリズム」という ○ さまざまな「機械学習アルゴリズム」が提案されているが、そのほとんどは前ページの流れに従って学習することが多い ● 帰納バイアス - Inductive Bias ○ ポイントは関数 f に何らかの前提条件や制約が課されていること ■ 線形回帰であれば説明変数Xと目的変数yは線形関係があるという仮定を置いている ○ 与えられたデータがその前提条件にフィットしていればうまく予測できるし、そうでなければうまく予測できない ○ つまり、データの性質によって機械学習アルゴリズムには向き・不向きがある ○ 逆に言えばあらゆるデータに対して有効な機械学習アルゴリズムは存在しない ■ ノーフリーランチ定理 (No Free Lunch Theorems) という 43
© Money Forward, Inc.2. 機械学習の基礎 まとめ この章で学んだこと ● 機械学習プロジェクトのプロセスとその特徴 ○ 反復的、探索的 ● 機械学習の分類 ○ 教師あり、教師なし、強化学習 ● 機械学習はどのようにしてデータからルールを導き出すのか ● 帰納バイアス 44
© Money Forward, Inc.3. 実践 45
© Money Forward, Inc.3-1. ビジネス理解 Business Understanding 46
© Money Forward, Inc.3-1. ビジネス理解 ビジネスの背景を理解し、機械学習で解くべき課題を定義する。 システム開発における「要件定義」工程に位置付けられる。 最終的には以下の三つを定義することがこのプロセスの目標。 1. 入力Xと出力y 2. KPI 3. 制約条件 47
© Money Forward, Inc.3-1. ビジネス理解 ビジネス課題の例: ● 営業担当が往訪先企業に対してどのサービスを薦めるべきかを知りたい。 ○ MoneyForwardには40以上のサービスがある。 ○ 営業担当が往訪先企業と面談可能な時間はせいぜい30分程度。 ○ そのため、往訪先企業が興味を持ってくれそうなサービスに絞って重点的に説明したい。 ○ どの企業が現在どんなサービスを利用しているかというデータがある。 みなさんならどうしますか? 48
© Money Forward, Inc.3-1. ビジネス理解 失敗プロジェクトの例: 営業担当者は毎日Kibelaに日報を書いていて大量にテキストデータが溜まっているから、これを自然言語処理で最近流行っているBERTに突っ込めば何とかなるんじゃないか。 どこがダメ? 49
© Money Forward, Inc.3-1. ビジネス理解 ● 機械学習ありきで考えない 機械学習はあくまで数ある問題解決手段の一つにすぎない。 機械学習を使わなくて済むのであればそれに越したことはない。 ● 今あるデータに固執しない データが有益なものかどうかは対象の問題による。 ユーザーが真に求めているものに焦点をあて、データ(ここでは刺さる提案)が生成される過程・背景を理解する事が重要。 50
© Money Forward, Inc.3-1. ビジネス理解 失敗プロジェクトの例 その2: 営業担当のAさんに過去刺さった提案はどんな場合だったかをヒアリングしたところ、 ● 面談相手の方が意思決定権を持っているか ● その方の機嫌がいい時を見計らってアプローチすることが重要 という回答だった。 どこがダメ? 51
© Money Forward, Inc.3-1. ビジネス理解 ● 仮説が間違っている 「往訪先企業ごとに有益なサービスは異なる」という仮説が間違っている可能性。→ピボットすることも検討すべきか(データを元に判断する) 現場を知らない人が企画すると起きやすい。 ● 機械学習はデータがなければ手出しできない 機械学習は魔法の杖ではない。データが無いところからは何も生まれない。 ● ただし、そこであきらめない データがなければ集めることも考える。コスト感覚を持つことも重要。 例:往訪先担当者のTwitterを見る 52
© Money Forward, Inc.3-1. ビジネス理解 業務フローのデザイン 機械学習だけで最終的なビジネス目標を達成することはできない。 業務運用+エンジニアリング+機械学習の連携が必要。 特に機械学習の観点からは以下の点に注意する。 ● API実行なのか、バッチ実行なのか ● いつ実行されるのか、実行にかけられる時間はどの程度か ● その時に使用可能なデータはどのデータか ここから機械学習の入力Xと出力yが定義される。 例:入力X=往訪先企業IDとサービスID、出力y=関心スコア 53
© Money Forward, Inc.3-1. ビジネス理解 KPIの設定 出力yが決まると機械学習モデルの評価指標を決める事ができる。 ビジネス目標と機械学習モデルの評価指標をなるべく一致させる。 具体的な閾値よりもどういう観点で評価するのかが重要。(ただし、ビジネスサイドからは閾値が重要となる場合はある) ● サービスの提案はいくつまで可能か? ● 確実にささる提案が欲しいのか、顧客ニーズ全てに応えたいのか プロジェクトの初期段階でKPIが明確になっていることは稀。プロジェクトを進めながら関係者全員の目線を合わせる。 54
© Money Forward, Inc.3-1. ビジネス理解 制約条件 機械学習モデルの実行時に課せられる制約条件を整理する。 ● 非機能要件 ○ メモリ ○ ターンアラウンドタイム ● 説明性・解釈性 ○ 例えば、営業担当は刺さるサービスの名前だけではなく、なぜその企業にはそのサービスがマッチするのかを知りたいと思うかもしれない。 55
© Money Forward, Inc.3-1. ビジネス理解 機械学習に100%の精度を求めない 機械学習モデルは単に「過去のデータからすると統計的にこういうことが将来起きやすいですよ」ということを教えてくれるだけのもの。 どんなに優秀なモデルでも100%の精度を保証することはできない。 ● 本当に機械学習で解くべき問題か? ● 間違いが起きた時のことを考慮してエンジニアリング・運用でフォロー 56
© Money Forward, Inc.3-1. ビジネス理解 まとめ この章で学んだこと ● このプロセスの目標 ○ 入力Xと出力y ○ KPI ○ 制約条件 ● 機械学習は一つの手段 ● データが生成される過程に思いを巡らせる ● 機械学習特有の考慮事項 ○ 実行時間・タイミング ○ 説明性・解釈性 ○ 100%の精度を求めない 57
© Money Forward, Inc.3-1. ビジネス理解 <グループワーク> 機械学習を使ったMoneyForwardの新しいサービスを企画してください。 ● サービスの名前 ● サービスの内容 ● 機械学習に必要なデータ ● 機械学習モデルの作成にあたって考慮すべき事項 58
© Money Forward, Inc.3-2. データ理解 Data Understanding 59
© Money Forward, Inc.3-2. データ理解 このプロセスで行うこと ● データに関する基本的な情報を把握する ● データの分布や傾向を把握する ● データ間の依存関係を把握する 目的①:ビジネス理解のため ● 仮説が正しいことをデータから確認する ● 新たな仮説を立て、プロジェクトの方向性を見直す 目的②:よりよいモデルの作成のため 60
© Money Forward, Inc.3-2. データ理解 1. データに関する基本的な情報を把握する ● キー情報やリレーション ● 個々のデータがどのタイミングで生成され、更新されるのか ○ 実運用を想定してモデルの学習・テストを行うために必要 ● 今保有しているデータ(全体)はいつからいつまでの期間のデータか ○ 季節性やイベントはないか ● いつ時点の断面でロードされたものか ○ 後々のプロセスでモデルの評価を行う際に重要 ● データ取得経緯 ○ なるべくランダムなデータが望ましいが、現実的には不可能 ○ 例えば、Money Forwardのデータは「Money Forwardを利用している人」というバイアスがある 61
© Money Forward, Inc.3-2. データ理解 2. データの分布や傾向を把握する ● 項目のデータ型を確認する ○ カテゴリー変数、数値変数 ■ 名義尺度:犬、猫 ■ 順序尺度:Short, Tall, Grande ■ 間隔尺度:気温(摂氏) ■ 比例尺度:体重 ○ カテゴリー変数の場合はcardinality(種類の多さ)を確認する ■ cardinalityの高い変数が特殊な対処が必要 62
© Money Forward, Inc.3-2. データ理解 2. データの分布や傾向を把握する ● 欠損値を確認する ○ RDBでいう「NULL」を欠損値という ○ なぜ欠損しているのかを確認する ■ 値がわからない ■ NULLを何らかのコード値として利用している ■ 毎日?時にシステムを停止してる ○ 機械学習アルゴリズムによっては欠損値を補完する必要がある ○ 欠損していることに意味がある場合は、欠損値を一つのカテゴリーとする ○ 欠損値の割合があまりに多い場合は項目を削除することを検討する 63
© Money Forward, Inc.3-2. データ理解 2. データの分布や傾向を把握する ● 分布を見る ○ ヒストグラムを作る ○ 平均値はどの程度か、値の範囲はどこからどこまでのあたりに多いか、偏りがないか、裾が重くないか ○ 線形回帰やニューラルネットなどの機械学習アルゴリズムは説明変数が標準正規分布に従うことを仮定している場合が多い ○ 目的変数(出力y)が偏っているとモデルの作成や評価がうまくいかない場合がある 64
© Money Forward, Inc.3-2. データ理解 2. データの分布や傾向を把握する ● 外れ値を見る ○ 何らかの理由でデータに間違いが含まれていることはよくある ○ 正常なデータでも極端に大きな(あるいは小さな)データが含まれていると、そのデータにモデルが引っ張られてしまうことがある 身長 170cm 150cm 180cm 155cm 60cm … 体重 65kg 45kg 90kg 55kg 165kg … 65
© 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
© Money Forward, Inc.3-2. データ理解 3. データ間の依存関係を把握する ● 散布図(scatter plot)や重ね合わせヒストグラムを作る ○ seabornのpair_plot() 67
© Money Forward, Inc.3-2. データ理解 3. データ間の依存関係を把握する ● 相関係数、カイ二乗検定、相互情報量 ○ いずれもデータ間の依存関係を表す指標 ○ 相関が強い説明変数があると、「多重共線性」という問題を引き起こすことがある ● とりあえずモデルを作ってみることも ○ LightGBMのfeature_importanceを見る、など ● 「相関が強い」ということは必ずしも「因果関係がある」とは言えないが、そのデータが生成される過程をうまく説明できる可能性がある。 正の相関 負の相関 無相関 68
© Money Forward, Inc.3-2. データ理解 よく使うツール ● Pandas-Profiling, Sweetviz, D-Tale ○ 非常に便利 ● matplotlib, seaborn, plotly, bokeh ○ 可視化する ● pandas, numpy, scipy, scikit-learn ○ 相関係数やカイ二乗検定、相互情報量を求めるのに使う 69
© Money Forward, Inc.3-2. データ理解 このプロセスで大事なこと ● ついついデータ全体の傾向や分布だけを見て満足しがち ● データ1件1件がどのように生成されたかを想像することが重要 ○ このお客様が置かれている状況 ○ データを生成するに至った経緯 ○ 他にはないその人だけの特徴 ○ 複数の人に共通するパターン 70
© Money Forward, Inc.3-2. データ理解 まとめ この章で学んだこと ● このプロセスの目的 ○ ビジネス理解 ○ よりよいモデルの作成 ● データの何を理解すれば良いのか ○ 基本的な情報 ○ 分布と傾向 ○ 依存関係 ● どうやってその情報にアクセスするか ● どういう観点でデータを眺めるのか 71
© Money Forward, Inc.3-2. データ理解 <グループワーク> Adult Data Set (UCI Machine Learning Repository) pandas-profilingとseabornで可視化したものがあります。 気づいたことを議論してください。 ● 年収5万ドル以上の人はどんな人か? ● モデルを作成する時に気をつけるべき項目はないか? ● 他に気になることはないか? 72
© Money Forward, Inc.3-3. データ準備 Data Preparation 73
© Money Forward, Inc.3-3. データ準備 このプロセスで行うこと ● データをMLアルゴリズムでうまく処理できる形式に変換する ● モデルの精度を高めるために説明変数を加工する 具体的には、 1. 前処理 2. 特徴量生成 3. 特徴量選択 74
© Money Forward, Inc.3-3. データ準備 1. 前処理 ● 欠損値補完 ○ 線形モデルなどは欠損値を何らかの値で埋める必要がある ○ 平均値や中央値、最頻値で補完することが多い ○ 平均値を求める際にテストデータを含めないことが重要 ● 標準化・正規化 ○ 説明変数のスケールを揃える ○ Min-Max Scaler, StandardScaler, PowerTransformer ○ 欠損値補完と同様にテストデータを含めないことが重要 75
© Money Forward, Inc.3-3. データ準備 1. 前処理 ● カテゴリー値 ○ カテゴリー値を何らかの数値に変換する カテゴリー値 OrdinalEncoderLabelEncoderOne-Hot Encoderねずみ 牛 虎 うさぎねずみ 0 1 0 0 0牛 1 0 1 0 0虎 2 0 0 1 0うさぎ 3 0 0 0 176
© Money Forward, Inc.3-3. データ準備 1. 前処理 ● テキスト ○ BoW (Bag of Words) ■ テキストを単語に分割して、テキストに含まれる単語の数を数える ○ TF-IDF ■ 全てのドキュメントに共通して頻繁に出てくる単語の重要度を下げるため、テキストに含まれる単語の割合(=TF)をドキュメント全体に含まれる割合(=DF)で割ったもの ○ Word Embedding ■ Wikipediaのような大規模コーパスを使って単語の意味を数値に置き換えたもの ○ nltkやgensimを利用 77
© 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
© Money Forward, Inc.3-3. データ準備 2. 特徴量生成(Feature Engineering) ● 複数の特徴量の組み合わせ ○ カテゴリー変数 + カテゴリー変数 ○ カテゴリー変数 + 数値変数 ■ あるカテゴリーの中での数値変数の平均値や標準偏差 ● 水曜日の平均売上を計算し、水曜日のカテゴリー値を平均売上で置き換える ■ その平均値から数値変数がどの程度乖離しているか ● その日の売上が水曜日の平均売上からどれだけ乖離しているか ○ 数値変数 + 数値変数 ■ 四則演算 ● 数値変数の層化 (binning) ○ 数値変数の分位点などで分割し、カテゴリー変数として扱う ● (後付けでもいいが、)解釈可能なレベルに止めるべき 79
© Money Forward, Inc.3-3. データ準備 2. 特徴量生成(Feature Engineering) ● Target Encoding ○ カテゴリー変数をそのカテゴリーの出力yの平均値で置き換える ○ 単純に学習データ全体の平均値で置き換えてしまうと、入力Xに本来知り得ない出力yの情報が埋め込まれてしまう(「リーク」という) ○ データを5つ程度のグループに分割して、自身のデータが含まれていないグループの平均値を使ってエンコードする(「OOF (Out Of Fold)」という) ○ 詳しくは書籍「Kaggleで勝つデータ分析の技術」(著者:門脇 大輔, 阪田 隆司, 保坂 桂佑, 平松 雄司)を参照 80
© Money Forward, Inc.3-3. データ準備 3. 特徴量選択 ● 過学習 ○ 特徴量が多くなると、実際には依存関係がない特徴量であるにも関わらずたまたま残差(それ以外の特徴量による予測 ŷと実測値yの誤差)にフィットしてしまう事がある。○ このような場合、汎化性能が下がる。(学習データの性能に対してテストデータの性能が下がる)● 多重共線性○ 相関の強い特徴量があると以下のような問題を引き起こす。■ 目的変数に対する寄与度が分散される(特に決定木系のモデルで起きる)■ 本来プラスの影響を与えるはずの特徴量がマイナスの寄与になったり、過剰に大きな寄与度になったりする(特に線形モデルで起きる)● 運用○ 複雑な特徴量を多数用意するのはサービスの保守性を低下させる81
© Money Forward, Inc.3-3. データ準備 3. 特徴量選択 ● 全て同じデータが入っている特徴量は削除する ● cardinalityが高い、もしくは、全て異なる値が入っているカテゴリー変数は削除する ○ cardinalityの高いカテゴリー変数は何らかのエンべディング手法を検討 ● 相関係数が高い特徴量は削除する○ 全特徴量間で相関係数を計算し、特徴量ごとに集計したり調和平均を取ったりして、値が大きい特徴量を削除する● 目的変数yとの依存関係が強い特徴量を選ぶ○ 相関係数やカイ二乗検定、相互情報量など○ scikit-learnのmutual_info_classif/mutual_info_regression82
© Money Forward, Inc.3-3. データ準備 3. 特徴量選択 ● モデルを利用する○ 決定木系モデルのfeature_importanceを見る○ 線形モデルのL1正則化(Lasso回帰)○ PCAやtSNE、UMAPによる次元削減● 特徴量を順番に追加したり、徐々に削除したり83
© Money Forward, Inc.3-3. データ準備 よく使うツール ● pandas ○ pandasには特徴量を加工するための便利な関数が多数用意されている。 ● scikit-learn ○ feature_selectionに特徴量選択に有効なツールが多数用意されている。 ● featuretools ○ 履歴系のテーブルから集計して特徴量を作る際に便利。 ● Category Encoders ○ カテゴリー変数を数値変数に変換する際に使える。 ○ Target Encodingをする場合は「James-Stein Encoder」を利用すると良い。 ○ ただし、OOFは自分でやる必要あり。 84
© Money Forward, Inc.3-3. データ準備 このプロセスで大事な事 ● 精度の高いモデルを作る上で最も重要なプロセス ○ KaggleではFeature Engineeringに最も多くの時間を割く ○ 以下の作業の繰り返し ■ 丁寧なEDA ■ データが生成される過程を想像 ■ 仮説を立てる ■ 仮説に基づいて特徴量を追加 ■ モデルを作成し、精度の向上に寄与するかを確認 ○ ビジネスに精通した人にヒアリングするというのも有効 ■ ヒューリスティック分析という 85
© Money Forward, Inc.3-3. データ準備 このプロセスで大事な事 ● リークに気をつける ○ 本来知り得ない目的変数yやテストデータに関する情報を特徴量に入れない ● 運用段階のことを考慮する ○ その特徴量は運用段階で利用できるか?(たとえば、データ連携のタイムラグがないか?など) ○ 大量かつ複雑な特徴量は保守性を低下させる可能性 ○ その特徴量が理論的にも有効であることが示されているとベスト 86
© Money Forward, Inc.3-3. データ準備 まとめ この章で学んだこと ● 精度の高いモデルを作成する上で最も重要なプロセス ● 前処理の手法 ● Feature Engineeringの様々なテクニック 87
© Money Forward, Inc.3-3. データ準備 <実習(各自で作業)> Adult Data Set (UCI Machine Learning Repository) 年収5万ドル以上かどうかを予測する問題です。 前処理を行うコードが実装されているので、実行して結果を確認してください。 余裕があれば、どんな特徴量を追加すればよいかを考え、特徴量を追加してみてください。 88
© Money Forward, Inc.3-4. モデル作成 Modeling 89
© Money Forward, Inc.3-4. モデル作成 このプロセスで行うこと ● 適切な機械学習アルゴリズムを使ってモデルを作成する ● データの性質に応じて適切に対処する 以下の内容を説明します。 1. 機械学習アルゴリズムの使い分け 2. 実践的なテクニック 90
© Money Forward, Inc.3-4. モデル作成 1. 機械学習アルゴリズムの使い分け(テーブルデータの教師あり学習の場合) MLアルゴリズム 説明勾配ブースティング決定木 前処理が楽で特徴量選定もあまり気にする必要がなく、そこそこの精度が期待できるため、まずはこれで試すのがよい。RandomForest 勾配ブースティング決定木では過学習する場合に試す場合がある。線形モデル 丁寧な前処理が必要だが、勾配ブースティング決定木とは違った予測を行うことが多いため、アンサンブル(後述)に使える場合がある。SVM 複雑なモデルを構築できるが、過学習しやすい。データによっては有効な場合がある。MLP 複雑なモデルを構築できるが、過学習しやすい。データによっては有効な場合がある。91
© Money Forward, Inc.3-4. モデル作成 ● 勾配ブースティング決定木 ○ 実装としてはXGBoost, LightGBMが有名どころ ○ Kaggleでは「初手LightGBM」が合言葉 ○ 以下のような理由から非常に使い勝手が良い ■ 説明変数の前処理が雑でよい ● 数値変数はそのままでOK ● 欠損値はそのままでOK ● カテゴリー変数はLabelEncoderでOK ■ 特徴量が多くても過学習しにくい ■ 学習が速い(特にLightGBM) ■ ハイパーパラメータチューニングしなくてもそこそこの精度 92
© Money Forward, Inc.3-4. モデル作成 ● Random Forest ○ 実装としてはscikit-learnのRandomForestClassifier/RandomForestRegressorがよく利用される ○ LightGBMのパラメータでRandom Forestを指定することも可能 ■ boosting: “rf” ○ 過学習に強い ○ 丁寧な前処理が不要な点は勾配ブースティング決定木と同様 ○ 勾配ブースティング決定木でどうしても過学習が避けられない時に試す 93
© Money Forward, Inc.3-4. モデル作成 ● 線形モデル(分類問題:ロジスティック回帰、回帰問題:線形回帰(単回帰・重回帰)) ○ 実装としてはscikit-learnが使われる事が多い ■ 分類問題:LogisticRegression ■ 回帰問題:Ridge, Lasso ○ 統計検定を行う場合はstatsmodelsを使う ○ 各説明変数Xに重みWをかけてバイアスbを足したものを予測 ŷとする ■ ŷ=WX+b○ 説明変数に対する丁寧な前処理が必要■ 数値変数はなるべく標準正規分布に近づける■ 欠損値は何らかの値で補完する■ カテゴリー変数はOne-Hotベクトルに変換する■ 説明変数が多いと過学習しやすい○ 多重共線性に気をつける必要がある○ 決定木系のモデルとアンサンブルすることが多い94
© Money Forward, Inc.3-4. モデル作成 ● SVM (Support Vector Machine) ○ 実装としてはscikit-learnが使われる事が多いようだが、あまり速くない ○ 決定境界をなるべく広げるように学習する ○ カーネル関数を指定する事で非線形の決定境界を学習できる ○ 説明変数の前処理や多重共線性については線形モデルと同様 ● MLP (Multi-Layer Perceptron) ○ 実装としてはscikit-learnを使うか、pytorchやtensorflow(keras)が使われる ○ 非線形の決定境界を学習できるが過学習しやすい ○ 説明変数の前処理や多重共線性については線形モデルと同様 95
© Money Forward, Inc.3-4. モデル作成 2. 実践的なテクニック 2-1. 過学習 2-2. インバランス 2-3. アンサンブル 2-4. スタッキング 2-5. ハイパーパラメータチューニング 2-6. モデルの解釈性・説明性 96
© 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
© Money Forward, Inc.3-4. モデル作成 2-1. 過学習 ● データを増やす ○ 最も有効だが、最もコストがかかる ● 特徴量を減らす ○ 3-3. データ準備の「3. 特徴量選択」で説明した手法を試す ● 過学習に強い機械学習アルゴリズムを選択する ○ 勾配ブースティング決定木やRandomForest ● 機械学習アルゴリズムのハイパーパラメータを調整する ○ LightGBMであれば、num_leavesやmax_depthを減らす ○ MLPであれば、Dropout、weight_decayを試す 98
© Money Forward, Inc.3-4. モデル作成 2-2. インバランス 分類問題で出力yが偏っていると学習や評価で問題が生じやすい。 例えば、2値分類問題で99%が0だった場合、モデルは常に0を出力すれば99%の精度が達成できる。しかし、そのようなモデルは役に立たない。 ● アンダーサンプリング ○ 多いラベルのデータからランダムに抽出する ● オーバーサンプリング ○ 少ないラベルのデータをコピーして増やす ● 目的関数を調整する ○ 少ないラベルのデータの重みを増やす 99
© Money Forward, Inc.3-4. モデル作成 2-3. アンサンブル 複数のモデルを組み合わせて最終的な予測を行う手法。 ŷ1f1Xŷ2f2ŷ3f3ŷ100
© Money Forward, Inc.3-4. モデル作成 2-3. アンサンブル 複数のモデルを組み合わせて最終的な予測を行う手法。 一般的に単一のモデルで予測するよりも汎化性能が向上することが多い。 ● 決定木と線形モデル ● 使用するデータや特徴量の異なるモデル ● 乱数シードの異なるモデル などを組み合わせる。 最終的な予測値は平均値や最大値を使用する。性能の高いモデルの重みを大きくしたり、その重みを最適化したりすることも。 101
© Money Forward, Inc.3-4. モデル作成 2-4. スタッキング あるモデルAの予測値を特徴量として学習した別のモデルBで最終的な予測を行う手法。(その際にモデルBは入力Xも特徴量として利用できる) ŷ1f1モデルAX ŷf2モデルB102
© Money Forward, Inc.3-4. モデル作成 2-4. スタッキング あるモデルAの予測値を特徴量として学習した別のモデルBで最終的な予測を行う手法。(その際にモデルBは入力Xも特徴量として利用できる) Target Encodingや欠損値を平均値で補完するのもスタッキングの一種。 単純に実装するとリークしてしまうのでOut of Foldでモデルを学習する必要がある。 モデルAはどういう時に正解しやすいか(間違えやすいか)ということを、モデルBが学習する。 103
© Money Forward, Inc.3-4. モデル作成 2-5. ハイパーパラメータチューニング 機械学習アルゴリズムには、学習の過程で自動的に調整されるパラメータとは別に、手動で学習の前に設定しておくパラメータがある。 ハイパーパラメータはデータに応じて適切に設定する必要があるが、事前に当たりをつけることが難しいものも多い。 ● Grid Search ● Random Search ● 最適化ツール ○ optuna ○ hyperopt 104
© Money Forward, Inc.3-4. モデル作成 2-6. モデルの解釈性・説明性 モデルがどのような特徴量を重視しているかは以下の情報からわかる。 ● 勾配ブースティング決定木、Random Forest ○ feature_importance ■ 2種類ある ● split: どの特徴量で枝分かれしているか ● gain: その枝分かれによってどれだけ目的関数の値が下がっているか ■ どちらの方向に寄与しているかはわからない ● 線形モデル ○ 重みW ■ 寄与する方向がわかる 105
© Money Forward, Inc.3-4. モデル作成 2-6. モデルの解釈性・説明性 SHAPやLIMEを利用すれば、各予測データに対してどの特徴量が寄与しているかがわかる。 ● SHAP (SHapley Additive exPlanations) ○ 各特徴量の貢献度をゲーム理論から割り出したもの ● LIME ○ 予測データ周辺の決定境界を超平面で近似し、その垂直方向を寄与度とするもの 106
© Money Forward, Inc.3-4. モデル作成 まとめ この章で学んだこと ● 機械学習アルゴリズムの使い分け ○ 初手LightGBM ● 各種テクニック ○ 過学習 ○ インバランス ○ アンサンブル ○ スタッキング ○ ハイパーパラメータチューニング 107
© Money Forward, Inc.3-4. モデル作成 <実習(各自で作業)> Adult Data Set (UCI Machine Learning Repository) 年収5万ドル以上かどうかを予測する問題です。 LightGBMで学習するコードが実装されているので、実行して結果を確認してください。 余裕があれば、その他の機械学習アルゴリズムも試してください。 108
© Money Forward, Inc.3-5. 評価 Evaluation 109
© Money Forward, Inc.3-5. 評価 このプロセスで行うこと ● 作成したモデルの性能を適切な評価指標で評価する ● オンラインの環境でモデルの性能を確認する 以下の内容を説明します。 1. 交差検証(Cross Validation) 2. 評価指標 3. A/Bテスト 110
© Money Forward, Inc.3-5. 評価 機械学習モデルの評価において一番大切なことは・・・ 学習時に使用していない「未知のデータ」で評価する事 ハイパーパラメータチューニングのデータも学習データとは別に用意する。 ● train: モデル学習用のデータ ● validation: ハイパーパラメータチューニング用データ ○ trainで学習後、validationで評価したスコアが最も良い値を採用する ● test: 最終的にモデルを評価するためのデータ train validation test111
© Money Forward, Inc.3-5. 評価 少ないvalidationデータセットで評価を行うことは以下のリスクがある。 ● validationデータセットが偏っている可能性 ● validationデータセットに過学習する可能性 かと言って、validationデータセットの割合を増やすとモデルの学習に使用するためのデータが減る。 →Cross Validation(交差検証) データセットをK個のFOLDに分割し、一つのFOLDをvalidationに、残りのFOLDをtrainにする、というのをK回繰り返す。 各FOLDに含まれるデータの偏りにも注意が必要。 112
© Money Forward, Inc.3-5. 評価 5 Fold Cross Validationの例: train validationtrain validation trainvalidation traintrain validation traintrain validation train113
© 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
© Money Forward, Inc.3-5. 評価 最終的にtestで使用するモデルは以下の2案がある。 ● CVで求めたハイパーパラメータを使って、trainingデータ全体で再度モデルを作成する ● CVで作成した5つのモデルのアンサンブル 115
© Money Forward, Inc.3-5. 評価 下記のようなケースではどのような評価指標で評価すべきでしょうか? 1. 病気の陽性・陰性を判断する診断モデル ○ 本当は陰性なのにモデルが誤って「陽性」を予測: ○ 本当は陽性なのにモデルが誤って「陰性」を予測: 2. 郵送コストがかかるダイレクトメールの送信先リスト作成モデル ○ 本当は購入してくれるお客様なのにモデルが誤って「購入しない」を予測: ○ 本当は購入してくれないお客様なのにモデルが誤って「購入する」を予測: どちらも正しく判断して欲しいことに違いはないが、誤った判断を下した時の影響が異なる。 116
© Money Forward, Inc.3-5. 評価 「新型ウイルスを99%の精度で検出します!」 この検査キットは果たしてよいものだと言えるのか? 正しく評価するためには以下の情報が必要。 ● 全体に対する感染者の割合(インバランスの可能性) ● 業務的な観点(すべての感染者を見落とさない) 117
© Money Forward, Inc.3-5. 評価 混同行列(confusion matrix) ケース1(診断モデル):FNを減らしたい ケース2(DMモデル):FPを減らしたい 予測Positive Negative事実True TP: True Positive FN: False NegativeFalse FP: False Positive TN: True Negative118
© Money Forward, Inc.3-5. 評価 Recall 予測Positive Negative事実True TP: True Positive FN: False NegativeFalse FP: False Positive TN: True NegativeTP TP + FN Recall = 119
© Money Forward, Inc.3-5. 評価 Precision 予測Positive Negative事実True TP: True Positive FN: False NegativeFalse FP: False Positive TN: True NegativeTP TP + FP Precision = 120
© Money Forward, Inc.3-5. 評価 Accuracy 予測Positive Negative事実True TP: True Positive FN: False NegativeFalse FP: False Positive TN: True NegativeTP + TN TP + TN + FP + FN Accuracy = 121
© 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
© Money Forward, Inc.3-5. 評価 ROC-Curve 予測Positive Negative事実True TP: True Positive FN: False NegativeFalse FP: False Positive TN: True NegativeTP TP + FN Recall = FP FP + TN FPR = 閾値を左や右に動かす 画像出典:「Receiver Operating Characteristic (ROC)」scikit-learn developers. https://scikit-learn.org/stable/modules/cross_validation.html 123
© Money Forward, Inc.3-5. 評価 回帰問題によく使われる評価指標 ● RMSE ● MAE ● R2スコア(決定係数) ● 相関係数 業務的には最終的に何らかのアクションを起こすことが多いので、回帰問題のモデルであっても分類問題として評価するのも一つのやり方。 124
© Money Forward, Inc.3-5. 評価 オフラインの環境で性能が確認できたらオンラインの環境で評価する。 目的: ● 学習に使用したデータは収集段階で偏っている可能性があるため、オンラインの環境では期待した性能が出ない場合がある。 ● ビジネス理解の工程で立てたKPIは業務的な目標となっていて、オンラインでなければ確認できないことがある。 A/Bテストを実施し、従来のモデルやランダム群と比較してモデルの性能を最終確認する。 125
© Money Forward, Inc.3-5. 評価 A/Bテスト 従来モデル新モデル対象 顧客 全体 コンバージョン?名 / 全体?名 コンバージョン?名 / 全体?名 比較して評価する データ量が少ない場合は統計検定 126
© Money Forward, Inc.3-5. 評価 まとめ この章で学んだこと ● 機械学習モデルの評価において大切なこと ○ 学習時に使用していないデータで評価する ● Cross Validation ● 評価指標 ○ Precision, Recall, F1 ○ AUC 127
© Money Forward, Inc.3-5. 評価 <実習(各自で作業)> Adult Data Set (UCI Machine Learning Repository) 年収5万ドル以上かどうかを予測する問題です。 LightGBMのモデルの性能を評価する処理が実装されています。実行して結果を確認しましょう。 CVの結果や混同行列の結果を見て、このモデルの評価を行ってください。 128
© Money Forward, Inc.3-6. 共有・展開 Deployment 129
© Money Forward, Inc.3-6. 共有・展開 モデルはデプロイして終わりではない。 稼働後も継続してモニタリングし、必要に応じてリモデリングを行う必要がある。 ここでは以下の話をします。 ● ドメインシフト ● MLops ● 機械学習に求められるFairness 130
© Money Forward, Inc.3-6. 共有・展開 Google Trends 「ウクライナ」vs「タピオカ」の過去5年間の推移。 131
© Money Forward, Inc.3-6. 共有・展開 ドメインシフト データの分布は徐々に、あるいは、何かをきっかけにして急激に変化することがある。これを「ドメインシフト」という。(「コンセプトドリフト」ともいう) このようなデータを利用していると、機械学習モデルは性能が悪化する。 なるべく普遍的なデータを利用すべきだが、性能と引き換えになりがち。 継続的にモニタリングを行い、必要に応じてリモデリングを行う。 132
© Money Forward, Inc.3-6. 共有・展開 リモデリング ● 新しく収集したデータで再学習を行う ● EDAからやり直す ○ 既存モデルの学習データと新しく収集したデータの分布を見比べる ○ 既存モデルのfeature importanceと新しく収集したデータで再学習したモデルのfeatureimportanceを見比べる ○ 特徴量を追加、あるいは、削除して再学習する ○ A/Bテストを実施する 既存モデルの性能を維持しつつ、新たなことにチャレンジするためにはCRISP-DMのサイクルを高速に回す必要がある。 133
© Money Forward, Inc.3-6. 共有・展開 MLOps 機械学習モデルのライフサイクルを高速に回すために必要な ● 円滑なチーム間の連携 ● 自動化 ● バージョン管理(データを含む) ● それらを支える基盤・ツール群 などを整備し、管理体制を構築することをMLOpsという。 (DevOpsの機械学習版) 134
© 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
© Money Forward, Inc.3-6. 共有・展開 Microsoft AI bot "Tay" 「マイクロソフトのAI、ヘイト発言を「学習」して停止」 - WIRED https://wired.jp/2016/03/25/tay-tweet-microsoft/ しかしマイクロソフトは、開始してから16時間後の24日、Tayを停止した。ナチスを賛美する発言などを始めてしまったからだ。もともとは、人間の発言を繰り返すよう指示されるとそれに従う機能によるものだったが、そのうち、関係のない場面でも問題発言が見られるようになった。 136
© 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 malecandidates were preferable. It penalized resumes thatincluded the word “women’s,” as in “women’s chess clubcaptain.” And it downgraded graduates of two all-women’scolleges, according to people familiar with the matter. Theydid not specify the names of the schools. 137
© Money Forward, Inc.3-6. 共有・展開 まとめ この章で学んだこと ● 機械学習モデルをモニタリングする必要性 ● MLOps ● 機械学習モデルに求められるFairness 138
© Money Forward, Inc.4. 発展 139
© Money Forward, Inc.4. 発展 この章では以下の内容についてご紹介します。 1. 本日は詳しくご紹介しなかった機械学習トピック 2. 自習教材 a. 書籍 b. 学習サイト c. 実行環境 d. データセット e. データ分析コンペ 3. MoneyForwardのサポート体制 140
© Money Forward, Inc.4. 発展 本日は詳しく取り上げなかった機械学習トピック ● 画像 ● 自然言語処理 ● 推薦システム 141
© Money Forward, Inc.4. 発展 ● Pythonではじめる機械学習 Andreas C. Muller、Sarah Guido 著、中田 秀基 訳 ○ 本日紹介した機械学習プロジェクトの一連のプロセスとPythonによる実装を学ぶことができる ○ 機械学習アルゴリズムの理論については触れる程度 142
© Money Forward, Inc.4. 発展 ● Kaggleで勝つデータ分析の技術 門脇大輔,阪田隆司,保坂桂佑,平松雄司 著 ○ Kaggleで勝つために必要な様々なテクニックを紹介してくれる良書 ○ 実務でも有効 143
© Money Forward, Inc.4. 発展 ● 機械学習帳 - 岡崎 直観 (東工大) ○ https://chokkan.github.io/mlnote/index.html ○ 機械学習の理論を基礎から教えてくれる ○ サンプルコードはGitHubで公開されており、バナーボタンから簡単にGoogle Colabなどで試すことができる 144
© 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
© 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
© Money Forward, Inc.4. 発展 ● データ分析コンペ ○ Kaggle ■ https://www.kaggle.com/ ■ 世界最大のデータ分析コンペプラットフォーム ■ 世界中のデータサイエンティストが集まり、常時10程度のコンペが開催されている ■ GPUが利用可能なJupyter Notebook環境やDatasetなども無料で利用可能 ○ 日本のデータ分析コンペプラットフォーム ■ SIGNATE ■ probspace ■ Nishika ■ atmaCup 147