Movatterモバイル変換


[0]ホーム

URL:


Kimikazu Kato, profile picture
Uploaded byKimikazu Kato
PDF, PPTX81,993 views

Pythonによる機械学習の最前線

2016/2/4 「ソフトウェアジャパン ビッグデータ活用実務フォーラム」でのプレゼン資料です。主にPythonで書いたコードの高速化の話です。タイトルと中身がマッチしない感じがするのは自覚しています。

Embed presentation

Download as PDF, PPTX
Pythonによる機械学習の最前線2016/2/4ソフトウェアジャパンビッグデータ活用実務フォーラムシルバーエッグ・テクノロジー(株)加藤公一
自己紹介加藤公一(かとうきみかず)シルバーエッグ・テクノロジー(株)博士(情報理工学) (修士は数理科学)Twitter: @hamukazu機械学習歴・Python歴ともに3年今の仕事: 機械学習に関する研究開発特にレコメンデーション(自動推薦)システム、自然言語処理、画像処理など過去の仕事: データ分析ツールの開発、3次元CADの開発、幾何計算のアルゴリズム設計、偏微分方程式のソルバなど
Pythonで使える機械学習・データ分析のツール• 汎用数値計算、科学技術計算:Numpy, Scipy• 機械学習:scikit-learn• 自然言語処理:nltk• データ分析:pandas• データ可視化:matplotlib• 統合分析環境:jupyter-notebook
Pythonで使えるディープラーニングのライブラリ• Pylearn2• Caffe• TensorFlow• Chainer
Scikit-learn + matplotlib分類 クラスタリング回帰機械学習アルゴリズムの適用と結果の可視化をとても便利にできる絵はすべてscikit-learnホームページ(http://scikit-learn.org)より
matplotlib + scikit-learn入門にお薦めデータサイエンティスト養成講座機械学習入門編第2部特集2「Pythonによる機械学習入門」
可視化応用編• さらにインタラクティブな可視化をしたいとき– 例えば…• クリックした部分だけ拡大したい• マウスオーバーすると詳細情報を表示したい• そういうときはPython+JavaScriptが便利• Pythonでアプリケーションサーバを立ち上げるのは簡単– Bottle、Flaskなどの軽量フレームワーク– サーバと連携してのJavaScriptでの可視化• ウェブアプリの仕組みはデータ分析にも有用
などなど…• 便利なツールとその使い方を挙げていくときりがありません• これ以降は、ライブラリを使ってというより、フルスクラッチからアルゴリズムを書きたい人を対象の話
今日のターゲット• 機械学習のアルゴリズムをゴリゴリ書きたい人• (機械学習とは限らない)数値計算、アルゴリズムなどの分野で、他の言語で実装していて苦労している人つまり、Pythonを使うべきなのに使ってない人がいるのでは?
スクリプト言語とは「アプリケーションソフトウェアを作成するための簡易的なプログラミング言語の一種を指す」-- WikipediaPerl, Ruby, Pythonなど特徴:• 短い行数で(少ないタイプ数で)書ける– つまり生産性が高い– 初心者が学習しやすい• インタプリタ型である• 実行速度が遅い
注意:Pythonは汎用言語です!数学的用途以外にも使えます。• ウェブアプリ作ったり• ゲーム作ったり• ツイッターのボット作ったり• ラズベリーパイからLED光らせたりもできます。でも今日はその話はしません。
数値計算・数学的アルゴリズムでPythonを使うべき理由• ライブラリが充実• 結果の可視化が便利• (うまくコードを書くと)速い⇨以降この話数値計算、アルゴリズム系の人、「Pythonは遅いからイヤ」と思ってる人が多いのでは?
Pythonでやってはいけないことs = 0for i in range(1, 100000001):s += iprint(s)1から1億までの和を計算するこれはPython的な書き方ではない
改善例s = sum(range(1, 100000001))print(s)1から1億を返すイテレータを用意し、その和を計算する
Numpyを使うimport numpy as npa = np.arange(1, 100000001, dtype=np.int64)print(a.sum())1から1億が入った配列を用意し、その和を計算する
ベンチマークs = 0for i in range(1, 100000001):s += iprint(s)s = sum(range(1, 100000001))print(s)30.21秒12.33秒0.38秒import numpy as npa = np.arange(1, 100000001, dtype=np.int64)print(a.sum())
問題点(?)• Numpy版は1~100000000が入った配列をあらかじめ用意している• つまりメモリが無駄• メモリにデータを入れるコストも無駄⇨Pythonistaはそんなこと気にしない!
ここまでのまとめ• Pythonの数値計算系ライブラリはC言語等で書かれているので速い• できるだけ計算はライブラリに任せたほうがいい• ライブラリとのやり取りを大量にするより、一度ライブラリに仕事を投げたらしばらく返ってこないくらいの処理がよい– Numpyには高速化のための仕組みがたくさんある(indexing, slicing, broadcasting, etc…)• そのためにメモリ量やメモリコピーコストがかかっても気にしない
でもそれができないときがある• ライブラリ内ではなく、Python側で条件分岐が大量に必要になる場合• どうしてもfor文(while文)で細かい処理をたくさん回さなければいけないとき• 例えば探索系アルゴリズム、組み合わせ最適化など
そんなときに…Cython• PythonをベースにしたC言語のジェネレータ• Pythonで書いたものをそのまま速くすることができる• ちょっと手を入れることでさらに速く
ベンチマーク例def prime(n):p = [True] * (n + 1)m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = Falsei += mm += 1i = nwhile not p[i]:i -= 1return in以下の最大の素数を返す関数(エラトステネスのふるい)通常のPython版:4.75秒 Cython化版:3.04秒prime(10000000)を計算(コードには手を入れず)
def prime(int n):cdef int i, mp = [True] * (n + 1)m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = Falsei += mm += 1i = nwhile not p[i]:i -= 1return idef prime(n):p = [True] * (n + 1)m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = Falsei += mm += 1i = nwhile not p[i]:i -= 1return i型宣言をいれる3.04秒 0.41秒
def prime(int n):cdef int m, icdef int * p = <int * >malloc((n + 1) * sizeof(int))for i in range(n + 1):p[i] = 1m = 2while m < n + 1:if p[m]:i = m * 2while i < n + 1:p[i] = 0i += mm += 1i = nwhile not p[i]:i -= 1free(p)return i0.41秒 0.17秒リスト(配列)についてもC言語風の型宣言と動的割当て
FAQこれって、最初からC言語で書いたほうが早くないですか?
Answer• 確かに最初から最終形がわかっていればC言語で書いたほうが早いかもしれないです。• しかし、とりあえずPythonで書いて動作を確認し、それから徐々に高速化するというのにはCythonは便利です。
まとめ• Pythonには数値計算、機械学習、データ分析に便利なライブラリがそろっている• Pythonはうまくつかうとかなり速い– できるだけ仕事はまとめてライブラリに任せる– それができないときはCythonを使う– Cythonならではの工夫(型宣言)などが必要

Recommended

PPTX
ニューラルネットワークの理論
PDF
ベイズモデリングと仲良くするために
PPTX
5分でわかるベイズ確率
 
PDF
Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)
PDF
第8章 ガウス過程回帰による異常検知
PPTX
Visual Studio CodeでRを使う
PDF
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
PDF
統計的学習の基礎輪読会資料 (7章後半 7.9〜)
PPTX
R seminar on igraph
PDF
異常の定義と推定
PDF
素材産業のDxに貢献する 『Matlantis』のご紹介_nano tech2022_2022/1/28
PPTX
深層学習入門 スライド
PPTX
機械学習を用いた異常検知入門
PDF
学振特別研究員になるために~2022年度申請版
PDF
大規模データ時代に求められる自然言語処理
PDF
内発的動機づけの計算モデル, 岡夏樹
PDF
LDA入門
PPTX
3次元の凸包を求める
PDF
情報抽出入門 〜非構造化データを構造化させる技術〜
PDF
[MIRU2018] Global Average Poolingの特性を用いたAttention Branch Network
PDF
無限関係モデル (続・わかりやすいパターン認識 13章)
PDF
単純ベイズ法による異常検知 #ml-professional
PDF
SSII2021 [OS3] 広域環境の3D計測と認識 ~ 人が活動する場のセンシングとモデル化 ~(オーガナイザーによる冒頭の導入)
 
PPTX
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
 
PPTX
情報検索とゼロショット学習
PDF
グラフデータの機械学習における特徴表現の設計と学習
PDF
学位論文の書き方メモ (Tips for writing thesis)
PDF
科学技術計算関連Pythonパッケージの概要
PDF
Pythonによる機械学習

More Related Content

PPTX
ニューラルネットワークの理論
PDF
ベイズモデリングと仲良くするために
PPTX
5分でわかるベイズ確率
 
PDF
Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)
PDF
第8章 ガウス過程回帰による異常検知
PPTX
Visual Studio CodeでRを使う
PDF
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
PDF
統計的学習の基礎輪読会資料 (7章後半 7.9〜)
ニューラルネットワークの理論
ベイズモデリングと仲良くするために
5分でわかるベイズ確率
 
Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)
第8章 ガウス過程回帰による異常検知
Visual Studio CodeでRを使う
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
統計的学習の基礎輪読会資料 (7章後半 7.9〜)

What's hot

PPTX
R seminar on igraph
PDF
異常の定義と推定
PDF
素材産業のDxに貢献する 『Matlantis』のご紹介_nano tech2022_2022/1/28
PPTX
深層学習入門 スライド
PPTX
機械学習を用いた異常検知入門
PDF
学振特別研究員になるために~2022年度申請版
PDF
大規模データ時代に求められる自然言語処理
PDF
内発的動機づけの計算モデル, 岡夏樹
PDF
LDA入門
PPTX
3次元の凸包を求める
PDF
情報抽出入門 〜非構造化データを構造化させる技術〜
PDF
[MIRU2018] Global Average Poolingの特性を用いたAttention Branch Network
PDF
無限関係モデル (続・わかりやすいパターン認識 13章)
PDF
単純ベイズ法による異常検知 #ml-professional
PDF
SSII2021 [OS3] 広域環境の3D計測と認識 ~ 人が活動する場のセンシングとモデル化 ~(オーガナイザーによる冒頭の導入)
 
PPTX
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
 
PPTX
情報検索とゼロショット学習
PDF
グラフデータの機械学習における特徴表現の設計と学習
PDF
学位論文の書き方メモ (Tips for writing thesis)
R seminar on igraph
異常の定義と推定
素材産業のDxに貢献する 『Matlantis』のご紹介_nano tech2022_2022/1/28
深層学習入門 スライド
機械学習を用いた異常検知入門
学振特別研究員になるために~2022年度申請版
大規模データ時代に求められる自然言語処理
内発的動機づけの計算モデル, 岡夏樹
LDA入門
3次元の凸包を求める
情報抽出入門 〜非構造化データを構造化させる技術〜
[MIRU2018] Global Average Poolingの特性を用いたAttention Branch Network
無限関係モデル (続・わかりやすいパターン認識 13章)
単純ベイズ法による異常検知 #ml-professional
SSII2021 [OS3] 広域環境の3D計測と認識 ~ 人が活動する場のセンシングとモデル化 ~(オーガナイザーによる冒頭の導入)
 
SSII2020SS: 微分可能レンダリングの最新動向 〜「見比べる」ことによる3次元理解 〜​
 
情報検索とゼロショット学習
グラフデータの機械学習における特徴表現の設計と学習
学位論文の書き方メモ (Tips for writing thesis)

Similar to Pythonによる機械学習の最前線

PDF
科学技術計算関連Pythonパッケージの概要
PDF
Pythonによる機械学習
PDF
High performance python computing for data science
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PPTX
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PPTX
Wacode5thでのpython講義資料
PDF
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
PDF
DATUM STUDIO PyCon2016 Turorial
PDF
Introduction to Numpy (and Python) [JPN]
PDF
NumPyが物足りない人へのCython入門
PDF
ディープラーニングフレームワーク とChainerの実装
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PDF
弁理士が知っておきたいPython①
PPTX
Tfug kansai vol1
PDF
Cython intro prelerease
PPTX
Django_Fukuoka
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
多次元配列の効率的利用法の検討
PDF
PyPy 紹介
科学技術計算関連Pythonパッケージの概要
Pythonによる機械学習
High performance python computing for data science
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Wacode5thでのpython講義資料
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
DATUM STUDIO PyCon2016 Turorial
Introduction to Numpy (and Python) [JPN]
NumPyが物足りない人へのCython入門
ディープラーニングフレームワーク とChainerの実装
次世代言語 Python による PyPy を使った次世代の処理系開発
弁理士が知っておきたいPython①
Tfug kansai vol1
Cython intro prelerease
Django_Fukuoka
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
多次元配列の効率的利用法の検討
PyPy 紹介

More from Kimikazu Kato

PDF
Tokyo webmining 2017-10-28
PDF
機械学習ゴリゴリ派のための数学とPython
PDF
Pythonを使った機械学習の学習
PDF
Fast and Probvably Seedings for k-Means
PDF
Pythonで機械学習入門以前
PDF
Introduction to behavior based recommendation system
PDF
Sparse pca via bipartite matching
PDF
正しいプログラミング言語の覚え方
PDF
養成読本と私
PDF
Introduction to NumPy for Machine Learning Programmers
PDF
Recommendation System --Theory and Practice
PDF
A Safe Rule for Sparse Logistic Regression
PDF
特定の不快感を与えるツイートの分類と自動生成について
PDF
Effective Numerical Computation in NumPy and SciPy
PDF
Sapporo20140709
PDF
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
PDF
Zuang-FPSGD
PDF
About Our Recommender System
PDF
ネット通販向けレコメンドシステム提供サービスについて
PPTX
関東GPGPU勉強会資料
Tokyo webmining 2017-10-28
機械学習ゴリゴリ派のための数学とPython
Pythonを使った機械学習の学習
Fast and Probvably Seedings for k-Means
Pythonで機械学習入門以前
Introduction to behavior based recommendation system
Sparse pca via bipartite matching
正しいプログラミング言語の覚え方
養成読本と私
Introduction to NumPy for Machine Learning Programmers
Recommendation System --Theory and Practice
A Safe Rule for Sparse Logistic Regression
特定の不快感を与えるツイートの分類と自動生成について
Effective Numerical Computation in NumPy and SciPy
Sapporo20140709
【論文紹介】Approximate Bayesian Image Interpretation Using Generative Probabilisti...
Zuang-FPSGD
About Our Recommender System
ネット通販向けレコメンドシステム提供サービスについて
関東GPGPU勉強会資料

Pythonによる機械学習の最前線


[8]ページ先頭

©2009-2025 Movatter.jp