4.2K Views
April 19, 21
スライド概要
kaggleハンズオンを行った時の資料です。
公立はこだて未来大学複雑系学部3年
kaggle入門 ゆるく入門する
自己紹介 まるです。 FUNCoder kaggle部門 今日から隔週でみんなとkaggleのお 勉強します
目的 ・機械学習の大まかな流れをつかむ ・kaggle部門においでよ
アジェンダ 1. 2. 3. 4. kaggleとは コンペの流れ いざ尋常に!kaggle! まとめ
kaggleとは https://www.kaggle.com/
kaggle 機械学習・データサイ エンスに携わっている 約40万人の方が集ま るコミュニティ 使用言語 R , Python
kaggle コンペに参加し、企 業や政府が提示す る課題を行い、最も 制度の高い分析モ デルは買い取られ る
参加者のメリット ● 様々なデータに触れられる(企業が実データを提供してくれ る。) ● 他の参加者から学べる ● 入賞すれば賞金 + 良い仕事をGET!
主催者側のメリット ● 世界中のデータサイエンティストが問題解決の手法を試行錯 誤してくれる(クラウドファンディングに似てる) ● ブランディング・PR ● データサイエンティストの採用
実行環境「Karnel」 ブラウザ上に環境構築が不要 な、実行環境が用意されてい る。Script形式かNotebook形式 を選択可能。
実行環境「Karnel」 機械学習モデルの構築に必要 なさまざまなパッケージがあら かじめインストールされている。 一般的なノートパソコン以上の 性能が自由に使える環境が 整っている。
実行環境「Karnel」 モデルを学習させるとき、60分以 上かかると自動で学習がストップ してしまう。賞金を狙うのであれ ば、ローカル環境を整えないとい けない。
コンペの流れ
コンペの流れ 1. 主催者(企業など)がコンペを主催する 2. 参加者は様々な手法を使ってベストなモデルを構築し、予測を 提出する => スコアやランキングが分かる 3. 主催者は、精度が高い予測に賞金を払う
コンペの概要 1. 概要: どういう設定になっているのか 2. 評価指標: これが一番大事(`・ω・´) 3. 賞金: 「knowledge」「Kudos」「Swag(Stuff We All Get)」「money」 4. 期限: 時間厳守 5. データ: CSVファイル(どれくらいの大きさ?)
何をするゲームなのか 何かしらの予測値を出すゲーム (家の売れる値段、画像認識、動画のコンセプト、手書き文字認 識、芸術作品の写真からタグ付け)
もらえるデータ ・「予測したい値がもう出てるサンプルのデータ群」 ・「実際に予測値を出してほしいデータ群」 1つ目のデータでモデルを学習し、それを使い予測をする。
いざ尋常に
大まかな作業の流れ 1. 2. 3. 4. 5. コンペの概要をチェック・下準備 データの特徴を捉える データの下準備 モデルの学習・評価 提出
概要チェック・下準備
今回説明に使うコンペ
今回説明に使うコンペ
Titanic : Machine Learning from Disaster 1. 2. 3. 4. 5. どんな種類の人が生き残る可能性が高いかの分析 スコアは、正しく予測した乗客の割合 知識 なし CSVファイル
Titanic : Machine Learning from Disaster 誰が生き残って誰が死ぬのかを予測する
パッケージの読み込み
ファイルの読み込み train.csv : 機械学習の訓練用データ test.csv : 予測を実施するデータ gender_submission.csv : 提出のサンプル
データの特徴を捉える
データの確認
データの確認
データの確認
データの確認
データの確認
データの確認でわかったこと ・データの大きさ(891×12) ・欠測値を持つカラムがある(Age , Cabin) ・このままではモデルの学習させられない形のデータがある (Name , Sex , etc…)
データの可視化
わかったこと 強い負の相関を持つのがいくつかある →Sex , Pclassを見てみる
実際に比べる ~性別~
実際に比べる ~チケットクラス~
実際に比べる ~チケットクラス~
わかったこと 年齢、チケットクラス、性別が 生存に関わっていそう
データの下準備
特徴量エンジニアリング 次のような処理を「特徴量エンジニアリング」と呼ぶ ・データを機械学習で扱える形に変換 ex ) 欠損を穴埋め、maleとfemaleを0と1に変換 ・訓練用データから、予測する上で有用な新しい特徴量を作る
ここでやること ・欠測値を補う ・モデルの学習を行える形に変換する ・より精度のよい予測をするためにデータを整理する
欠測値を補う 脳死で補う(例えば0ばっかで埋める)と予測データに影響する →工夫して補う必要がある →年齢は標準偏差をと中央値を使ってえいや!って埋める →Cabinはあまりに欠測値が多いので削除
学習できる形に変換 ・Nameの[Mr][Mrs][Dr]等を、多いものと少ないもの工夫して特徴 量として使う ・Ageは四分位数を利用して変換 ・SibspとParchを足して家族人数を新しく特徴量として使う ・Embarkedを数字に変換 ・Fareは四分位数を利用して変換
データを整理 ・新しい特徴量としてまとめたものは、元の特徴量は削除 ・Ticket削除
最終的にこうなる
モデルの訓練・評価
モデルの訓練とスコア
コードの説明 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)
コードの説明 #インスタンスの作成 random_forest = RandomForestClassifier(n_estimators=100) 何かいろいろ処理が書いてある設計図(RandomForestClassifier())を実際に値をぶち込 んで部品にして(random_forest)使うぞ!っていう場面death。詳しくは「オブジェクト指向」 で検索。
コードの説明 #実際に訓練用データでモデルの訓練 random_forest.fit(X_train, Y_train) X_trainのほうが”Survived”なし、Y_trainが”Survived”だけ。教師あり学習。 もうすでに予測値が出てるデータとないデータを使って訓練させる。
コードの説明 #スコアを出す acc_random_forest = round(random_forest.score(X_train, Y_train) * 100, 2) これは正解率を求めて桁数指定で四捨五入をしている。 他にもモデルの評価方法はいろいろある。
コードの説明 #予測を実施する Y_pred = random_forest.predict(X_test) 訓練したモデルで予測を実施させてる。
モデルの評価 それぞれのモデルを組み合わ せて使ったり、モデルの微調整 を行ったりなどもできるが今回は 省略。 なんでDecision TreeとRandom Forest一緒 なのかわからない。
提出
提出用CSVファイルを作成
ランキングとスコアを確認
まとめ
たのしい
ほかにも ・特徴量いじるのももっと工夫できる ダミー変数正規表現正則化スケーリング特徴量生成 ・モデルももっといじれる 交差検証グリッドサーチランダムサーチアンサンブルメソッド
みんなもやろう。 https://www.kaggle.com/