第12回 データマイニング+WEB @東京 ( #TokyoWebmining 12th)−機械学習MapReduce・大規模R解析 祭り− に参加してきた

第12回 データマイニング+WEB @東京 ( #TokyoWebmining 12th)−機械学習MapReduce・大規模R解析 祭り− に参加してきました。

以下、メモです。

1.「MapReduce〜入門編:仕組みの理解とアルゴリズムデザイン〜」 (講師:@doryokujin ) (発表30分+ 議論30分)

  • ランダムアクセスを避け、シーケンシャルアクセス。シーケンシャルな読み取りに限定して高速化
    • MAP ReduceにSSDはあまり効果なし?
      • SSDだと早くなるけど、如何せん高い
  • Splitフェーズ
    • 複数のmap処理を可能にするためデータを分割
    • Hadoopではデフォルトで64MBのブロックに分割されmapperに渡される
      • メリット : 高性能なサーバにどんどんデータを回せる
  • Serializeフェーズ
    • valueのデータ型は自由
    • 複雑な構造を持て、勝つネットワーク転送コスト低
      • Avro、Thrift、Message Pack、Protocol Buffer
  • Combineフェーズ
    • Map処理結果に対してローカルでReduce処理を行う
  • Partitioner
    • keyごとにReduceへ引き渡す際の引き渡し先を決定
    • デフォルトではハッシュ値を元に決定
  • Map Reduceを扱う際の注意点
    • Reduce間での処理量の偏り
      • デフォルトのPartitionerはキーのハッシュ値でReduce引き渡し先決定するため、valueリストのサイズがキーによって差が大きい場合はreducer間で処理量が偏る。
      • 独自のPartitionerを定義して防ぐ
    • Suffleフェーズでの通信量の削減
      • ローカル処理の中でいかにサイズを小さくしておけるか

「HapyrusでHadoopによる機械学習を簡単に」 (講師: @fujibee) (発表20分 + 議論20分)

  • 最初の敷居が高い
  • hapyrusはJavaは今のところ対応していない
  • Rはストリーミングで使えるので対応してもらえるかも?
  • まとめ
    • 大規模機械学習に必要なデータの操作を行ったりスクリプトを公開することで、Knowledgeも共有出来る
    • 現在β版公開中!どんどんバージョンアップします!

「大規模データマイニングでのモデル探索手法:K-sample plot」 (講師: @isseing333) (発表30分 + 議論30分)

  • 予測性能をどうやって評価するか
    • 予測力 : R-square、Explained Valiance
  • 100万サンプルでSVMを使いた場合の解決策(1)
    • サンプリング
    • 問題点 : 結果の妥当性
  • 中心極限定理
    • サンプル数を増やすと平均値の誤差は小さくなる
  • 検出力
    • サンプル数を増やすと予測性能があがる
  • K-sample Plot (KsPlot)
    • アイディア : サンプル数を増やしていって予測性能を調べる
  • CRANで公開
    • KsPlotパッケージ
KsamplePlot(説明変数行列, 結果変数ベクトル, Method="")

「Rで並列処理:foreachパッケージ解剖学」 (講師: @tyatsuta) (発表30分 + 議論30分)

  • 今作ってるソフトの紹介
    • 行列計算の可視化
    • 行列の積は、たこ焼きを作っているんだ。(via @lumin)
    • Haskellで書いている
  • foreach構文
x <- foreach(j=1:3, .combine="hogehoge") %do% sum(m[,j])