NumPyと      RとMATL  比較に 関     A B ®の        する一考             察                   比戸将平        Tokyo.S           (@sla)     ...
自己紹介• 比戸将平(HIDO Shohei)• TwitterID: @sla• 所属:IBM東京基礎研究所(6年目)• 専門:データマイニング、機械学習• 使用言語:Java、 R、 MATLAB®、Python• マイブーム:NumPy+...
本発表の目的• 「私にとっての」NumPyの有用性を検証したい• 比較対象 –R – MATLAB®• そのために「個人的・主観的」評価 – 定性的な評価:全てを試した立場から比較検討 – 定量的な評価:同等の実験で性能比較      注:一般...
本発表の結論    適材適所• 大きく見れば同じような機能・性能・環境• パフォーマンスー習得コスト-実装コスト• 決定打となる要素は何か?
R• 統計言語Sのオープンソース実装• OSSライセンス:GNU GPL• 多数の公開ライブラリ群(CRAN) – 統計、バイオ、機械学習、DM、信号処理                abs <- function( value ) {   ...
MATLAB®• MathWorks社の製品• 独自の言語• 多数のToolBox製品(アドオン)  – Statistics, Optimization, Signal Processing,…• 配布に関して:MATLAB Compiler...
NumPy (Numerical Python)• Python用の数値計算ライブラリ• 科学計算フレームワークSciPyの基盤• OSSライセンス:BSD&MIT              def abs(value):           ...
定性評 価
定性比較項目• 使う:公開ツールや利用環境の充実度• 作る&配る:自前開発環境と公開の容易さ
使う  NumPy                R          MATLAB• 無償              • 無償          • 有償製品• Python各種ツール     • 豊富なライブラリ    • Toolbox別...
作る&配る   NumPy                  R       MATLAB• Eclipse+PyDev   • R GUI      • MATLAB製品                  • R+StatET• BSD   ...
定量評 価
定量評価の既存例• http://scipy.org/PerformancePython   – ラプラス方程式でNumPy=MATLAB   – NumPy+Fortlan/C++でPure C++に近づける• http://www.sciv...
今回の定量評価対象• 行列演算:機械学習等で非常に重要 – 逆行列 – 固有値分解 – 特異値分解• 比較軸 – 行列size:{100, 200, 400, 800} – 行列density:{0.001, 0.01, 0.1}   • スパ...
実験環境• 実験マシン:Lenovo Thinkpad X201  – CPU i5 M560 2.67GHz, メインメモリ3GB• R:Ver 2.13.0• MATLAB:Ver7.12(R2011a) Win32bit版• NumPy:...
逆行列(density=1.0)100 10                               NumPy  1                            R       100   200   400   800   M...
固有値分解(density=0.1)1000 100  10                            NumPy                                R   1                      ...
特異値分解(density=0.01)100 10                                NumPy  1                             R        100   200   400   8...
逆行列(size=800)100                             NumPy 10                          R                             MATLAB  1    ...
固有値分解(size=800)1000 100                            NumPy                            R                            MATLAB  1...
R+sparse+SVD?• Rのスパース行列パッケージ – Matrix – SparseM – 両方ともSVDを持たない• 解決方法 – 直にSVDLIBCを呼び出す – 反復解法を実装する
まとめ• 定性評価 – NumPyはPython関連ツールが強み – Rのライブラリ充実度は使う分には大きな強み – MATLABはMCRを使えるならば有用• 定量評価 – MATLABはそのままで最適化されている – NumPyとRはどっこい...
Upcoming SlideShare
Loading in …5
×

110828 tokyo scipy1_hido_dist

1,647 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,647
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

110828 tokyo scipy1_hido_dist

  1. 1. NumPyと RとMATL 比較に 関 A B ®の する一考 察 比戸将平 Tokyo.S (@sla) ciPy#1 2 011.08.2 8
  2. 2. 自己紹介• 比戸将平(HIDO Shohei)• TwitterID: @sla• 所属:IBM東京基礎研究所(6年目)• 専門:データマイニング、機械学習• 使用言語:Java、 R、 MATLAB®、Python• マイブーム:NumPy+SciPy – 4年前:「Rすげぇ!」 – 3年前:「Rちょっとうぜぇ!」 – 2年前:「MATLAB様!」 – 1年前:「おいMATLAB!」 – 今年:「冷やしNumPy始めました」
  3. 3. 本発表の目的• 「私にとっての」NumPyの有用性を検証したい• 比較対象 –R – MATLAB®• そのために「個人的・主観的」評価 – 定性的な評価:全てを試した立場から比較検討 – 定量的な評価:同等の実験で性能比較 注:一般的な優劣を付けるわけではない
  4. 4. 本発表の結論 適材適所• 大きく見れば同じような機能・性能・環境• パフォーマンスー習得コスト-実装コスト• 決定打となる要素は何か?
  5. 5. R• 統計言語Sのオープンソース実装• OSSライセンス:GNU GPL• 多数の公開ライブラリ群(CRAN) – 統計、バイオ、機械学習、DM、信号処理 abs <- function( value ) { if (value < 0) { abs_value <- -value } else { abs_value <- value } return(abs_value) } 絶対値を める関数 例:絶対値を求める関数
  6. 6. MATLAB®• MathWorks社の製品• 独自の言語• 多数のToolBox製品(アドオン) – Statistics, Optimization, Signal Processing,…• 配布に関して:MATLAB Compilerがあれば – MATLAB Common Runtime+バイナリ配布可 function [ abs_value ] = abs( value ) if (value < 0 ) abs_value = - value; else abs_value = value; end end 絶対値を める関数 例:絶対値を求める関数
  7. 7. NumPy (Numerical Python)• Python用の数値計算ライブラリ• 科学計算フレームワークSciPyの基盤• OSSライセンス:BSD&MIT def abs(value): if value < 0: abs_value = -value else: abs_value = value return(abs_value) 例:絶対値を求める関数 絶対値を める関数
  8. 8. 定性評 価
  9. 9. 定性比較項目• 使う:公開ツールや利用環境の充実度• 作る&配る:自前開発環境と公開の容易さ
  10. 10. 使う NumPy R MATLAB• 無償 • 無償 • 有償製品• Python各種ツール • 豊富なライブラリ • Toolbox別売 •matplotlib • CRANで一括管理 • ユーザーコミュニティ •Cython •f2python •IronPython •PyPy •PyUnit •PyLint• 内部パッケージが複雑• 機能の重複がいろいろ
  11. 11. 作る&配る NumPy R MATLAB• Eclipse+PyDev • R GUI • MATLAB製品 • R+StatET• BSD • RStudio • MATLAB Compiler • MATLAB Common ・ ツール群はGPL Runtimeのインストール
  12. 12. 定量評 価
  13. 13. 定量評価の既存例• http://scipy.org/PerformancePython – ラプラス方程式でNumPy=MATLAB – NumPy+Fortlan/C++でPure C++に近づける• http://www.sciviews.org/benchmark/ – いろんな統計計算・数値計算のスコアを平均してR=MATLAB – 専門ツールはさらに早いが拡張性が無い• http://mlg.eng.cam.ac.uk/dave/rmbenchmark.php – 2倍くらい速い NumPy vs. R vs. MATLABはあまり無い
  14. 14. 今回の定量評価対象• 行列演算:機械学習等で非常に重要 – 逆行列 – 固有値分解 – 特異値分解• 比較軸 – 行列size:{100, 200, 400, 800} – 行列density:{0.001, 0.01, 0.1} • スパース行列に対する計算 • ただしスパース行列のデータ構造は未使用
  15. 15. 実験環境• 実験マシン:Lenovo Thinkpad X201 – CPU i5 M560 2.67GHz, メインメモリ3GB• R:Ver 2.13.0• MATLAB:Ver7.12(R2011a) Win32bit版• NumPy:Ver1.6.1(Python2.6ベース) – SciPy:Ver0.9.0
  16. 16. 逆行列(density=1.0)100 10 NumPy 1 R 100 200 400 800 MATLAB 0.10.01
  17. 17. 固有値分解(density=0.1)1000 100 10 NumPy R 1 MATLAB 100 200 400 800 0.10.01
  18. 18. 特異値分解(density=0.01)100 10 NumPy 1 R 100 200 400 800 MATLAB 0.10.01
  19. 19. 逆行列(size=800)100 NumPy 10 R MATLAB 1 0 0.01 0.1 1
  20. 20. 固有値分解(size=800)1000 100 NumPy R MATLAB 10 1 0 0.01 0.1 1
  21. 21. R+sparse+SVD?• Rのスパース行列パッケージ – Matrix – SparseM – 両方ともSVDを持たない• 解決方法 – 直にSVDLIBCを呼び出す – 反復解法を実装する
  22. 22. まとめ• 定性評価 – NumPyはPython関連ツールが強み – Rのライブラリ充実度は使う分には大きな強み – MATLABはMCRを使えるならば有用• 定量評価 – MATLABはそのままで最適化されている – NumPyとRはどっこいどっこい – 行列の密度でかなり性能が変わる • スパース行列は使っていないにも関わらず

×