› tsuji_20161020.pdf python 辻 真吾(@tsjshg オープンソースの多様性 …pasona tech...

Post on 27-Feb-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PASONA TECH 歩いてっくセミナー

Pythonの魅力と

オープンソースの多様性辻 真吾(@tsjshg)2016.10.20

自己紹介❖ 1975年生まれ

❖ 東京大学先端科学技術研究センター 特任助教

❖ 研究室はがんとゲノム

❖ やっていることはPythonでデータ解析

❖ 昔はJavaでWeb開発とかしていましたが、10年ほど前から全部Python

❖ http://www.tsjshg.info/

みんなのPython勉強会

❖ connpassでイベント情報公開しています

❖ http://startpython.connpass.com/

❖ 誰でも歓迎なPython勉強会

❖ 18回目の次回は11/9(水)

19:00~の予定です

Udemy

https://www.udemy.com/python-jp/?couponCode=TSJSHG45D割引クーポンあります→

今日の構成❖ オープンソースと選択肢

❖ Pythonについて

❖ Pythonの特徴

❖ Pythonの環境構築

❖ Webアプリ開発からみたオープンソースの多様性

❖ AIと機械学習

❖ データサイエンスを支えるオープンソース

❖ インフラとしてのオープンソース

オープンソースは選択肢が多い

PC-UNIX

シェル

軽量言語

初勝利

考えられる可能性

❖ Pythonの可読性

❖ Cライブラリとの連携の良さ

❖ バージョン間の互換性

❖ Pythonも2と3は結構違う

❖ マルチプラットフォーム

どうしたらいいのか?

❖ 基本的には勝ち馬に乗れ

❖ 情報が充実している

❖ 開発コミュニティの大きさ

❖ 偶然が支配する部分は大きい

Pythonがインフラになりつつある

英語?

未来も明るい❖ 米国の大学Top10のうち、8校がPythonを計算機科学科の入門言語として採用

❖ Top39校中だと27校(約7割)

❖ データサイエンスの分野で存在感が増していることも影響している?

フランス語ではなく・・・

❖ 英国の小学生やその親御さんの多くが、第二言語としてフランス語よりPythonを希望

いろいろなプログラミング言語

汎用的目的 特化

簡単

難しいC++

Java

C

SQL(データベース)R(データ解析)

PythonRubyPerlJavaScript(Web)

PHP(Web)

TeX(組版)

C#

Shell

*個人の見解です

Pythonの生い立ち❖ 教育用に開発されたABCに影響をうけている

❖ 正統派C, C++からも影響を受けている

❖ つまり、入門しやすく、標準的なプログラミングのスタイルを採用

https://ja.wikipedia.org/wiki/Python

Wikipediaより

Pythonの環境構築

Pythonのインストール

❖ 2系と3系がある

❖ 後方互換性がありません

❖ 特に理由がなければ3を

❖ MacOSXやLinuxのOSにはじめからインストールされているのが2系(なのが残念)

www.python.org

Anacondaがおすすめ!

❖ Continuum Analytics社が配布するPython

❖ 標準のPythonにcondaをはじめとして多くの外部ライブラリを同梱

❖ 無料(メアド登録あり)

❖ データ解析環境の構築に最適https://www.continuum.io

豊富な外部ライブラリ

外部モジュールが豊富 91,068個(2016年10月20日)

ライブラリの追加方法

ファイルをダウンロードして解凍後$ python setup.py install

lib/python3.5/site-packagesのようなディレクトリにインストールされる

実際はpipが便利• Python3.4から標準装備

• PyPIから自動ダウンロード

• 削除にも対応

• 使い方(OSのシェルで)

• pip install -U django

• -U or --upgradeで最新版を取得

• pip freeze

• いまの状態を表示

しかし・・・❖ CやFORTRANで書かれたライブラリがその場でコンパイルされることがある

❖ Linuxは大丈夫

❖ MacOSXならXCodeのインストールで対応

❖ 開発環境を手軽に整えるのが難しいWindowsでこの問題は重い

condaが便利

❖ $ conda install django

❖ pipと同じような方法で、外部モジュールを追加

❖ PyPIではなく、Continuum Analytics社のレポジトリに接続し、Windowsでもコンパイル済みのバイナリをとってきてくれる

❖ PyPIのバージョンよりちょっと古いことも

condaで複数バージョン

❖ Python3.xとPython2.xの両方欲しいとき

❖ $ conda create python=2.7 -n my27env

❖ $ source activate my27env

❖ $ source deactivate my27env

Jupyter notebookが便利❖ 高性能なPythonインタラクティブシェルIPython

❖ コマンドラインでipython

❖ Webブラウザで利用できるJupyter notebook

❖ Jupyterという名前で、Python以外の言語も利用可能

❖ コードの入力、実行、結果の表示、保存などができる

❖ ノートブックをHTML形式に変換できる

Webアプリ開発からみた オープンソースの多様性

WSGI❖ Web Server Gateway Interface

❖ PythonのおけるWebアプリケーションのための標準仕様

❖ 標準モジュールにwsgiref(WSGI Utilities and Reference

Implementation)がある

❖ WSGIに準拠したWebアプリを標準モジュールだけで作れる

❖ 多くのPython製WebアプリフレームワークやWebサーバがこの仕様に準拠

たくさんある

https://ja.wikipedia.org/wiki/Web_Server_Gateway_Interface

PythonとWebアプリ開発

❖ 言語の哲学(やり方はできれば一種類がいい)と矛盾している?

❖ Webは用途が広いので、フレームワークの細分化は必要

❖ 「みんなのPython」柴田淳さん

代表例❖ Bottle (http://bottlepy.org/)

❖ 超軽量(なんと1ファイル)すぐ使える

❖ Flask (http://flask.pocoo.org/)

❖ Pyramid (http://www.pylonsproject.org/)

❖ Pylonsの流れをくむ

❖ Django (https://www.djangoproject.com/)

❖ フルスタックフレームワーク

フレームワークの構成

View

Controller

Model

Object-Relational MappingORM(OR Mapper)

• SQLAlchemy• peewee• SQLObject• Storm• Django

Template Engine

• Mako• Jinja2• Cheetah• Bottle• Django

多くのWebアプリケーションフレームワークは、これらの組み合わせDjangoは自前主義なので、考え無くていい

Webアプリ開発

Ruby on Rails Django

Webアプリケーション開発のフレームワークとして有名なRuby on RailsとDjangoを比較

Google Trends

Report Lab

❖ PythonでPDFを作れる

❖ 日本語ももちろんOK

❖ 位置を指定して、文字を流し込んだり、線を引いたりするコードを書く感じ

❖ オープンソースだが有料版も

小まとめ

❖ オープンソースには選択肢が沢山ある

❖ 大きな組織が面倒をみてくれるとちょっと安心

❖ condaやReport Lab

❖ 標準仕様があるとみんな作りたくなる?

❖ Webアプリフレームワーク

AIと機械学習

最近のAIを取り巻く話題

http://www.gizmodo.jp/2011/02/ibm_2.htmlhttp://www.nature.com/news/google-ai-algorithm-masters-ancient-game-of-go-1.19234http://japanese.engadget.com/2016/07/01/dvd/

IBM ワトソン

自動運転車の実現

Alpha GO

AIとは?❖ 人工知能(AI:Artificial Intelligence)

❖ 1956年米ダートマス大の会議で初めて使われた

❖ 強いAI(Strong AI)と弱いAI(Weak AI)

❖ 色々な定義がある模様

❖ 強いAI:人間と同じやり方で問題解決(まだ夢?)

❖ 弱いAI:特定の問題解決に特化

よくある例え

❖ 両方飛べるが、やり方がまったく違う

❖ ジェット機は滑走路がないと飛べないが、スピードは鳥より速い

❖ 特定の目的に特化して、生命体を凌駕

知能を形作る技術

検索

画像認識

知識ベース

AI

パンダ「竹が主食ってアホ?」

パンダ

なぜ今?❖ まだまだ、それぞれの技術を磨いているレベル

❖ 自然言語処理の分野など

❖ 機械学習革命

❖ Deep Learningの出現

❖ 玉石混淆

❖ 本質を見極める姿勢が重要(だと思います)

機械学習革命の本質

*Azureのブログに同じような図があります。パクりではありません。

データ 欲しい結果プログラム

(プログラマが作る)

従来のシステム

データ

(予備的な)欲しい結果出力

機械学習アルゴリズム

機械学習時代のシステム

プログラム

たとえば

❖ 自動販売機にコインをいれると、種類を判定してくれる

❖ 今は、センサーで取得したデータをもとに、プログラミングされている

❖ 機械学習アルゴリズムを使えば、コインとその種類の対応データを学習させれば良いだけになる

今の限界は・・・

❖ 機械学習アルゴリズムの入力や出力は数値

❖ 画像はRGBで数値化

❖ 自然言語は、単語の出現回数のようなデータ

❖ このあたりの研究が進むとさらなる進化が期待できるかもしれない

機械学習とデータサイエンス

いくつかの選択肢❖ SAS (www.sas.com)

❖ BIツールの代表格

❖ Matlab (jp.mathworks.com)❖ 数値シミュレーションなどに利用されている

❖ R

❖ RStudio(IDE)は便利

❖ Python

我田引水

オープン? 汎用言語?

SAS × ×

Matlab × ×

R ○ ×

Python ○ ○

データサイエンス分野での躍進

❖ SASからRへ

❖ オープンソースへの流れ

❖ データサイエンスの分野ではPythonの利用が伸びている

❖ (注)2016年からPythonが新たに選択肢に加わった

http://www.kdnuggets.com/2016/07/burtchworks-sas-r-python-analytics-pros-prefer.html

みんなPythonでできる

http://www.talyarkoni.org/blog/2013/11/18/the-homogenization-of-scientific-computing-or-why-python-is-steadily-eating-other-languages-lunch/

2013~

2011年前後

Pythonはglue(のり)言語

NumPy, SciPy

❖ Pythonでのデータ解析、科学計算の基礎となるライブラリ

❖ array(ベクトルや行列)の高速な演算を実現

❖ 基本的な統計関数や数値積分、最適化なども可能

Pandas

❖ データ解析なくてはならない超高性能ライブラリ

❖ エクセルのシートをイメージすると分かり易いかも

❖ データの入出力、加工、可視化など幅広く対応

matplotlib, seaborn

❖ データの可視化に使われる

❖ matplotlibはmatlabの代替を意識

❖ seabornはmatplotlibを基礎にして、使用しやすく、統計的な機能も取り込む

seaborn

ドキュメントが・・・

みんな、ごめんね。seabornのドキュメントは有料になったんだ。

ggplotがイイらしいから代わりに使って見たら?

scikit-learn

❖ 進化し続けるPythonの機械学習ライブラリ

❖ 豊富なドキュメントとコード例で、利用するには便利

❖ cheat sheetなどアルゴリズムを学べる資料も多数

Deep Learningは流行り❖ Caffe

❖ http://caffe.berkeleyvision.org/

❖ theano

❖ http://deeplearning.net/software/theano/

❖ Pylearn2

❖ http://deeplearning.net/software/pylearn2/

❖ Keras

❖ https://keras.io/ja/

❖ Chainer

❖ http://chainer.org/

❖ TensorFlow

❖ https://www.tensorflow.org/

分かり易さから、Keras、Chainerがおすすめです

Hype Cycle❖ 先端技術がたどる典型的な道筋

❖ 米国の調査会社Gartnerが提唱

過剰期待の頂

技術の引き金

幻滅の窪地

啓蒙の坂

生産性の台地

Gartner Hype Cycle 2015

http://www.gartner.com/newsroom/id/3114217

Gartner Hype Cycle 2016

http://www.gartner.com/newsroom/id/3412017

機械学習ライブラリの今後

❖ 機械学習はブームの絶頂

❖ 見極めるのが難しい

❖ PythonでDeep Learning以外は、結構落ち着いている

❖ NumFocus

❖ PyData

PyData

http://pydata.org/downloads.html

回帰(Regression)

❖ scikit-learnとstatsmodelsでできる

❖ 若干機能が違う

❖ statsmodelsが詳しい結果を出す

❖ PyDataのようなコミュニティがあるとよい方向へ行く?

目的変数

説明変数

インフラとしてのオープンソース

❖ Linuxなどインフラとして利用されているオープンソースは沢山ある

❖ 社会的責任が増している

❖ 金銭面を含め、オープンソースを支える仕組みが必要?

まとめ

❖ インフラになりつつあるPython

❖ オープンソースの選択肢

❖ 本質を見極めよう

❖ とりあえず勝ち馬に乗る

❖ オープンソースを社会が支える必要性

ありがとうございました

top related