LoginSignup
24
26

More than 5 years have passed since last update.

ヨーダが「Size matters not」って言ってたけどデータがでかすぎてトレーニングが終わりません

Last updated at Posted at 2014-08-01

3400万件の100文字程度の日本語のテキストを150万件のラベルに分類しようとしています。アドバイスください。

どこまでやったか

  1. EC2のc3.8xlargeを1台用意しました(ごついやつ)
  2. 日本語をmecabで切り分けました
  3. sk-learnでvectorizeしました(MAX_FEATURES=10000)
  4. sk-learnでTruncatedSVDしました
  5. sk-learnでnormarizeしました
  6. ライブラリ外でCython使えるところはCythonで書きました(cdefを使える限り使いました)
  7. RandomForestClassifierでn_jobs=32にしてfitしました(10コアまでしか認識しなかった)

何ができないか

  1. 上記の条件で48時間実行しましたがfit中にセグメンテーション違反でこけました
  2. 同条件で試しにトレーニングデータを150万件に減らしたけど、それでも24時間以上かけて終わりませんでした
  3. セグメンテーション違反の原因は未調査です(が、上記の実行時間等から、このやり方では使い物にならない気がしているので、抜本的にやり方を変える必要があるのではないかと思っています)

何がしたいか

下記の前提を守りつつ学習と予測をできるようにしたいです

前提

  1. 縦3400万件、横100文字程度の日本語のテキストで、それぞれに正解のラベルがあるデータでトレーニングと予測をしようとしています
  2. その道2週間の素人なので簡単な方法が望ましいです
  3. 学習一発に3万円くらいならかけられます(場合によってはもうちょっとかけられるかも)
  4. 100文字の日本語の内容は聞かないでください。名詞が多いです。
  5. RandomForestにしたのは、sk-learnの分類器を10000件くらいのデータでかたっぱしから試したら精度が良かったからです
  6. 最も成績が良く、かつ学習が速かった分類器はExtraTreesClassifierでしたが、Cythonにしたらセグメンテーションエラーを頻発し、原因を追い切れなかったので諦めました
  7. 目標の学習時間は48時間、予測時間は1分です

今考えてる選択肢(上の方が優先順位が高い)

1.spark+mlib+EC2+金
2.Mahout+hadoop+Elastic Map Reduce+金

24
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
26