Quantcast
Channel: ウィリアムのいたずらの、まちあるき、たべあるき
Viewing all articles
Browse latest Browse all 7275

SparkやMLlib等、Javaの機械学習の話を聞いてきた!

$
0
0
12月17日

JJUGナイトセミナー 機械学習・自然言語処理特集!
に行ってきた。その内容をメモメモ

(記事になるらしい)



■Javaでカジュアルに始める機械学習

自己紹介
 SmartNews

機械学習!機械学習!

機械学習を始める前に知っておきたいこと
・機械学習とは何ぞや
  データによって賢くなるアルゴリズム
   →データから知識、ルールを自動獲得
・機械学習で何ができるのか
  分類・識別
  予測・回帰
  パターンマイニング・アソシエーションルール
  クラスタリング

 教師あり学習→データに正解がある
  分類・識別
  予測・回帰

 教師なし学習→正解はない
  パターンマイニング・アソシエーションルール
  クラスタリング

・何を入力データとするのか
  どんな形式のデータでもOKというわkではない
    数値列→非構造データはそのままでは与えられない
    非構造データ→特徴量を抽出→特徴量
  訓練データはラベルなど付与する

・得られた結果は正しいのか
  →教師なしは政界かどうか分からない
 教師あり学習
   k-分割交差検証(k-fold cross validation)
 正しさを量る
   Precision Recall,AUC,F-Mesure
 予測・回帰
   相関係数、決定係数 MAE,RMSE

・線形分離、非線形

・オンライン学習、オフライン学習
  オンライン学習:ストリーム
  オフライン学習:バッチ

最初に之だけは
・車輪の再発明はやめましょう→実装、辛みしかない

Javaによる機械学習向き不向き
1.問題認識
2.データ理解
3.モデル作成
4.モデル評価
5.システム化
 →3~5がJava、ただし、3、4はアドホック:RやPythonのほうが
  5に向いている

・Weka、Sparkインタラクティブ
・Rはシステム化が難しい

Javaから使える機械学習ライブラリ

・libliner-java
 ロジスティック回帰、SVM
 LibSVM;線形に特化
 割とがんばってる

Weka
 実装されている
 少量のデータなら

MLlib(Spark)
・アドホックでも利用できるはず(すからーで)

Mahout
・かなりオワコン感。かれている

SAMOA
・Stormなど

Jubatus(ゆばたす)
・リアルタイムな機械学習

h2o
・Deep learning これいったく

はじめてみよう機械学習
・データセット
  UCI マシーン ラーニング リポジトリ
  CSVで
 覚えておきたいデータセット
  とにかくiris:機械学習界隈のハローワールド

Wekaで分類 http://bit.ly/jjug-ml
・Wekaの入力形式 ARFFファイル
・CSVを変換するのはめんどうなので、
  CSVLoaderで

利用したクラス
 ・k-分割交差検証
 ・ロジスティック回帰
 ・決定木
 ・線形回帰

デモ

まとめ
・機械学習のお話
・ライブラリ
・Weka



■Spark/MLlib

・自己紹介
  hadoop,Spark

・お話しすること
  Spark+MLlibが解決したこと

大量データの扱いに関する課題
・大量データを使いたいとき
   精度を上げたい
   爆発的に増え続けるデータ
 →機械学習時間、データをどこに
・昔のライブラリは、単一マシン上に→コスパよくない
 →リーズナブルなスケールアウト

Hadoop
・オープンソースの大規模分散処理基盤

・HDFSとHadoop MapReduce
  HDFS:大きいファイルシステムに見せる
  MapReduce:Map処理→シャッフル→リリース
 →連携して動く。大きいファイルのバッチ処理
 →スループットに重きを置いている

Mahoutの登場
・苦手な処理

デモ
・k-Meansでグループ認識させる
・結果見る→精度良くない
・反復10回
 反復処理を重ねると、レイテンシが遅くなる
 →起動のオーバーヘッドがかかるから

Apqche Spark
・スループットとレイテンシの両立
・スカラーで開発
・1.2.0 数日中にリリース?

Hadoop2→YARN

MapReduce
 複数段のMapReduce
Spark
 RDDの変換チェイン、キャッシュする仕組み
Sparkのエコシステム
  SparkSQL
  SparkStreaming
  MLlib
  GraphX

MLlib
・すから、ぱいそん、Javaサポート
・オンラインk-mean
・SparkMLが後継

デモ

K-means
・何度も読み込み→キャッシュ(フレームワークが面倒見る)
・一連の反復全体を1つのジョブに

機械学習の仕組みを加速する仕組み
・試行錯誤できる
・分散フレームワーク間で連携が可能
  →成形されてない生データをHadoopで

まとめ
・Hadoopが切り開いた道
・機械学習
・Spark+MLlibが解決した問題
・加速する仕組み



■Luceneと日本語の検索

自己紹介

Lucene(るしーん)とは
・だぐかってぃんが生みの親
・高速検索
・Apache
・4.10.2最新もうすぐ3
・JDK7だたし、u25から55のものをつかうと、index壊れる

主な機能
・転置インデックス
・検索結果のスコアリング
・豊富なクエリ(近傍、フレーズ、範囲など)
・フィールド指定

転置インデックス
・用語
  インデックス
  ドキュメント(1レコードに相当)
  フィールド:メタ情報
  クエリ
  ターム、トークン:インデックスのキーになることば

・かつおはさざえの弟

 単語に分ける
   かつお は サザエ の 弟

 単語をベースにIDが引ける→転置インデックス

サンプルコード
 後日、GitHubに上げる

単語の抽出
  単語の区切り方:英語は簡単(スペース)
  日本語の場合・・・
オーソドックスなやり方
 N-GRAMと形態素解析
  形態素解析:意味がある単語の区切り→未知語では?
  N-GRAM:インデックス肥大化、品詞

Analyzerの概要
  tokenizer:英語系→日本語用もある
  stopward
  語尾の変化baseform

日本語
・kuromji
 Lucenには行っている
・lucene-gosen
 せん→ごせん→るしんごせん

そのほかのluceneの機能
・GEO
・ハイライト
・ファセット
・グルーピング

バージョン
モジュール

Elastic Searchのデモ

Viewing all articles
Browse latest Browse all 7275

Trending Articles