はてなの金次郎

Pythonエンジニアの技術系ブログ

Tech Trend Tokyo #7に参加してきました

はじめに

giginc.connpass.com

Tech Trend Tokyo #7にメディア・ブログ枠で参加してきました。テーマは「【Python機械学習機械学習と言語処理を活用してみる」でした。

感想

PyConJP 2018で「テキストマイニングによるTwitter個人アカウントの性格推定」というタイトルでLTをしてきましたが、そこでランダムフォレストを使ったので知っている内容が多くあり良い復習になりました!

jumpyoshim.hatenablog.com

GridSearchCVは知らなかったので勉強になりました!活用していきたいです。

早速アウトプットとして、今回のボストンデータセットの練習問題をGitHubにあげました。

私はpyenvやanacondaはトラブルが多くて好きじゃないのでPipenvを用いた環境構築をしています。
利用される方はPython3.7とPipenvをインストールしてください。

github.com

中島さんのリポジトリはこちらです。

github.com

ネットワーキングも素敵な方とお話できましたし、ピザも美味しかったです。ごちそうさまです。ありがとうございました。
今回お話できなかった方もぜひつながりましょう〜!
フォローお待ちしております。

twitter.com

主催の株式会社GIGのスキルシェアサービス Workship
講師の中島さんがCTOを務めるIGS株式会社のSPI、ESに続く第3の新卒採用ツール Grow360 も面白そうなサービスなので要チェックですね。

goworkship.com

grow-360.com

以下メモ書きです。(メモしきれなかった部分もあります。すみません。)

メモ書き

自己紹介

中島正成さん(IGS株式会社 執行役員CTO)
2011年、株式会社メタップスの取締役CTOとして立ち上げに参画。機械学習とデータサイエンスのプロダクトインプリメントに取り組む。
その後、エン・ジャパン株式会社経営戦略室、個人事業での技術アドバイザー、経営アドバイザーを経て、IGS株式会社に執行役員CTOとしてジョイン。HR領域、人材評価領域のA.I活用プロダクト開発と、教育領域へのA.I活用プロダクト開発に取り組む。

AIといいたくないけどAIの話 part4

  • 第六回ある
  • 今回はスコア予測の実践

回帰と判別

機械学習アルゴリズムな大きく2つに分類できる

  • 回帰モデル
    • 単回帰モデル
    • 重回帰モデル
  • 判別(分類)モデル

教師なし学習

  • 出力すべきものがあらかじめ決まっていないという点が教師あり学習と異なる。
  • データの背後に存在する本質的な構造を抽出するために用いられる。

教師あり学習

  • 事前に与えられたデータをいわば例題とみなしてガイドラインにのっとり学習させる。

教師あり学習

教師なし学習

練習問題

  • よくやるボストンデータセット
  • 有名なボストンデータセットを利用して各種パラメータから住宅価格を予測してみよう
  • ランダムフォレストを使うよ!楽で優秀
  • プロトタイプ作成に有効

ランダムフォレストとは

ボストンデータセットとは

  • scikit-learnに含まれている線形回帰などで使用するデータセット
  • 米国ボストン市郊外における地域別の住宅価格のデータセット

精度を向上するためにはどうすれば良いか

  • ハイパーパラメータチューニング
  • データクリーニング

ランダムフォレストのハイパーパラメータ

ハイパーパラメータ 説明
n_estimators バギングに用いる決定木の個数
max_features 最適な分割をするために考慮するフィーチャーの数
max_depth 決定木の深さの最大値、過学習対策にこの値の調整が有効
min_samples_split ノードを分割するために必要な最少サンプルサイズ
min_samples_leaf 葉を構成するのに必要な最小限のサンプルの数
max_leaf_nodes 生成される決定木における最大の葉の数
n_jobs フィットおよび予測の際に用いるスレッド数
random_state 乱数シード
warm_start Trueを設定するとすでにフィットしたモデルに学習を追加

自動でいい感じのチューニング

  • sklearnのGridSearchCVを使う
from sklearn.model_selection import GridSearchCV

params = {'n_estimators': [3, 10, 100, 1000, 10000], 'n_jobs': [-1]}
cv = GridSearchCV(
    RandomForestRegressor(),
    params,
    cv=10,
    scoring='mean_squared_error',
    n_jobs=-1,
    verbose=True
)
warnings.filterwarnings('ignore')
cv.fit(train_data_bs, train_labels_bs)

※ 注意

  • GridSearchCVを利用する場合は、scikit-learn以外にnumpy, scipyが必要。
  • from sklearn.grid_search import GridSearchCV だと no module named 'sklearn.grid_search' となってしまうため、 from sklearn.model_selection import GridSearchCV とする。