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のデモ
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のデモ