29
レレレレレレレレレ RandomForest vs LSTM 2017 レ 1 レ 30 レ Oisix レレレレレレレ

レビューのネガポジ RandomForest vs LSTM

Embed Size (px)

Citation preview

Page 1: レビューのネガポジ RandomForest vs LSTM

レビューのネガポジ RandomForest vs LSTM

2017年 1月 30日Oisix 機械学習勉強会

Page 2: レビューのネガポジ RandomForest vs LSTM

本日の内容

1. 自己紹介

2. ネガポジ判定器を作りたい

3. RandomForest

4. LSTM

5. まとめ

Page 3: レビューのネガポジ RandomForest vs LSTM

自己紹介

講演者:MAX鈴木啓章 2016年 4月オイシックス入社

→ →経歴:銀行員 学習塾 IT業界

業務:パーソナライズ(レコメンド)

システムトレードが好きでデータ分析を仕事にしたいと思い、やる気MAXで入社しました。

Page 4: レビューのネガポジ RandomForest vs LSTM

本日の内容

1. 自己紹介

2. ネガポジ判定器を作りたい

3. RandomForest

4. LSTM

5. まとめ

Page 5: レビューのネガポジ RandomForest vs LSTM

ネガポジ判定器を作りたい

定期ボックス(お買い物カート)

Page 6: レビューのネガポジ RandomForest vs LSTM

ネガポジ判定器を作りたい

レビューがポジティブなのか ネガティブなのか自動で分かれば、

色々とお客様のサービス改善に繋げることができる

Page 7: レビューのネガポジ RandomForest vs LSTM

ネガポジ判定器を作りたい

77%ポジティブですね。星4つあげます。

Page 8: レビューのネガポジ RandomForest vs LSTM

ネガポジ判定器を作りたい

RandomForest vs LSTM

Page 9: レビューのネガポジ RandomForest vs LSTM

本日の内容

1. 自己紹介

2. ネガポジ判定器を作りたい

3. RandomForest

4. LSTM

5. まとめ

Page 10: レビューのネガポジ RandomForest vs LSTM

RandomForest

99%がデータの前処理です

2. データの前処理

1. データの前処理

3. データの前処理

5. データの前処理

4. データの前処理

6. データの前処理

7. RandomForest

やったこと

Page 11: レビューのネガポジ RandomForest vs LSTM

RandomForest データの前処理 その1

元データからレビュー内容と星を抽出

Page 12: レビューのネガポジ RandomForest vs LSTM

RandomForest データの前処理 その2

変なレコードを除外

Page 13: レビューのネガポジ RandomForest vs LSTM

RandomForest データの前処理 その3

0 -9A -Za -z。 - ゚ !"#$%&\'()*+,-./:;<=>?@[¥]^_`{|}~ 。、・「」 ˗ ‐‐‒–֊

−⁃⁻₋ ﹣ —―─-ー ━ー~∼∾”#### ’#####〰−./:;<>?@[¥]^ _`{|}〜

色々正規化

Page 14: レビューのネガポジ RandomForest vs LSTM

RandomForest

時短 名詞 ,一般 ,*,*,*,*,時短 ,ジタン ,ジタン で 助詞 ,格助詞 ,一般 ,*,*,*,で ,デ ,デ

作れ 動詞 ,自立 ,*,*,一段 ,連用形 ,作れる ,ツクレ ,ツクレ て 助詞 ,接続助詞 ,*,*,*,*,て ,テ ,テ 、 記号 ,読点 ,*,*,*,*,、 ,、 ,、

美味しく 形容詞 ,自立 ,*,*,形容詞・イ段 ,連用テ接続 ,美味しい ,オイシク ,オイシク 家族 名詞 ,一般 ,*,*,*,*,家族 ,カゾク ,カゾク

も 助詞 ,係助詞 ,*,*,*,*,も ,モ ,モ お気に入り 名詞 ,一般 ,*,*,*,*,お気に入り ,オキニイリ ,オキニイリ

です 助動詞 ,*,*,*,特殊・デス ,基本形 ,です ,デス ,デス 。 記号 ,句点 ,*,*,*,*,。 ,。 ,。

データの前処理 その4

Page 15: レビューのネガポジ RandomForest vs LSTM

RandomForest データの前処理 その5

頑張る

Page 16: レビューのネガポジ RandomForest vs LSTM

RandomForest データの前処理 その6

使う

k-means で出現頻度をHigh,Middle,Lowに分類

Middleに含まれる単語のみ採用

Page 17: レビューのネガポジ RandomForest vs LSTM

RandomForest

cross_validation.train_test_split

X_train

X_test

y_train

y_test

RandomizedSearchCV(RandomForestClassifier)

でた!

RandomForest

Page 18: レビューのネガポジ RandomForest vs LSTM

本日の内容

1. 自己紹介

2. ネガポジ判定器を作りたい

3. RandomForest

4. LSTM

5. まとめ

Page 19: レビューのネガポジ RandomForest vs LSTM

LSTMLSTMとは? ・わかる LSTM 〜最近の動向 http://qiita.com/t_Signull/items/21b82be280b46f467d1b

どうやって使おう? ・ディープラーニングを使って転職会議の 企業クチコミデータを感情分析してみる http://qiita.com/inuscript/items/54daa5aedde599e2637c

サンプルコードないの? ・ LSTM Networks for Sentiment Analysis http://deeplearning.net/tutorial/lstm.html

Theanoという Pythonの数値計算ライブラリで実装されたLSTM用のフレームワークみたいなものだよ

Page 20: レビューのネガポジ RandomForest vs LSTM

LSTM

ハイパーパラメータよく分からない

2. ソースの改造

1. データの前処理

3. LSTM

5. パラメータチューニング

4. パラメータチューニング

6. パラメータチューニング

7. パラメータチューニング

やったこと

Page 21: レビューのネガポジ RandomForest vs LSTM

LSTMデータの前処理

サラダ セロリ

トマト煮込む

次回

Page 22: レビューのネガポジ RandomForest vs LSTM

LSTMソースの改造

Unlike in Python 2, the zip function in Python 3 returns an iterator. Iterators can only be exhausted (by something like making a list out of them) once.

Page 23: レビューのネガポジ RandomForest vs LSTM

LSTMLSTM

学習が進む・・・batch_size=16validFreq=100 → 1エポック 1600サンプル

Page 24: レビューのネガポジ RandomForest vs LSTM

LSTMパラメータチューニング

割とデフォルト・隠れ層のユニット数 :128・バッチサイズ :16・オプティマイザ :AdaDelta・ドロップアウト :True

Page 25: レビューのネガポジ RandomForest vs LSTM

本日の内容

1. 自己紹介

2. ネガポジ判定器を作りたい

3. RandomForest

4. LSTM

5. まとめ

Page 26: レビューのネガポジ RandomForest vs LSTM

まとめ

RandomForest precision recall f1-score support

0 0.81 0.59 0.68 581

1 0.89 0.96 0.92 1996

avg / total

0.87 0.88 0.87 2577

precision recall f1-score support

0 0.81 0.65 0.72 581

1 0.90 0.96 0.93 1996

avg / total

0.88 0.89 0.88 2577

true_0 true_1

pred_0 344 83

pred_1 237 1913

true_0 true_1

pred_0 378 87

pred_1 203 1909

LSTM

ほぼ同じ結果でした

Page 27: レビューのネガポジ RandomForest vs LSTM

オマケ前処理が面倒なので、1文字ずつで LSTMしてみた

precision recall f1-score support

0 0.82 0.76 0.79 672

1 0.93 0.95 0.94 2274

avg / total

0.91 0.91 0.91 2946

true_0 true_1

pred_0 510 162

pred_1 111 2163

LSTM using single char

Page 28: レビューのネガポジ RandomForest vs LSTM

オマケ学習済みモデルで slackbotにしてみた

https://oi-study.herokuapp.com

machine_learningチャンネルで、@toccoで呼びかけよう!

※改行すると返事が来ません

Page 29: レビューのネガポジ RandomForest vs LSTM

ご清聴ありがとうございました