Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
合成変量とアンサンブル:回帰森と加法モデルの要点
Ichigaku Takigawa
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
有意性と効果量について しっかり考えてみよう
Ken Urano
カルマンフィルタ入門
Yasunori Nihei
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
画像処理基礎
大貴 末廣
差分プライバシーとは何か? (定義 & 解釈編)
Kentaro Minami
Attentionの基礎からTransformerの入門まで
AGIRobots
1
of
32
Top clipped slide
Rとpythonとjuliaで機械学習レベル4を目指す
Dec. 15, 2014
•
0 likes
18 likes
×
Be the first to like this
Show More
•
3,910 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Report
Technology
RとPythonとJuliaのコード比較。SVMによるスパム分類を例に。
yuta july
Follow
Software Developer
Advertisement
Advertisement
Advertisement
Recommended
比例ハザードモデルはとってもtricky!
takehikoihayashi
81.5K views
•
43 slides
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
96K views
•
31 slides
ブースティング入門
Retrieva inc.
33.6K views
•
33 slides
Rでのtry関数によるエラー処理
wada, kazumi
7.3K views
•
8 slides
GEE(一般化推定方程式)の理論
Koichiro Gibo
30.7K views
•
44 slides
SHAP値の考え方を理解する(木構造編)
Kazuyuki Wakasugi
11.5K views
•
12 slides
More Related Content
Slideshows for you
(20)
合成変量とアンサンブル:回帰森と加法モデルの要点
Ichigaku Takigawa
•
28.1K views
Recent Advances on Transfer Learning and Related Topics Ver.2
Kota Matsui
•
5.3K views
有意性と効果量について しっかり考えてみよう
Ken Urano
•
55K views
カルマンフィルタ入門
Yasunori Nihei
•
4.5K views
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
•
24.4K views
画像処理基礎
大貴 末廣
•
8K views
差分プライバシーとは何か? (定義 & 解釈編)
Kentaro Minami
•
91.3K views
Attentionの基礎からTransformerの入門まで
AGIRobots
•
28.9K views
コンジョイント分析の書き方 Slideshare
Sayuri Shimizu
•
9.8K views
階層ベイズによるワンToワンマーケティング入門
shima o
•
20.1K views
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
nocchi_airport
•
8.4K views
はじめよう多変量解析~主成分分析編~
宏喜 佐野
•
160.6K views
最適化超入門
Takami Sato
•
167.5K views
ノンパラベイズ入門の入門
Shuyo Nakatani
•
27.3K views
機械学習モデルのハイパパラメータ最適化
gree_tech
•
27.5K views
ベイズファクターとモデル選択
kazutantan
•
18.3K views
5分でわかるかもしれないglmnet
Nagi Teramo
•
21.8K views
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
•
38K views
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
joisino
•
3.2K views
Cmdstanr入門とreduce_sum()解説
Hiroshi Shimizu
•
8.3K views
Recently uploaded
(12)
【DL輪読会】Self-Supervised Learning from Images with a Joint-Embedding Predictive...
Deep Learning JP
•
31 views
neoAI会社説明資料_202307.pdf
neoAI1
•
16 views
IoT通信サービス 1NCE IoTフラットレートご紹介
IoTビジネス共創ラボ
•
181 views
IoTビジネス共創ラボ紹介
IoTビジネス共創ラボ
•
158 views
【DL輪読会】Towards Understanding Ensemble, Knowledge Distillation and Self-Distil...
Deep Learning JP
•
19 views
JSTQB_テストプロセスの概念モデル改善版.pdf
akipii Oga
•
118 views
平鍋さんのテスト設計モデル.pdf
akipii Oga
•
120 views
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
NTT DATA Technology & Innovation
•
186 views
キンドリルクラウド支援サービス 2023Jun.PDF
Takayuki Nakayama
•
12 views
格安FPGA基板.pdf
Yoji TAKEUCHI
•
163 views
ジェネレーティブAIと完全自動化がもたらす製造業の未来
IoTビジネス共創ラボ
•
191 views
【NGINXセミナー】 NGINXのWAFとは?その使い方と設定方法 解説セミナー
NGINX, Inc.
•
64 views
Advertisement
Rとpythonとjuliaで機械学習レベル4を目指す
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 おわりに
Advertisement