More Related Content
Similar to 110828 tokyo scipy1_hido_dist
Similar to 110828 tokyo scipy1_hido_dist (20)
More from Shohei Hido (20)
110828 tokyo scipy1_hido_dist
- 1. NumPyと
RとMATL
比較に 関 A B ®の
する一考
察
比戸将平
Tokyo.S (@sla)
ciPy#1 2
011.08.2
8
- 2. 自己紹介
• 比戸将平(HIDO Shohei)
• TwitterID: @sla
• 所属:IBM東京基礎研究所(6年目)
• 専門:データマイニング、機械学習
• 使用言語:Java、 R、 MATLAB®、Python
• マイブーム:NumPy+SciPy
– 4年前:「Rすげぇ!」
– 3年前:「Rちょっとうぜぇ!」
– 2年前:「MATLAB様!」
– 1年前:「おいMATLAB!」
– 今年:「冷やしNumPy始めました」
- 4. 本発表の結論
適材適所
• 大きく見れば同じような機能・性能・環境
• パフォーマンスー習得コスト-実装コスト
• 決定打となる要素は何か?
- 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. 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. NumPy (Numerical Python)
• Python用の数値計算ライブラリ
• 科学計算フレームワークSciPyの基盤
• OSSライセンス:BSD&MIT
def abs(value):
if value < 0:
abs_value = -value
else:
abs_value = value
return(abs_value)
例:絶対値を求める関数
絶対値を める関数
- 10. 使う
NumPy R MATLAB
• 無償 • 無償 • 有償製品
• Python各種ツール • 豊富なライブラリ • Toolbox別売
•matplotlib • CRANで一括管理 • ユーザーコミュニティ
•Cython
•f2python
•IronPython
•PyPy
•PyUnit
•PyLint
• 内部パッケージが複雑
• 機能の重複がいろいろ
- 11. 作る&配る
NumPy R MATLAB
• Eclipse+PyDev • R GUI • MATLAB製品
• R+StatET
• BSD • RStudio • MATLAB Compiler
• MATLAB Common
・ ツール群はGPL Runtimeのインストール
- 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. 今回の定量評価対象
• 行列演算:機械学習等で非常に重要
– 逆行列
– 固有値分解
– 特異値分解
• 比較軸
– 行列size:{100, 200, 400, 800}
– 行列density:{0.001, 0.01, 0.1}
• スパース行列に対する計算
• ただしスパース行列のデータ構造は未使用
- 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
- 22. まとめ
• 定性評価
– NumPyはPython関連ツールが強み
– Rのライブラリ充実度は使う分には大きな強み
– MATLABはMCRを使えるならば有用
• 定量評価
– MATLABはそのままで最適化されている
– NumPyとRはどっこいどっこい
– 行列の密度でかなり性能が変わる
• スパース行列は使っていないにも関わらず