DeepLearningに先立つ機械学習講習会 に行ってきた
いろんなものを放置調整して、機械学習の勉強会に行ってきた。
machinelearningstudy.doorkeeper.jp
こちらのエントリの方がきれいにまとまっています。 www.itbook.info
以下、感想
ただでさえも遅刻なのに飛行機が遅延するというorz
着いた時には環境構築やってて、遅れを取り戻せるか不安だったが、
vagrantのboxが提供されていたので助かった・・
vagrantやdockerイメージがあるとハマらなくて済むなと(^^)
環境構築後は実習
Pythonの使い方で1時間、機械学習で1時間
全てiPythonのnotebook(?)でやったけど、コードが補完されるので書きやすかった。
機械学習は日本語でコードの説明が聴けたのが一番の収穫だったなと。
scikit-learnのチュートリアル含め、英語の情報がほとんどなので・・
ま、英語を勉強し(ry
実習時の資料やコードを持って帰れたので、
帰ったら今一度パラメータいじって試してみよう。
今回は「教師なし学習」のみだったので、次回以降も参加したい。
以下、メモ
20150523 DeepLearningに先立つ機械学習講習会
機械学習とは
機械に「問題を解くためのの規則性」を見つけさせる
用語
- 「正解」となる値 = Target(目的変数)
- 「予測のもと」となる値 = Feature(特徴量)
教師あり学習
- 分類
- 回帰
教師なし学習
- 正解のないデータから規則性を見つける
一番いい手法なんて無い
- No Free Lunch Theorem
- 人の手による試行錯誤
- Under-FittingとOver-Fitting(過学習)
- 「ちょうどいい」複雑さを探す
- Under-FittingとOver-Fitting(過学習)
LinkPlaza Demo
Featureの重要性
- 肌感覚
- 手法の改良
- 改善しても数%..
- 良いFeature
- 最低15%の改善は見込める
- 学習しないとわからない
- 手法の改良
- 肌感覚
Deep Learningの強み
- 自動的に「有用な」Featureの抽出
- 化学知らなくても化合物の活性予測で優勝(Featureの選択してない)
- Featureの自動抽出が「革命的」
Deep Learningの黒魔術
- 学習時のパラメータが多すぎる
- 通常10個 <-> Deep Learningは100以上
- パラメータ調整に独特なコツ
Python
読み方
- pandas - パンダス
- numpy - ナムパイ
- scikit - サイキット
書き方
- [3:5] -> 3番目と4番目のデータのみを取り出す
- 5番目は入らないので注意
years_list = [2010, 2011, 2012, 2013, 2014, 2015] print years_list[3:5] [2013, 2014]
- [] -> リスト
() -> タプル
lambda -> 無名関数
Pandas.Series -> 時系列データを扱う
機械学習
Irisデータ - どんな変なモデルでも精度が出る
まずはいろいろグラフを出してみて、使えそうなパターンを見つける
学習の典型的パターン
- target=y, feature=xとする
- モデルの形を決める
- モデルの形で一番いいパラメータを求める
「あてはまり」の最大化 =「あてはまらなさ」の最小化
典型的でないパターン
- K-近傍法
- 予測したいFeatureの近くにあるFeatureをk個取ってくる
- それの平均から判断する
- 「近いデータと同じになるだろう」
教師あり学習のタイプ
どのパターンがいい?
- 性能評価
- 誤差で見るとOverFitting(過学習)に陥る・・
- Cross Validating(交差)
- 学習データの一部を検証にのみ使う
- 例) 10回やって、各誤差の平均値をそのモデルの性能とする
from sklearn.linear_model import LogisticRegression from sklearn import cross_validation cv = 10 # 何分割するか logit= LogisticRegression() scores = cross_validation.cross_val_score(logit,X,Y,cv=cv) print(sum(scores)/cv)
Over-FittingとUnder-Fitting
- k=1 : モデルが難しすぎる = Over Fitting
k=80 : モデルが簡単過ぎる = Under Fitting
k=80でもcol_index=2と3にすると精度が上がる
- 有用なFeatureがわかれば精度が格段に上がる
おすすめ書籍
よくやるパターン
- 大量のデータがある
- プロットしてみる
- プロットするFeatureを色々変えて、目視
- これかな〜というものを見つけたら、掘ってみる
実習でやったようなアプローチ