狠狠撸

狠狠撸Share a Scribd company logo
レビューのネガポジ
RandomForest vs LSTM
2017年1月30日
Oisix機械学習勉強会
本日の内容
1. 自己紹介
2. ネガポジ判定器を作りたい
3. RandomForest
4. LSTM
5. まとめ
自己紹介
講演者:MAX鈴木啓章
2016年4月オイシックス入社
経歴:銀行員→学習塾→IT業界
業務:パーソナライズ(レコメンド)
システムトレードが好きでデータ分析を仕事に
したいと思い、やる気MAXで入社しました。
本日の内容
1. 自己紹介
2. ネガポジ判定器を作りたい
3. RandomForest
4. LSTM
5. まとめ
ネガポジ判定器を作りたい
定期ボックス
(お買い物カート)
ネガポジ判定器を作りたい
レビューがポジティブなのか
ネガティブなのか自動で分かれば、
色々とお客様のサービス改善に繋げることができる
ネガポジ判定器を作りたい
77%ポジティブですね。
星4つあげます。
ネガポジ判定器を作りたい
RandomForest vs LSTM
本日の内容
1. 自己紹介
2. ネガポジ判定器を作りたい
3. RandomForest
4. LSTM
5. まとめ
RandomForest
99%がデータの前処理です
2. データの前処理
1. データの前処理
3. データの前処理
5. データの前処理
4. データの前処理
6. データの前処理
7. RandomForest
やったこと
RandomForest
データの前処理 その1
元データから
レビュー内容と
星を抽出
RandomForest
データの前処理 その2
変なレコードを
除外
RandomForest
データの前処理 その3
0-9A-Za-z?-
?!"#$%&?'()*+,-
./:;<=>?@[?]^_`{|}~?????
??‐-?–????﹣-?—―─━ー
~~???~!”#$%&’
()*+,?./:;<
>?@[¥]^_`
{|}?
色々正規化
RandomForest
時短 名詞,一般,*,*,*,*,時短,ジタン,ジタン
で 助詞,格助詞,一般,*,*,*,で,デ,デ
作れ 動詞,自立,*,*,一段,連用形,作れる,ツクレ,ツクレ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
美味しく 形容詞,自立,*,*,形容詞?イ段,連用テ接続,美味しい,オイシ
家族 名詞,一般,*,*,*,*,家族,カゾク,カゾク
も 助詞,係助詞,*,*,*,*,も,モ,モ
お気に入り 名詞,一般,*,*,*,*,お気に入り,オキニイリ,オキニイリ
です 助動詞,*,*,*,特殊?デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
データの前処理 その4
RandomForest
データの前処理 その5
頑張る
RandomForest
データの前処理 その6
使う
k-means で出現頻度を
High,Middle,Lowに分類
Middleに含まれる単語のみ採用
RandomForest
cross_validation.train_test_split
X_train
X_test
y_train
y_test
RandomizedSearchCV(RandomForestClassifier)
でた!
RandomForest
本日の内容
1. 自己紹介
2. ネガポジ判定器を作りたい
3. RandomForest
4. LSTM
5. まとめ
LSTM
LSTMとは?
?わかる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用のフレームワークみた
いなものだよ
LSTM
ハイパーパラメータよく分からない
2. ソースの改造
1. データの前処理
3. LSTM
5. パラメータチューニング
4. パラメータチューニング
6. パラメータチューニング
7. パラメータチューニング
やったこと
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.
LSTM
LSTM
学習が進む???
batch_size=16
validFreq=100
→1エポック1600サンプル
LSTM
パラメータチューニング
割とデフォルト
?隠れ層のユニット数:128
?バッチサイズ:16
?オプティマイザ:AdaDelta
?ドロップアウト:True
本日の内容
1. 自己紹介
2. ネガポジ判定器を作りたい
3. RandomForest
4. LSTM
5. まとめ
まとめ
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
ほぼ同じ
結果でした
オマケ
前処理が面倒なので、
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
オマケ
学習済みモデルでslackbotにしてみた
https://oi-study.herokuapp.com
machine_learningチャンネルで、
@toccoで呼びかけよう!
※改行すると返事が来ません
ご清聴ありがとうございました

More Related Content

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

Editor's Notes

  1. 2分半
  2. 4分半
  3. LSTM(Long short-term memory)は、RNN(Recurrent Neural Network)の拡張として1995年に登場した、時系列データ(sequential data)に対するモデル、あるいは構造(architecture)の1種です。その名は、Long term memory(長期記憶)とShort term memory(短期記憶)という神経科学における用語から取られています。LSTMはRNNの中間層のユニットをLSTM blockと呼ばれるメモリと3つのゲートを持つブロックに置き換えることで実現されています。