kaggleハンズオン

3.8K Views

April 19, 21

スライド概要

kaggleハンズオンを行った時の資料です。

profile-image

公立はこだて未来大学複雑系学部3年

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

kaggle入門 ゆるく入門する

2.

自己紹介 まるです。 FUNCoder kaggle部門 今日から隔週でみんなとkaggleのお 勉強します

3.

目的 ・機械学習の大まかな流れをつかむ ・kaggle部門においでよ

4.

アジェンダ 1. 2. 3. 4. kaggleとは コンペの流れ いざ尋常に!kaggle! まとめ

5.

kaggleとは https://www.kaggle.com/

6.

kaggle 機械学習・データサイ エンスに携わっている 約40万人の方が集ま るコミュニティ 使用言語 R , Python

7.

kaggle コンペに参加し、企 業や政府が提示す る課題を行い、最も 制度の高い分析モ デルは買い取られ る

8.

参加者のメリット ● 様々なデータに触れられる(企業が実データを提供してくれ る。) ● 他の参加者から学べる ● 入賞すれば賞金 + 良い仕事をGET!

9.

主催者側のメリット ● 世界中のデータサイエンティストが問題解決の手法を試行錯 誤してくれる(クラウドファンディングに似てる) ● ブランディング・PR ● データサイエンティストの採用

10.

実行環境「Karnel」 ブラウザ上に環境構築が不要 な、実行環境が用意されてい る。Script形式かNotebook形式 を選択可能。

11.

実行環境「Karnel」 機械学習モデルの構築に必要 なさまざまなパッケージがあら かじめインストールされている。 一般的なノートパソコン以上の 性能が自由に使える環境が 整っている。

12.

実行環境「Karnel」 モデルを学習させるとき、60分以 上かかると自動で学習がストップ してしまう。賞金を狙うのであれ ば、ローカル環境を整えないとい けない。

13.

コンペの流れ

14.

コンペの流れ 1. 主催者(企業など)がコンペを主催する 2. 参加者は様々な手法を使ってベストなモデルを構築し、予測を 提出する => スコアやランキングが分かる 3. 主催者は、精度が高い予測に賞金を払う

15.

コンペの概要 1. 概要: どういう設定になっているのか 2. 評価指標: これが一番大事(`・ω・´) 3. 賞金: 「knowledge」「Kudos」「Swag(Stuff We All Get)」「money」 4. 期限: 時間厳守 5. データ: CSVファイル(どれくらいの大きさ?)

16.

何をするゲームなのか 何かしらの予測値を出すゲーム (家の売れる値段、画像認識、動画のコンセプト、手書き文字認 識、芸術作品の写真からタグ付け)

17.

もらえるデータ ・「予測したい値がもう出てるサンプルのデータ群」 ・「実際に予測値を出してほしいデータ群」 1つ目のデータでモデルを学習し、それを使い予測をする。

18.

いざ尋常に

19.

大まかな作業の流れ 1. 2. 3. 4. 5. コンペの概要をチェック・下準備 データの特徴を捉える データの下準備 モデルの学習・評価 提出

20.

概要チェック・下準備

21.

今回説明に使うコンペ

22.

今回説明に使うコンペ

23.

Titanic : Machine Learning from Disaster 1. 2. 3. 4. 5. どんな種類の人が生き残る可能性が高いかの分析 スコアは、正しく予測した乗客の割合 知識 なし CSVファイル

24.

Titanic : Machine Learning from Disaster 誰が生き残って誰が死ぬのかを予測する

25.

パッケージの読み込み

26.

ファイルの読み込み train.csv : 機械学習の訓練用データ test.csv : 予測を実施するデータ gender_submission.csv : 提出のサンプル

27.

データの特徴を捉える

28.

データの確認

29.

データの確認

30.

データの確認

31.

データの確認

32.

データの確認

33.

データの確認でわかったこと ・データの大きさ(891×12) ・欠測値を持つカラムがある(Age , Cabin) ・このままではモデルの学習させられない形のデータがある (Name , Sex , etc…)

34.

データの可視化

36.

わかったこと 強い負の相関を持つのがいくつかある →Sex , Pclassを見てみる

37.

実際に比べる ~性別~

38.

実際に比べる ~チケットクラス~

39.

実際に比べる ~チケットクラス~

40.

わかったこと 年齢、チケットクラス、性別が 生存に関わっていそう

41.

データの下準備

42.

特徴量エンジニアリング 次のような処理を「特徴量エンジニアリング」と呼ぶ ・データを機械学習で扱える形に変換 ex ) 欠損を穴埋め、maleとfemaleを0と1に変換 ・訓練用データから、予測する上で有用な新しい特徴量を作る

43.

ここでやること ・欠測値を補う ・モデルの学習を行える形に変換する ・より精度のよい予測をするためにデータを整理する

44.

欠測値を補う 脳死で補う(例えば0ばっかで埋める)と予測データに影響する →工夫して補う必要がある →年齢は標準偏差をと中央値を使ってえいや!って埋める →Cabinはあまりに欠測値が多いので削除

45.

学習できる形に変換 ・Nameの[Mr][Mrs][Dr]等を、多いものと少ないもの工夫して特徴 量として使う ・Ageは四分位数を利用して変換 ・SibspとParchを足して家族人数を新しく特徴量として使う ・Embarkedを数字に変換 ・Fareは四分位数を利用して変換

46.

データを整理 ・新しい特徴量としてまとめたものは、元の特徴量は削除 ・Ticket削除

47.

最終的にこうなる

48.

モデルの訓練・評価

49.

モデルの訓練とスコア

50.

コードの説明 random_forest = RandomForestClassifier(n_estimators=100) random_forest.fit(X_train, Y_train) acc_random_forest = round(random_forest.score(X_train, Y_train) * 100, 2) Y_pred = random_forest.predict(X_test)

51.

コードの説明 #インスタンスの作成 random_forest = RandomForestClassifier(n_estimators=100) 何かいろいろ処理が書いてある設計図(RandomForestClassifier())を実際に値をぶち込 んで部品にして(random_forest)使うぞ!っていう場面death。詳しくは「オブジェクト指向」 で検索。

52.

コードの説明 #実際に訓練用データでモデルの訓練 random_forest.fit(X_train, Y_train) X_trainのほうが”Survived”なし、Y_trainが”Survived”だけ。教師あり学習。 もうすでに予測値が出てるデータとないデータを使って訓練させる。

53.

コードの説明 #スコアを出す acc_random_forest = round(random_forest.score(X_train, Y_train) * 100, 2) これは正解率を求めて桁数指定で四捨五入をしている。 他にもモデルの評価方法はいろいろある。

54.

コードの説明 #予測を実施する Y_pred = random_forest.predict(X_test) 訓練したモデルで予測を実施させてる。

55.

モデルの評価 それぞれのモデルを組み合わ せて使ったり、モデルの微調整 を行ったりなどもできるが今回は 省略。 なんでDecision TreeとRandom Forest一緒 なのかわからない。

56.

提出

57.

提出用CSVファイルを作成

58.

ランキングとスコアを確認

59.

まとめ

60.

たのしい

61.

ほかにも ・特徴量いじるのももっと工夫できる ダミー変数正規表現正則化スケーリング特徴量生成 ・モデルももっといじれる 交差検証グリッドサーチランダムサーチアンサンブルメソッド

62.

みんなもやろう。 https://www.kaggle.com/