一から始める機械学習
(Kaggleで学ぶ機械学習)
阿部 泰之 twitter:@taki_tflare
このスライドの対象読者、目的
対象読者
・機械学習の概要がわかっている方
・もしくは一から始める機械学習(機械学習概要)を読んだ方が対象
です
目的
・Kaggleについて理解する
・機械学習について実際の流れを理解する
・Kaggleのチュートリアルを用いて実践を行う
・scikit-learnを用いて実践を行う
アジェンダ
1. Kaggleとは
2. なぜKaggle?
3. Titanic: Machine Learning from Disaster
4. データの中でどれを使う?
5. データ前処理
6. 使用データ
7. 使用する学習手法
8. 学習実行と交差検証
9. 最適化
10. 機械学習の流れ
11. 企業のコンテストを一部紹介
1. Kaggleとは
• 誤解を恐れずにまとめれば
Kaggleは企業や研究家が、データサイ
エンス、機械学習関連のお題をだしてそ
れを解くサイトです。
賞金がつくものもあり(さらにそれを解くためのコー
ドを公開しかつ説明する。その説明についてコメント
等でコミュニケーションを行う機能もあり)
2. なぜKaggle?
• 本などの説明では、説明のためのデータセットが使
われていることが多く、実感が湧きにくい。
• 本などの説明では端折られる箇所も、実施する必要
があるため機械学習の実際の流れが理解できる。
• 順位が出るためやる気が出る。(全世界のデータ分
析家と勝負できますし、協力もできます)
• 賞金がでます(150万ドルの賞金が出るものもあり)
3. Titanic: Machine Learning From Disaster
• 乗客がタイタニックの沈没を生き延びたかどうかを予測
• 訓練用データ(891行 × 12列のcsv) データに一部欠
損あり
• テストデータ(418行 × 11列のcsv) データに一部欠
損あり
• 訓練用データで学習し、テストデータに対して、生き延
びたかどうかを予測する。
4. データの中でどれを使う?(1/4)
• PassengerId:データにシーケンシャルでついている番号
• Survived:生存(0 = No, 1 = Yes) 訓練用データにのみ存在
• Pclass:チケットのクラス(1 = 1st, 2 = 2nd, 3 = 3rd)
• Name:名前
• Sex:性別
• Age:年齢
4. データの中でどれを使う?(2/4)
• SibSp:タイタニック号に乗っていた兄弟と配偶者の数
• Parch:タイタニック号に乗っていた両親と子どもの数
• Ticket:チケット番号
• Fare:旅客運賃
• Cabin:船室番号
• Embarked:乗船場(C = Cherbourg, Q = Queenstown, S =
Southampton)
4. データの中でどれを使う?(3/4)
•
import numpy as np
•
import pandas as pd
• train = pd.read_csv("train.csv", dtype={"Age": np.float64}, )
•
test = pd.read_csv("test.csv", dtype={"Age": np.float64}, )
•
train.head(10)
実行コード
4. データの中でどれを使う?(4/4)
train_corr = train.corr()
train_corr
実行コード
5. データ前処理(1/2)
PassengerId以外は使えそうです。
現在解析に使えていないデータがあるので使えるデータ(数値)に変換します。
また欠損データがあるので補正します。
実行コード
def correct_data(titanic_data):
titanic_data.Age = titanic_data.Age.fillna(titanic_data.Age.median())
titanic_data.Sex = titanic_data.Sex.replace(['male', 'female'], [0, 1])
titanic_data.Embarked = titanic_data.Embarked.fillna("S")
titanic_data.Embarked = titanic_data.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])
titanic_data.