Data  Science  Packages.
#JuliaTokyo
2015/4/23
1
⾃自⼰己紹介
2
Twitter :@yutajuly
興味   :⼈人⼯工知能,  深層学習,  オンライン学習,  最適化  
             エッジヘビーコンピューティング
           
Julia   :「RとPythonとJuliaで機械学習レベル4を⽬目指す」
             「Juliaでスパム判定の機械学習分類器を作る」
             「JuliaでDeep  Learning  vol.0」
俺もパッケージ作って発表するか。
あるもの作ってもしょうがない。
何があるんだろう?
パッケージ乱⽴立立しすぎ  !!
何ができるか  わからなすぎる!!
3
ここでは、Juliaの統計解析,  機械学習,  その他
データ分析のパッケージをまとめて紹介します。
4
取り扱うテーマ
5
1.  データ構造
2.  可視化
3.  統計解析
4.  統計モデリング
5.  時系列列データ解析
6.  機械学習
7.  ディープラーニング
8.  グラフ・ネットワーク解析
*JuliaのパッケージはすべてGitHub上で管理理
①公式レポジトリに登録されたもの
•  公式リポジトリ:JuliaLang/METADATA.jl
•  公式HPから検索索可能:http://pkg.julialang.org/
•  2015/4/18時点で547パッケージ
•  Package.add(“PackageName”)で利利⽤用
②個⼈人がGitHubで公開しているもの
•  Package.clone(“PackageURL”)で利利⽤用
⇒  ここでは基本的に①を中⼼心紹介
6
*JuliaのパッケージのOwnerは2パターン
①コミュニティ
•  複数⼈人のメンバーがコミットして貢献が⼤大きい
•  JuliaStats,  JuliaOpt,  JuliaParallel  etc…
②個⼈人
•  個⼈人がコミット
⇒  ①、②両⽅方とも紹介ですがコミュニティ強い
7
データ構造
8
DataFrame.jl
•  標準のリスト,  配列列,  タプル,  辞書では扱いづらいテーブ
ルデータをサポート
–  カラムごとに異異なるデータ型
–  NAあり
•  Rの”data.frame”,  Python(Pandas)の”DataFrame”
データ構造:使⽤用例例
9
–  DataFrame()でDataFrame型を作成
•  @data()でDataArray型を利利⽤用してNAを許容する
•  カラム名称も与えられる
–  DataFrame型データには、Rっぽいお馴染みのメソッドがある
•  size,  ncol,  nrow,  head,  tail,  cbind,  rbind
•  describe()で要約統計量量
•  colwize(mean,  df[:Name])などで列列ごとの演算    etc
可視化
10
Gadfly.jl
•  プロット等の各種のデータ可視化
•  Rの”ggplot2”,  Pythonの”matplotlib”
可視化:使⽤用例例
11
統計解析
12
StatsBase.jl
•  統計に関する様々な基本的なサポートを提供
Distributions.jl
•  各種分布からのサンプリング,  分布フィッティング等
HypothesisTests.jl
•  各種の仮説検定を提供
それぞれ、Pythonの”Scipy”の⼀一部の機能
統計解析:使⽤用例例
13
統計解析:使⽤用例例
14
統計モデリング
15
GLM.jl
•  ⼀一般化線形モデルを提供。Rの”GLM”と⾔言える
•  ⽬目的変数の分布により、リンク関数として以下を提供
–  正規分布(Normal)
–  ポアソン分布(Poisson)
–  ⼆二項分布(Binomial)
–  逆正規分布(Gamma)
•  AIC,  R2などの出⼒力力がなさそう。Predictがけっこう⾯面倒
くさそうだったり、使い勝⼿手は、もう⼀一歩(?)
統計モデリング:使⽤用例例
16
時系列列データ解析
17
TimeSeries.jl
•  時系列列データのためのツールキット
•  TimeArray型を提供
TimeModels.jl
•  時系列列モデルを提供も、少し怪しい(?)
–  srcには以下と思われるものがある
•  ARIMA,  GARCH,  カルマンフィルター
–  ドキュメントはGARCHのみ
–  GARCHのExample試したけどエラー
–  8ヶ⽉月前でGit更更新⽌止まってる(!?)
時系列列データ解析
18
機械学習(教師あり)
19
NaiveBayes.jl
•  ナイーブベイズを提供
–  Gaussian(観測値が連続値),  Multinomial(観測値が単語とか
の出現回数)の2パターンを⽤用意
–  PythonのScikit-‐‑‒learnでは、Bernoulli(観測値が0-‐‑‒1)を加えた
の3パターン
BackpropNeuralnet.jl
•  ニューラルネットワークを提供
機械学習(教師あり)
20
LIBSVM.jl
•  最も有名なSVM実装の1つであるLIBSVMのJulia版
SVM.jl
•  PegasosアルゴリズムによるSVM実装。⾼高速で、オンラ
イン学習等に⽤用いられることが多い
機械学習(教師あり)
21
DecisionTree.jl
•  決定⽊木,  RadomForestを提供
•  分類,  回帰の両⽅方⽤用意
ExtremelyRandomizedTrees
•  RadomForestの派⽣生。⽊木の分岐をランダムに作ること
で、学習の⾼高速化と過学習の可避を実現する
•  分類,  回帰の両⽅方⽤用意
機械学習(教師あり)
22
kNN.jl
•  k近傍法を提供
•  分類,  回帰の両⽅方⽤用意
LowDimNearestNeighbors.jl
•  k近傍法の改修版。2〜~3の低次元下でのより効率率率的で適
切切な近傍探索索を⾏行行う
機械学習(教師あり)
23
MLBase.jl
•  パラメータチューニングや交差検証、評価⽅方法
を含む教師あり機械学習モデルの統⼀一的なフ
レームワークを提供する
–  gridtune(グリッドサーチ)
–  cross_̲varidate(交差検証)
–  confusmat(混合⾏行行列列)
–  etc
機械学習(教師あり、教師なし)
24
MultivariateStats.jl
•  多変量量解析(回帰と次元削減)を扱う
–  回帰
•  線形回帰
•  リッジ回帰
–  次元削減
•  主成分分析(PCA)
•  正準相関分析
•  多次元尺度度構成法  (MDS)
•  判別分析
•  独⽴立立成分分析
機械学習(教師なし)
25
Clustering.jl
•  下記のクラスタリング⼿手法を提供
–  k-‐‑‒means
–  k-‐‑‒medoids(⾮非類似度度を⽤用いる)
–  Affinity  Propagation
–  DBSCAN
•  種類数は、Scikit-‐‑‒learnの取り揃えに及ばない
–  特に階層クラスタリングがない
機械学習(教師なし)
26
KShiftsClustering.jl
•  ⾼高速で低メモリで実⾏行行されるクラスタリング
–  k-‐‑‒meansの類似の結果が得られる(らしい)
–  オンラインでのクラスタリングにも利利⽤用される
QuickShiftsClustering.jl
•  ⾮非類似度度で測定される⾼高速な階層クラスタリングを提供
NMF.jl
•  ⾮非負値⾏行行列列因⼦子分解を提供
機械学習(オンライン学習)
27
ConfidenceWeighted.jl
•  オンライン機械学習のSCWを提供
•  @chezouさん作成
機械学習:使⽤用例例
28
http://nbviewer.ipython.org/github/bensadeghi/julia-
datascience-talk/blob/master/datascience-talk.ipynb
機械学習:使⽤用例例
29
参考
http://nbviewer.ipython.org/github/bensadeghi/julia-
datascience-talk/blob/master/datascience-talk.ipynb
ディープラーニング
30
Mocha.jl
•  ディープラーニングのフレームワークを提供
–  ⼤大きく、以下の2種類の構造が利利⽤用可能
•  (Slacked)  Auto-‐‑‒encoders
•  Convolutional  Neural  Network
–  Restricted  Boltzmann  Machineを⽤用いた構造はない
ディープラーニング:使⽤用例例
31
グラフ・ネットワーク解析
32
Graphs.jl
•  グラフ解析,  グラフ⽣生成を提供
•  Rの”igraph”,  Pythonの”networkX”
GraphViz.jl
•  GraphvizへのJuliaインターフェースを提供
時間の都合上触れなかったパッケージ
33
•  サンプリング
–  Sampling.jl
–  Resampling.jl
–  Bootstrap.jl
•  MCMC
–  SliceSampler.jl
–  MCMC.jl
–  Lola.jl
–  Mamba.jl
•  機械学習,  確率率率モデル
–  KernelDensity.jl
–  BayesNets.jl
–  Boltzmann.jl
–  HopfieldNets.jl
–  ManifoldLearning.jl
–  SGDOptim.jl
•  利利⽤用が困難系
–  CurveFit.jl
–  TimeData.jl
–  MachineLearning.jl
時間の都合上触れなかったパッケージ
34
MachineLearning.jlについて
•  決定⽊木,  RadomForest,  ニューラルネット,  BARTを提供  
•  学習/検証データ分割,  交差検定等のツールも提供
•  ⼩小規模データにしか適⽤用できない
–  “working  with  a  dataset  that  fits  in  memory  on  a  
single  machine”
構築環境
35
Julia  v0.3.7
参考
Juliaʼ’s  Role  in  Data  Science
–  http://radar.oreilly.com/2013/10/julias-‐‑‒role-‐‑‒in-‐‑‒
data-‐‑‒science.html
Julia  for  Data  Science
–  http://nbviewer.ipython.org/github/bensadeghi/
julia-‐‑‒datascience-‐‑‒talk/blob/master/datascience-‐‑‒
talk.ipynb#for-‐‑‒Data-‐‑‒Science

Data science packages