Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

110828 tokyo scipy1_hido_dist

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 22 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à 110828 tokyo scipy1_hido_dist (20)

Publicité

Plus par Shohei Hido (20)

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.1 0.01
  17. 17. 固有値分解(density=0.1) 1000 100 10 NumPy R 1 MATLAB 100 200 400 800 0.1 0.01
  18. 18. 特異値分解(density=0.01) 100 10 NumPy 1 R 100 200 400 800 MATLAB 0.1 0.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はどっこいどっこい – 行列の密度でかなり性能が変わる • スパース行列は使っていないにも関わらず

×