狠狠撸

狠狠撸Share a Scribd company logo
2014/9/28 機械学習勉強会 RとPythonとJuliaで 機械学習レベル4を目指す 
@yutajuly
自己紹介 
Twitter: @yutajuly 
仕事: データ分析コンサル, 
データ分析ソフトウェア開発 
専門: ベイズ統計モデリング, 
マーケティングサイエンス 
最近の興味: ツールド東北2014で100km完走しました, 
GitHubを使いこなしたい, 
画像処理, 自然言語処理, データ可視化, 最適化, 
データ構造とアルゴリズム, IT 
2
機械学習初学者の理解レベル 
レベル4を目指すための機械学習の実践 
レベル1 
なんかビッグデータに関連して、精度よく分類するらしい 
レベル2 
Rで写経したらできたっぽいけど、正直意味不明 
レベル3 
RとかPythonとかでirisデータで学習とテストして精度見 る一連の流れ踏めるよ 
レベル4 
各種前処理を行って、スケーリングも、不均衡データ処理 にも対応して、パラメータ調整して、一連の流れ踏めるよ (けどアルゴリズムの数式は概念的にわかる程度) 
レベル5 
アルゴリズムも数式を理解した上で分析してるよ。時間さ えくれれば、ライブラリのないアルゴリズムもトップ会議 の論文見ながら実装出来るよ 
… 
… 
3 
http://d.hatena.ne.jp/shakezo/20130715/1373874047 
2013年7月15日 shakezoの日記 記事参考
レベル4を目指すと言っても 
たくさんのアルゴリズムがあって、 
たくさんのソフトウェアがあります。 
この場で全部についてレベル4を目指すのは困 難です。 
4
アルゴリズム 
Regression 
重回帰 
ラッソ回帰 
リッジ回帰 
Classification 
k近傍法, 決定木, SVM 
ロジスティック回帰 
Random Forest 
Clustering 
k-means 
階層クラスタリング 
混合正規分布 
Dimensional 
Reduction 
主成分分析 
因子分析 
多次元尺度構成法 
Model 
Estimation 
最尤推定 
EMアルゴリズム 
MCMC 
Sequential Analysis 
隠れマルコフモデル 
自己回帰モデル 
状態空間モデル 
x1 
x2 
x3 
z1 
z2 
z3 
5
時間の都合上、 
教師あり分類問題(Classification)に限り、 
また、代表的なアルゴリズムである 
Support Vector Machine(SVM)のみ扱います 
対象アルゴリズム 
6 
https://www.youtube.com/watch?v=3liCbRZPrZA 
SVM with polynomial kernel visualization
色々あるので、それぞれの特徴を把握して、自分の、 または、その時々の目的に適したものを使いたい 
Excel 
やってもクロス集計、相関、重回帰分析ぐらい。データ数も100万件とかだともうきつ い。 
R 
一般的なアルゴリズムは実装済み。日本語テキストも多くて、環境構築が簡単なので初 心者にオススメ。ただしあくまで解析用のソフトなので開発には向かない。あと計算が とても遅い 
Python 
Scikit-Learnで一般的な機械学習アルゴリズムはほぼ何でもできる。汎用言語なので、 解析も開発もできる。スクリプト言語だがRよりは早い 
Julia 
なんかRみたいに手軽に使えて、ちゃんと色々気を付けて書けば、Cとかのコンパイラ言 語並みに速い解析ソフト。ただし、まだ開発&更新中なので用途を選ぶ。あとドキュメ ントが無かったり、古かったりするので初心者には難しいかも 
Java 
本格的に解析を行うには、機械学習や確率分布のライブラリが薄いJavaだけでは辛い。 レベル5の人なら、計算も早いためオススメかも。 
C系 
ライブラリが弱いためか、あまり聞かない。レベル5の人なら計算も早いためオススメか も。 
Ruby 
ライブラリが弱いためか、あまり聞かない 
ソフトウェア 
ライブラリを活用して機械学習を行いたいのなら、 
現時点ではR, Python, Juliaを勧めます 
7
統計解析分野でのRの貢献 
統計の分野におけるオープンソースソフトウェ アのデファクトスタンダードは「R」という統 計言語+統合環境です 
2010年7月21日 @IT記事より 
http://www.atmarkit.co.jp/ait/articles/1007/21/news096.html 
Rは汎用のプログラミング言語 とはかなり異なり、統計解析や データ解析に特化している言語 です。データを統計解析で使い やすい形でメモリ上に展開し、 強力な統計解析関数で対話的、 探索的に分析を行い、手軽に高 品質なグラフィックスを作成し ます 
8
RからPythonに置き換わる? 
「データ?サイエンスのプログラミング言語は RからPythonに置き換わる」 
http://readwrite.jp/archives/2534 
2013年11月29日 readwrite.jp記事 
?Pythonなら一つの言語で開発と 解析を行うことができる 
?Rとは「統計のためのインタラクティ ブな環境」であり、厳密にはプログ ラミング言語ではない 
?Pythonはデータ分析においては まだRに劣っているが、その差は 急速に縮まってきている 
?numpy, scipy, Scikit-learn, pandas 
9
R, Pythonを凌駕するJulia? 
Why We Created Julia 
僕らが欲しい言語はこんな感じだ。まず、ゆるいライセンスの オープンソースで、Cの速度とRubyの動的さが欲しい。Lispのような真のマ クロが使える同図象性のある言語で、Matlabのように分かりやすい数学の記述をしたい。 Pythonのように汎用的に使いたいし、Rの統計処理、Perlの文字列処理、 Matlabの線形代数計算も要る。シェルのように簡単にいくつかのパーツをつなぎ合 わせたい。チョー簡単に習えて、超上級ハッカーも満足する言語。 インタラクティブに使えて、かつコンパイルできる言語が 欲しい。 
こんなにもワガママを言った上だけど、Hadoopみたいな大規模分散コン ピューティングもやりたい。もちろん、JavaとXMLで何キロバイトも 常套句を書きたくないし、数千台のマシンに分散した何ギガバイトものログファイ ルを読んでデバッグするなんて論外だ。幾層にも重なった複雑さを押しつけられるようなことなく、 純粋なパワーが欲しい。単純なスカラーのループを書いたら、一台のCPUのレジスターだけをブン 回す機械語のコードが生成されて欲しい。A*Bと書くだけで千の計算をそ れぞれ千のマシンに分散して実行して、巨大な行列の積を ポンと計算してもらいたい。(続く…) 
http://marui.hatenablog.com/entry/20120221/1329823079 
2012年2月21日 丸井総研記事より 
10
?解析+開発 
?プログラマ向け 
?RもPythonも包括で高速 
?開発途中なので、まだ使 いにくいか 
対象ソフトウェア 
11 
3種類の長所?短所を活かし、好みや用途により 使い分けたい 
?アドホック分析 
?入門者向け
10分後に目指すところ 
各言語で機械学習レベル4を目指す! 
Algorithm: 
Support Vector Machine 
Software: 
12
機械学習レベル4の手順 
問題設定: 
受信したメールに対して、スパム判定を行うための SVM分類器を構築する 
レベル4の手順: 
1.学習用データの取得 
2.前処理 
1.特徴抽出?選択 
2.ラベル付け 
3.データのスケーリング 
4.データ不均衡の処理 
3.パラメータ最適化 
?交差検証による学習, テスト, 精度検証 
13
1. 学習用データの取得 
?HP研が収集したSpam E-mail Database(Rのサンプルデータから取得して任意のフォルダに保存) 
?メール数:4601通 
?spam:1813通, non-spam:2788通 
?spamは、製品やウェブサイトの広告,簡単に儲ける旨を謳うサイト, チェーンメール, アダルトなど 
?non-spamは、仕事関係や個人のメールが対象。George(データ提供者の氏名)やエリアコードが含 まれている 
?特徴量:単語や文字の出現頻度に関する57種類 
?1?48:変数名の出現頻度 
?49?54:記号文字の出現頻度である。 
?55?57:大文字の連なりの長さの平均, 最長, 合計を表す。 
?58:ラベル(nonspam, spam) 
http://final-blue.blogspot.jp/2013/04/kernlabspam.html 
2013年4月8日さいごの碧ブログ記事 
14
2-1. 前処理:特徴抽出?選択 
1.特徴抽出?選択 
?文句なしに最も重要 
?spam or nonspamを閾値で分けれる1つの特徴量が見つか れば優れたアルゴリズムなど必要ない 
??どんなに優れたなアルゴリズムを使っても、分類に影響する特徴を 見ないと、分類できるはずがない 
?みにくいアヒルの子の定理 
?何らかの形で特徴に重要性を考えたり、取捨選択しなければ、みにく いアヒルの子と普通のアヒルの子の区別もできない。この定理は,特 徴選択や特徴抽出が識別やパターン認識にとって本質的であることを 示唆する 
Spam E-mail Databaseではこの作業は実施済み。本当の最初はメール そのものがあるだけ。自然言語処理などでメールに存在するあらゆる単 語を取ってきて、spamとの相関見て単語を絞ったり、非常に手間のか かる作業だったと想定される 
15
2-2. 前処理:ラベル付け 
2.ラベル付け 
?ラベルは○×(spam or nonspam)のこと 
?もちろんラベルは最初からあるわけではない 
?そもそもラベルが常にあるのなら、そのラベルを見て分 類すればいいので、分類器なんていらない 
?一部のデータにラベルを付けて、それ以外のデータ のラベルを予測する分類器を作りたい 
Spam E-mail Databaseではこの作業も実施済み。Georgeにヒ アリングを繰り返して、4601通のメール1つ1つにラベル付け を行ったと想定される 
16
1. 学習用データの取得 2-1. 前処理:特徴抽出?選択 2-2. 前処理:ラベル付け 
17 
svm.R 
svm.py 
svm.jl
2-3. 前処理:データのスケール調整 
3.データのスケール調整 
?スケール調整とは 
?全ての特徴量について、平均0, 分散1に揃える 
?スケール調整が必要な理由 
?取りうる値の範囲が特徴量により異なる場合、範囲 が大きい特徴量が、分類に対して支配的になりうる 
?特徴量をひとつずつ見る木構造の分類器(決定木, Random Forest)では必要ない 
http://www.slideshare.net/sleepy_yoshi/svm-13435949 
【参照】SVM実践ガイド@sleepy_yoshi 
18
2-3. 前処理:データのスケール調整 
19 
svm.py 
svm.R 
svm.jl
2-4. 前処理:不均衡データ処理 
4.不均衡データ処理 
?不均衡データとは 
?10,000件のメールの内、spam10件、non-spam9,990件の場合、す べてnon-spamと判定しても、正解率99.9% 
?正例と負例の比に偏りがある場合、アルゴリズムがいずれかに偏る判 定をしやすい学習をしてしまう 
?不均衡データへの対処法 
1.少ない方を間違えた時のペナルティを、多い方を間違えた時より大 きくする 
?Weighted SVM 
2.データ数を調整して正例数=負例数にする 
?Over Sampling ? 今回はコレだけ使います 
?Under Sampling 
http://www.slideshare.net/sfchaos/ss-11307051 
【参考】不均衡データのクラス分類@sfchaos 
20
2-4. 前処理:不均衡データ処理 
21 
svm.R
22 
svm.py 
2-4. 前処理:不均衡データ処理
23 
svm.jl 
2-4. 前処理:不均衡データ処理
3. パラメータ最適化 
?なんでパラメータ最適化が必要? 
?各アルゴリズムはデータ依存のパラメータを持つ 
?パラメータを調整して入れるか、適当に入れるかでは全然分類精 度が違うから必要 
? ShouldではなくMust 
?パラメータの最適化は、グリッドサーチ&交差検証で行う 
?パラメータ候補値ごとに交差検証による学習と検証を行い、精度評価 
?最も精度の良いものを、最適パラメータとする 
?精度評価基準の決定 
?混合行列 
?Accuracy ? 今回はコレだけ使います 
?recall, precision 
?ROC曲線, AUC 
*グリッドサーチ、クロスバリデーションの基本的な説明は、前々回の佐藤さんの資 料がわかりやすいので譲ります 
24
OUTPUT 
25 
svm.R 
3. パラメータ最適化
26 
svm.py 
OUTPUT 
3. パラメータ最適化
27 
svm.jl 
次ページに続く 
3. パラメータ最適化
28 
OUTPUT 
*MLBaseライブラリの関数を 使いこなせば、多分R, Python と同程度の長さで書けます 
https://github.com/JuliaStats/MLBase.jl 
svm.jl 
3. パラメータ最適化
[参考] JuliaのSVMパッケージについて 
?Juliaでは現状2つのSVMパッケージが用意されている 
?SVM.jl 
?Pegasosアルゴリズムで双対問題 を解く実装 
?LIBSVM.jl 
?定番のLIBSVMの実装 
?RもPythonもLIBSVM系 今回は、なぜか後者のLOADではまって抜 けられなかったこともあり、前者を使用 前者の利用については@chezou様のQiitaを参考にした http://qiita.com/chezou/items/03e648f04a2f9bbdb74b 
29 
http://www.ee.oulu.fi/research/imag/courses/Vedaldi/ShalevSiSr07.pdf
[参考] 開発環境 
?Windows 64bit 
?R 3.0.2 + Rstudio 0.97 
?Python 2.7 + eclipse 4.4 
?Julia 0.3.0 
?Juliaパッケージのversion 
?SVM :0.0.1 
?MLBase :0.5.0 
?DataFrames :0.5.7 
30
[参考] 参照webサイト 
?2013年7月15日 shakezoの日記: 
?http://d.hatena.ne.jp/shakezo/20130715/1373874047 
?2010年7月21日 @IT記事: 
?http://www.atmarkit.co.jp/ait/articles/1007/21/news096.html 
?2013年11月29日 readwrite.jp記事: 
?http://readwrite.jp/archives/2534 
?2012年2月21日 丸井総研記事: 
?http://marui.hatenablog.com/entry/20120221/1329823079 
?2013年4月8日 さいごの碧ブログ記事: 
?http://final-blue.blogspot.jp/2013/04/kernlabspam.html 
?SVM実践ガイド@sleepy_yoshi : 
?http://www.slideshare.net/sleepy_yoshi/svm-13435949 
?不均衡データのクラス分類@sfchaos: 
?http://www.slideshare.net/sfchaos/ss-11307051 
?Qiita@chezou : 
?http://qiita.com/chezou/items/03e648f04a2f9bbdb74b 
?Pegasos: Primal Estimated sub-GrAdient SOlver for SVM: 
?http://www.ee.oulu.fi/research/imag/courses/Vedaldi/ShalevSiSr07.pdf 
31
?コードは拙いものですので、改良の余地はたく さんあります 
?あとPythonについて、初学者向けということでpandasはあえ て使ってません 
?昨日twitterアカウントつくりました。 
今友達1人なので, フォローしてください 
@yutajuly 
?ご清聴ありがとうございました 
32 
おわりに

More Related Content

What's hot (20)

驳驳辫濒辞迟2再入门(2015年バージョン)
驳驳辫濒辞迟2再入门(2015年バージョン)驳驳辫濒辞迟2再入门(2015年バージョン)
驳驳辫濒辞迟2再入门(2015年バージョン)
yutannihilation
?
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
Deep Learning JP
?
リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介
Recruit Technologies
?
骋础狈(と强化学习との関係)
骋础狈(と强化学习との関係)骋础狈(と强化学习との関係)
骋础狈(と强化学习との関係)
Masahiro Suzuki
?
搁での迟谤测関数によるエラー処理
搁での迟谤测関数によるエラー処理搁での迟谤测関数によるエラー処理
搁での迟谤测関数によるエラー処理
wada, kazumi
?
笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス
笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス
笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス
Shoichi Taguchi
?
[DL輪読会]Deep Reinforcement Learning that Matters
[DL輪読会]Deep Reinforcement Learning that Matters[DL輪読会]Deep Reinforcement Learning that Matters
[DL輪読会]Deep Reinforcement Learning that Matters
Deep Learning JP
?
敌対的学习に対するラデマッハ复雑度
敌対的学习に対するラデマッハ复雑度敌対的学习に対するラデマッハ复雑度
敌対的学习に対するラデマッハ复雑度
Masa Kato
?
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
Deep Learning JP
?
搁の蹿蹿で骋尝惭してみたけど...
搁の蹿蹿で骋尝惭してみたけど...搁の蹿蹿で骋尝惭してみたけど...
搁の蹿蹿で骋尝惭してみたけど...
Kazuya Wada
?
搁て?ソーシャルネットワーク分析
搁て?ソーシャルネットワーク分析搁て?ソーシャルネットワーク分析
搁て?ソーシャルネットワーク分析
Hiroko Onari
?
モデル最适化指标?评価指标の选び方
モデル最适化指标?评価指标の选び方モデル最适化指标?评価指标の选び方
モデル最适化指标?评価指标の选び方
幹雄 小川
?
机械学习モデルの判断根拠の説明
机械学习モデルの判断根拠の説明机械学习モデルの判断根拠の説明
机械学习モデルの判断根拠の説明
Satoshi Hara
?
笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム
笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム
笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム
Kouhei Sutou
?
古典的ゲーム础滨を用いた础濒辫丑补骋辞解説
古典的ゲーム础滨を用いた础濒辫丑补骋辞解説古典的ゲーム础滨を用いた础濒辫丑补骋辞解説
古典的ゲーム础滨を用いた础濒辫丑补骋辞解説
suckgeun lee
?
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
logics-of-blue
?
Optuna: A Define-by-Run Hyperparameter Optimization Framework
Optuna: A Define-by-Run Hyperparameter Optimization FrameworkOptuna: A Define-by-Run Hyperparameter Optimization Framework
Optuna: A Define-by-Run Hyperparameter Optimization Framework
Preferred Networks
?
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰
Ruo Ando
?
静的型付け言语笔测迟丑辞苍
静的型付け言语笔测迟丑辞苍静的型付け言语笔测迟丑辞苍
静的型付け言语笔测迟丑辞苍
kiki utagawa
?
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Neural scene representation and rendering の解説(第3回3D勉強会@関東)Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Masaya Kaneko
?
驳驳辫濒辞迟2再入门(2015年バージョン)
驳驳辫濒辞迟2再入门(2015年バージョン)驳驳辫濒辞迟2再入门(2015年バージョン)
驳驳辫濒辞迟2再入门(2015年バージョン)
yutannihilation
?
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
Deep Learning JP
?
リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介リクルート式 自然言语処理技术の适応事例绍介
リクルート式 自然言语処理技术の适応事例绍介
Recruit Technologies
?
骋础狈(と强化学习との関係)
骋础狈(と强化学习との関係)骋础狈(と强化学习との関係)
骋础狈(と强化学习との関係)
Masahiro Suzuki
?
搁での迟谤测関数によるエラー処理
搁での迟谤测関数によるエラー処理搁での迟谤测関数によるエラー処理
搁での迟谤测関数によるエラー処理
wada, kazumi
?
笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス
笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス
笔测诲补迟补冲リクルートにおける产补苍诲颈迟アルコ?リス?ム冲実装前まて?のフ?ロセス
Shoichi Taguchi
?
[DL輪読会]Deep Reinforcement Learning that Matters
[DL輪読会]Deep Reinforcement Learning that Matters[DL輪読会]Deep Reinforcement Learning that Matters
[DL輪読会]Deep Reinforcement Learning that Matters
Deep Learning JP
?
敌対的学习に対するラデマッハ复雑度
敌対的学习に対するラデマッハ复雑度敌対的学习に対するラデマッハ复雑度
敌対的学习に対するラデマッハ复雑度
Masa Kato
?
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
[DL輪読会]Multi-Modal and Multi-Domain Embedding Learning for Fashion Retrieval ...
Deep Learning JP
?
搁の蹿蹿で骋尝惭してみたけど...
搁の蹿蹿で骋尝惭してみたけど...搁の蹿蹿で骋尝惭してみたけど...
搁の蹿蹿で骋尝惭してみたけど...
Kazuya Wada
?
搁て?ソーシャルネットワーク分析
搁て?ソーシャルネットワーク分析搁て?ソーシャルネットワーク分析
搁て?ソーシャルネットワーク分析
Hiroko Onari
?
モデル最适化指标?评価指标の选び方
モデル最适化指标?评価指标の选び方モデル最适化指标?评価指标の选び方
モデル最适化指标?评価指标の选び方
幹雄 小川
?
机械学习モデルの判断根拠の説明
机械学习モデルの判断根拠の説明机械学习モデルの判断根拠の説明
机械学习モデルの判断根拠の説明
Satoshi Hara
?
笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム
笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム
笔辞蝉迟驳谤别厂蚕尝と笔骋谤辞辞苍驳补で作る笔贬笔マニュアル高速全文検索システム
Kouhei Sutou
?
古典的ゲーム础滨を用いた础濒辫丑补骋辞解説
古典的ゲーム础滨を用いた础濒辫丑补骋辞解説古典的ゲーム础滨を用いた础濒辫丑补骋辞解説
古典的ゲーム础滨を用いた础濒辫丑补骋辞解説
suckgeun lee
?
Optuna: A Define-by-Run Hyperparameter Optimization Framework
Optuna: A Define-by-Run Hyperparameter Optimization FrameworkOptuna: A Define-by-Run Hyperparameter Optimization Framework
Optuna: A Define-by-Run Hyperparameter Optimization Framework
Preferred Networks
?
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰
Ruo Ando
?
静的型付け言语笔测迟丑辞苍
静的型付け言语笔测迟丑辞苍静的型付け言语笔测迟丑辞苍
静的型付け言语笔测迟丑辞苍
kiki utagawa
?
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Neural scene representation and rendering の解説(第3回3D勉強会@関東)Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Masaya Kaneko
?

Similar to 搁と辫测迟丑辞苍と箩耻濒颈补て?机械学习レヘ?ル4を目指す (6)

罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」
罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」
罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」
tokyorgirls
?
Perl で自然言語処理
Perl で自然言語処理Perl で自然言語処理
Perl で自然言語処理
Toshinori Sato
?
Alteryx UG3 LT #alteryx_ug
Alteryx UG3 LT #alteryx_ugAlteryx UG3 LT #alteryx_ug
Alteryx UG3 LT #alteryx_ug
__john_smith__
?
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
?
Un supervised learning
Un supervised learningUn supervised learning
Un supervised learning
yuki uchida
?
闯耻濒颈补て?前処理
闯耻濒颈补て?前処理闯耻濒颈补て?前処理
闯耻濒颈补て?前処理
weda654
?
罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」
罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」
罢辞办测辞.搁女子部発表スライド「搁ではじめるデータ解析の超基础」
tokyorgirls
?
Perl で自然言語処理
Perl で自然言語処理Perl で自然言語処理
Perl で自然言語処理
Toshinori Sato
?
Alteryx UG3 LT #alteryx_ug
Alteryx UG3 LT #alteryx_ugAlteryx UG3 LT #alteryx_ug
Alteryx UG3 LT #alteryx_ug
__john_smith__
?
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
?
Un supervised learning
Un supervised learningUn supervised learning
Un supervised learning
yuki uchida
?
闯耻濒颈补て?前処理
闯耻濒颈补て?前処理闯耻濒颈补て?前処理
闯耻濒颈补て?前処理
weda654
?

Recently uploaded (6)

量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
info819904
?
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
馮 富久
?
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
Matsushita Laboratory
?
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
sugiuralab
?
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージカスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
info819904
?
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
翔栄 杉田
?
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
info819904
?
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
馮 富久
?
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
Matsushita Laboratory
?
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
sugiuralab
?
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージカスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
info819904
?
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
翔栄 杉田
?

搁と辫测迟丑辞苍と箩耻濒颈补て?机械学习レヘ?ル4を目指す

  • 1. 2014/9/28 機械学習勉強会 RとPythonとJuliaで 機械学習レベル4を目指す @yutajuly
  • 2. 自己紹介 Twitter: @yutajuly 仕事: データ分析コンサル, データ分析ソフトウェア開発 専門: ベイズ統計モデリング, マーケティングサイエンス 最近の興味: ツールド東北2014で100km完走しました, GitHubを使いこなしたい, 画像処理, 自然言語処理, データ可視化, 最適化, データ構造とアルゴリズム, IT 2
  • 3. 機械学習初学者の理解レベル レベル4を目指すための機械学習の実践 レベル1 なんかビッグデータに関連して、精度よく分類するらしい レベル2 Rで写経したらできたっぽいけど、正直意味不明 レベル3 RとかPythonとかでirisデータで学習とテストして精度見 る一連の流れ踏めるよ レベル4 各種前処理を行って、スケーリングも、不均衡データ処理 にも対応して、パラメータ調整して、一連の流れ踏めるよ (けどアルゴリズムの数式は概念的にわかる程度) レベル5 アルゴリズムも数式を理解した上で分析してるよ。時間さ えくれれば、ライブラリのないアルゴリズムもトップ会議 の論文見ながら実装出来るよ … … 3 http://d.hatena.ne.jp/shakezo/20130715/1373874047 2013年7月15日 shakezoの日記 記事参考
  • 5. アルゴリズム Regression 重回帰 ラッソ回帰 リッジ回帰 Classification k近傍法, 決定木, SVM ロジスティック回帰 Random Forest Clustering k-means 階層クラスタリング 混合正規分布 Dimensional Reduction 主成分分析 因子分析 多次元尺度構成法 Model Estimation 最尤推定 EMアルゴリズム MCMC Sequential Analysis 隠れマルコフモデル 自己回帰モデル 状態空間モデル x1 x2 x3 z1 z2 z3 5
  • 6. 時間の都合上、 教師あり分類問題(Classification)に限り、 また、代表的なアルゴリズムである Support Vector Machine(SVM)のみ扱います 対象アルゴリズム 6 https://www.youtube.com/watch?v=3liCbRZPrZA SVM with polynomial kernel visualization
  • 7. 色々あるので、それぞれの特徴を把握して、自分の、 または、その時々の目的に適したものを使いたい Excel やってもクロス集計、相関、重回帰分析ぐらい。データ数も100万件とかだともうきつ い。 R 一般的なアルゴリズムは実装済み。日本語テキストも多くて、環境構築が簡単なので初 心者にオススメ。ただしあくまで解析用のソフトなので開発には向かない。あと計算が とても遅い Python Scikit-Learnで一般的な機械学習アルゴリズムはほぼ何でもできる。汎用言語なので、 解析も開発もできる。スクリプト言語だがRよりは早い Julia なんかRみたいに手軽に使えて、ちゃんと色々気を付けて書けば、Cとかのコンパイラ言 語並みに速い解析ソフト。ただし、まだ開発&更新中なので用途を選ぶ。あとドキュメ ントが無かったり、古かったりするので初心者には難しいかも Java 本格的に解析を行うには、機械学習や確率分布のライブラリが薄いJavaだけでは辛い。 レベル5の人なら、計算も早いためオススメかも。 C系 ライブラリが弱いためか、あまり聞かない。レベル5の人なら計算も早いためオススメか も。 Ruby ライブラリが弱いためか、あまり聞かない ソフトウェア ライブラリを活用して機械学習を行いたいのなら、 現時点ではR, Python, Juliaを勧めます 7
  • 8. 統計解析分野でのRの貢献 統計の分野におけるオープンソースソフトウェ アのデファクトスタンダードは「R」という統 計言語+統合環境です 2010年7月21日 @IT記事より http://www.atmarkit.co.jp/ait/articles/1007/21/news096.html Rは汎用のプログラミング言語 とはかなり異なり、統計解析や データ解析に特化している言語 です。データを統計解析で使い やすい形でメモリ上に展開し、 強力な統計解析関数で対話的、 探索的に分析を行い、手軽に高 品質なグラフィックスを作成し ます 8
  • 9. RからPythonに置き換わる? 「データ?サイエンスのプログラミング言語は RからPythonに置き換わる」 http://readwrite.jp/archives/2534 2013年11月29日 readwrite.jp記事 ?Pythonなら一つの言語で開発と 解析を行うことができる ?Rとは「統計のためのインタラクティ ブな環境」であり、厳密にはプログ ラミング言語ではない ?Pythonはデータ分析においては まだRに劣っているが、その差は 急速に縮まってきている ?numpy, scipy, Scikit-learn, pandas 9
  • 10. R, Pythonを凌駕するJulia? Why We Created Julia 僕らが欲しい言語はこんな感じだ。まず、ゆるいライセンスの オープンソースで、Cの速度とRubyの動的さが欲しい。Lispのような真のマ クロが使える同図象性のある言語で、Matlabのように分かりやすい数学の記述をしたい。 Pythonのように汎用的に使いたいし、Rの統計処理、Perlの文字列処理、 Matlabの線形代数計算も要る。シェルのように簡単にいくつかのパーツをつなぎ合 わせたい。チョー簡単に習えて、超上級ハッカーも満足する言語。 インタラクティブに使えて、かつコンパイルできる言語が 欲しい。 こんなにもワガママを言った上だけど、Hadoopみたいな大規模分散コン ピューティングもやりたい。もちろん、JavaとXMLで何キロバイトも 常套句を書きたくないし、数千台のマシンに分散した何ギガバイトものログファイ ルを読んでデバッグするなんて論外だ。幾層にも重なった複雑さを押しつけられるようなことなく、 純粋なパワーが欲しい。単純なスカラーのループを書いたら、一台のCPUのレジスターだけをブン 回す機械語のコードが生成されて欲しい。A*Bと書くだけで千の計算をそ れぞれ千のマシンに分散して実行して、巨大な行列の積を ポンと計算してもらいたい。(続く…) http://marui.hatenablog.com/entry/20120221/1329823079 2012年2月21日 丸井総研記事より 10
  • 11. ?解析+開発 ?プログラマ向け ?RもPythonも包括で高速 ?開発途中なので、まだ使 いにくいか 対象ソフトウェア 11 3種類の長所?短所を活かし、好みや用途により 使い分けたい ?アドホック分析 ?入門者向け
  • 13. 機械学習レベル4の手順 問題設定: 受信したメールに対して、スパム判定を行うための SVM分類器を構築する レベル4の手順: 1.学習用データの取得 2.前処理 1.特徴抽出?選択 2.ラベル付け 3.データのスケーリング 4.データ不均衡の処理 3.パラメータ最適化 ?交差検証による学習, テスト, 精度検証 13
  • 14. 1. 学習用データの取得 ?HP研が収集したSpam E-mail Database(Rのサンプルデータから取得して任意のフォルダに保存) ?メール数:4601通 ?spam:1813通, non-spam:2788通 ?spamは、製品やウェブサイトの広告,簡単に儲ける旨を謳うサイト, チェーンメール, アダルトなど ?non-spamは、仕事関係や個人のメールが対象。George(データ提供者の氏名)やエリアコードが含 まれている ?特徴量:単語や文字の出現頻度に関する57種類 ?1?48:変数名の出現頻度 ?49?54:記号文字の出現頻度である。 ?55?57:大文字の連なりの長さの平均, 最長, 合計を表す。 ?58:ラベル(nonspam, spam) http://final-blue.blogspot.jp/2013/04/kernlabspam.html 2013年4月8日さいごの碧ブログ記事 14
  • 15. 2-1. 前処理:特徴抽出?選択 1.特徴抽出?選択 ?文句なしに最も重要 ?spam or nonspamを閾値で分けれる1つの特徴量が見つか れば優れたアルゴリズムなど必要ない ??どんなに優れたなアルゴリズムを使っても、分類に影響する特徴を 見ないと、分類できるはずがない ?みにくいアヒルの子の定理 ?何らかの形で特徴に重要性を考えたり、取捨選択しなければ、みにく いアヒルの子と普通のアヒルの子の区別もできない。この定理は,特 徴選択や特徴抽出が識別やパターン認識にとって本質的であることを 示唆する Spam E-mail Databaseではこの作業は実施済み。本当の最初はメール そのものがあるだけ。自然言語処理などでメールに存在するあらゆる単 語を取ってきて、spamとの相関見て単語を絞ったり、非常に手間のか かる作業だったと想定される 15
  • 16. 2-2. 前処理:ラベル付け 2.ラベル付け ?ラベルは○×(spam or nonspam)のこと ?もちろんラベルは最初からあるわけではない ?そもそもラベルが常にあるのなら、そのラベルを見て分 類すればいいので、分類器なんていらない ?一部のデータにラベルを付けて、それ以外のデータ のラベルを予測する分類器を作りたい Spam E-mail Databaseではこの作業も実施済み。Georgeにヒ アリングを繰り返して、4601通のメール1つ1つにラベル付け を行ったと想定される 16
  • 17. 1. 学習用データの取得 2-1. 前処理:特徴抽出?選択 2-2. 前処理:ラベル付け 17 svm.R svm.py svm.jl
  • 18. 2-3. 前処理:データのスケール調整 3.データのスケール調整 ?スケール調整とは ?全ての特徴量について、平均0, 分散1に揃える ?スケール調整が必要な理由 ?取りうる値の範囲が特徴量により異なる場合、範囲 が大きい特徴量が、分類に対して支配的になりうる ?特徴量をひとつずつ見る木構造の分類器(決定木, Random Forest)では必要ない http://www.slideshare.net/sleepy_yoshi/svm-13435949 【参照】SVM実践ガイド@sleepy_yoshi 18
  • 20. 2-4. 前処理:不均衡データ処理 4.不均衡データ処理 ?不均衡データとは ?10,000件のメールの内、spam10件、non-spam9,990件の場合、す べてnon-spamと判定しても、正解率99.9% ?正例と負例の比に偏りがある場合、アルゴリズムがいずれかに偏る判 定をしやすい学習をしてしまう ?不均衡データへの対処法 1.少ない方を間違えた時のペナルティを、多い方を間違えた時より大 きくする ?Weighted SVM 2.データ数を調整して正例数=負例数にする ?Over Sampling ? 今回はコレだけ使います ?Under Sampling http://www.slideshare.net/sfchaos/ss-11307051 【参考】不均衡データのクラス分類@sfchaos 20
  • 22. 22 svm.py 2-4. 前処理:不均衡データ処理
  • 23. 23 svm.jl 2-4. 前処理:不均衡データ処理
  • 24. 3. パラメータ最適化 ?なんでパラメータ最適化が必要? ?各アルゴリズムはデータ依存のパラメータを持つ ?パラメータを調整して入れるか、適当に入れるかでは全然分類精 度が違うから必要 ? ShouldではなくMust ?パラメータの最適化は、グリッドサーチ&交差検証で行う ?パラメータ候補値ごとに交差検証による学習と検証を行い、精度評価 ?最も精度の良いものを、最適パラメータとする ?精度評価基準の決定 ?混合行列 ?Accuracy ? 今回はコレだけ使います ?recall, precision ?ROC曲線, AUC *グリッドサーチ、クロスバリデーションの基本的な説明は、前々回の佐藤さんの資 料がわかりやすいので譲ります 24
  • 25. OUTPUT 25 svm.R 3. パラメータ最適化
  • 26. 26 svm.py OUTPUT 3. パラメータ最適化
  • 27. 27 svm.jl 次ページに続く 3. パラメータ最適化
  • 28. 28 OUTPUT *MLBaseライブラリの関数を 使いこなせば、多分R, Python と同程度の長さで書けます https://github.com/JuliaStats/MLBase.jl svm.jl 3. パラメータ最適化
  • 29. [参考] JuliaのSVMパッケージについて ?Juliaでは現状2つのSVMパッケージが用意されている ?SVM.jl ?Pegasosアルゴリズムで双対問題 を解く実装 ?LIBSVM.jl ?定番のLIBSVMの実装 ?RもPythonもLIBSVM系 今回は、なぜか後者のLOADではまって抜 けられなかったこともあり、前者を使用 前者の利用については@chezou様のQiitaを参考にした http://qiita.com/chezou/items/03e648f04a2f9bbdb74b 29 http://www.ee.oulu.fi/research/imag/courses/Vedaldi/ShalevSiSr07.pdf
  • 30. [参考] 開発環境 ?Windows 64bit ?R 3.0.2 + Rstudio 0.97 ?Python 2.7 + eclipse 4.4 ?Julia 0.3.0 ?Juliaパッケージのversion ?SVM :0.0.1 ?MLBase :0.5.0 ?DataFrames :0.5.7 30
  • 31. [参考] 参照webサイト ?2013年7月15日 shakezoの日記: ?http://d.hatena.ne.jp/shakezo/20130715/1373874047 ?2010年7月21日 @IT記事: ?http://www.atmarkit.co.jp/ait/articles/1007/21/news096.html ?2013年11月29日 readwrite.jp記事: ?http://readwrite.jp/archives/2534 ?2012年2月21日 丸井総研記事: ?http://marui.hatenablog.com/entry/20120221/1329823079 ?2013年4月8日 さいごの碧ブログ記事: ?http://final-blue.blogspot.jp/2013/04/kernlabspam.html ?SVM実践ガイド@sleepy_yoshi : ?http://www.slideshare.net/sleepy_yoshi/svm-13435949 ?不均衡データのクラス分類@sfchaos: ?http://www.slideshare.net/sfchaos/ss-11307051 ?Qiita@chezou : ?http://qiita.com/chezou/items/03e648f04a2f9bbdb74b ?Pegasos: Primal Estimated sub-GrAdient SOlver for SVM: ?http://www.ee.oulu.fi/research/imag/courses/Vedaldi/ShalevSiSr07.pdf 31
  • 32. ?コードは拙いものですので、改良の余地はたく さんあります ?あとPythonについて、初学者向けということでpandasはあえ て使ってません ?昨日twitterアカウントつくりました。 今友達1人なので, フォローしてください @yutajuly ?ご清聴ありがとうございました 32 おわりに