機械学習入門
【アジェンダ】
・事前説明(15分)
・一緒にデモンストレーション(50分)
・休憩(5分)
・習った内容をもとに自分で精度を上げてみる(40分)
0
バージョン管理
バージョン管理 | 作成者 | 内容 |
Ver.1.00 | ウメ | 資料作成 |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
1
目的・狙い / 想定読者
目的・狙い
KaggleやSIGNATEなどのデータ分析コンペにチャレンジ出来るよう
機械学習の一連の動作を覚える
想定読者
①初めて「機械学習」を学ぶ人
②これから「機械学習」を使ってデータ分析コンペにチャレンジする人
2
機械学習について
3
機械学習とは?
機械学習とは?
コンピュータにデータを読み込ませて、アルゴリズムに基づいて分析させる手法のこと。
事例となるデータを反復的に学ばせることにより、そこに潜む特徴やパターンを見つけ出させる。
その特徴を新しいデータに適用することで、新しいデータの分析や予測を行うことが可能となる。
コンピュータにラベル※付きの入力値を与えて学習させる。
これを入れたらこれを出すのが正解という訓練を繰り返す
ことで、新しいデータを入れたときに正しい出力ができる。
ラベルの付いていないデータを与え、データの特徴や傾向を学習させる。
この場合、正しい出力というものは存在しないので、入力値を分類(クラスタリング)できるように訓練し、新しいデータがどのグループに近いかを判別させる。
※ラベル=答えと考えて
コンピュータの出力に点数をつけることで、より点数の高い(価値の高い)出力を学習させる。
望ましい結果には報酬を与えることで、機械によりよい出力を覚えさせる。有名なものは囲碁ソフトの「AlphaGo」。
教師あり学習
教師なし学習
強化学習
4
教師あり学習で出来ること
回帰問題
回帰:物事を予測する / 物事のトレンドを予測することが可能。
例)不動産価格、株価、会社業績、金利など
分類問題
分類:物事を分ける / 物事をカテゴリ別に分けることが可能。
例)犬か猫か、タイタニック予測(生きるか死ぬか)、あやめ分類など 多数
5
機械学習のアルゴリズム
機械学習アルゴリズムとは?
簡単に言うと計算方法のことを指す。
機械学習を用いる場合、あるデータを分析・処理することで求めたい結果を得る必要がある。
この結果をいかに短時間で効率よく得られる?という点に着目し、様々な特徴を持ったアルゴリズムが
研究・開発されている。
今日学ぶ・使うのはコレ
6
機械学習の一連の動作
機械学習の一連の動作を説明していく。
厳密には下記の一連の動作がWFのように上から下へ流れるのではなく、行ったり来たりする。
1.データを収集する ※コンペサイトでは既にデータが用意されている
2.データを読み込む / データを理解する / データの前処理を行う
3.データの特徴把握 / 教師データの設計
仲間はずれ(外れ値)がないか、相関関係がある変数はどれか
4.機械学習アルゴリズムの選択 / 学習(モデルの構築)
5.モデルの性能指標
6.モデルの予測精度改善
機械学習の作業
7
実際にSIGNATEの案件を使って実演
チャレンジ!!
https://signate.jp/competitions/121
【練習問題】自動車の走行距離予測
ガソリン1ガロンあたりの走行距離を予測しよう。
Google Colaboratoryを開いて、
梅本の実演を見ながら一緒に操作してみてください。
8
機械学習アルゴリズム
回帰分析とは
ある変数xが与えられたとき、それと相関関係のあるyの値を説明・予測すること。
例えば、xを年齢、yを年収としたときに、年齢が上がると年収がどれだけ上がるのか、
あるいは、ある年齢のときの年収はいくらかといったことが、回帰分析を使うことで分かる。
https://data-viz-lab.com/multiple-regression-analysis
イメージ
今回の例で言うと・・・
y(目的変数:mpg(ガソリン1ガロンあたりの走行距離) =
x1(説明変数:cylindersのデータ) * a1(説明変数:cylindersのデータの傾き) +
x2(説明変数:displacementのデータ) * a2(説明変数:displacementのデータの傾き) +
x3(説明変数:weightのデータ) * a3(説明変数:weightのデータの傾き) +
x4(説明変数:model yearのデータ) * a4(説明変数:model yearのデータの傾き) +
x5(説明変数:originのデータ) * a5(説明変数:originのデータの傾き) + b(切片)
9
評価指標
評価関数とは
数値を予測するモデルの予測精度を定量的に測るものとして大変重要であり、
予測モデルを作成するタスクに応じて適切に設定する必要がある。
今回の予測モデルでは大きな予測誤差を出さないモデルを作成することとし、
この目的に合わせて、評価関数としてRMSE(Root Mean Squared Error)を利用する。
RMSEとは
実測値とモデルの予測値の差を2乗し、その結果を足し合わせて平均化して、
最後に平方根を取った値。
RMSEは誤差を示す尺度である為、評価値が小さいほど良い予測であることを示す。
RMSEの特徴は、1つでも大きく予測を外すと、評価関数における評価が大きく悪化する。
その為、予測したいタスクにおいて予測を大きく外すことが弊害となるような課題において
RMSEを採用することは良い選択と言える。
10
モデル性能の改善
モデル性能の改善方法
①データ量の変更:モデルはパターン認識をしているため、パターン認識するデータ量が多ければ多いほど良い
②アルゴリズム変更・チューニング:使用したアルゴリズムとは別のアルゴリズムで試す。
もしくは使用したアルゴリズムのパラメータをチューニングして精度を上げる。
③新たに特徴量を作成する:様々な方法で学習データ、評価データに新しい特徴量を増やして精度を上げる
ダミー変数化
質的データ(性別、天気などの区分値や数値で測定できないデータ)を説明変数として取り扱うための方法。
今回の例でいうと、originやcar name は質的データに該当する。
質的データを説明変数として有効にするためにpd.get_dummies(X)を活用する。
対数化
モデルの予測精度を更に改善するために、説明変数の対数化による特徴量の生成を行っていく。
今回の例でいうとdisplacement、horsepower、weightが負の相関があったが、指数関数的な分布だった。
この時に対数化を行っていくことで、より直線的な分布に近づけることができ、回帰モデルへの当てはまりが良くなり、結果として予測精度が向上する可能性がある。
11
終わりに
長時間お疲れ様でした。
以上の内容で、ひとまずデータ分析や機械学習をの基礎は身につけられたと思います。
今回、記載した内容は基礎中の基礎のため、あとはこれをもとに自分でプログラミングをしていって、
どんどんpythonの構文や関数、ライブラリの使い方、機械学習手法を覚えていってください。
12