読者です 読者をやめる 読者になる 読者になる

(wrist blog)

twitterはこちら http://twitter.com/wrist

PyConJP2014に行って来ました

2014/9/13-14と東京までPyConJP2014に参加しに行って来ました。

参加経緯

これまでこういうプログラミング言語系のカンファレンスには地方Ruby会議ぐらいしか行ったことがなかったので、 常々東京でやっている本家のイベントに行きたいと思っていました。 関西でPython関連の読書会を始めたこともあってぼんやりPyConにも参加したいと思っていたのですが、そんなところにPRML読書会に来てくださっている@nekoallergieさんが割と速攻でEarlyBirdに申し込んでいたので、これは行くしか無いと思ったのがきっかけです。

1日目

それなりに早い時間に大阪を出発したものの若干ギリギリの到着になってしまいましたが、なんとかKeynoteに間に合いました。

Keynote: Kenneth Reiz

  • Requestsの作者のKenneth氏によるKeynote
  • python2と3について後者はまだまだ使われていない
  • 使った体験を貴方が他の人にシェアするんだ
  • 質疑応答「Python3を使う利点は?」「No benefit.」

Deep Learning for Image Recognition in Python

  • 資料
  • PyConは合コンではない
  • kaggleの犬猫画像識別
    • 画像認識
      • 特徴量はSURF、Haar-like featuresが一般的
      • Pythonライブラリ: OpenCV, Mahotas
    • 最初は特徴量としてHaar-like featureを用い、ロジスティック回帰で学習して正解率約60%
    • DNNを使って特徴量を抽出したらほぼ何もしなくても96%
    • 上位はそこから更に98.5%ぐらいまでチューニングなどして正解率を上げている、上位はガチの研究者達とのこと
  • DeepLearningのFramework
    • Theano/Pylearn2, cuda-convnet, OverFeat, Caffe, DeCAF
    • Pythonがコア言語なのはPylearn2とDeCAF
    • ライブラリによってPre-trained Networksという予め作成されたネットワークが利用できるかどうか違う
  • Pepper君に何をして欲しいかを一つ考えよう
    • アイドルをスカウトさせたい
    • JKC(人工知能)48
    • 最終的に画像をアップロードするとPepper君が点数を付けてくれるWebサービスのデモ

Gunicorn, the thundering herd and other concurrency programming challenges

  • 資料
  • gunicornはgreen unicornの略でUNIX向けのWSGI HTTPサーバ
    • rubyUnicornからpre-fork worker modelを移植している
  • thundering herd problemをいかにして克服したか
    • thundering herd problemとはイベントを待っている多くのプロセスがイベント発生時に全て動作しようとするが、同時に一つのプロセスしか処理ができない時に起こる問題のこと
      • 全プロセスが一旦起きるが一つしか動作できないので他は再び寝てしまい、これを繰り返すことでシステムに負荷が掛かる
  • チケット#792でhundering herdを解決
    • arbiterとworkerの間でパイプを通じてシグナルをやりとり
      • arbiterはsocketがreadできるかどうかをチェックし、workerはarbiterに仕事を要求するか生きていることをnotify
  • バージョン20.0では完全にgunicornコマンドのみになり、他のコマンド(gunicorn_djangoなど)については削除される予定
  • ユーザエクスペリエンスの向上を現在進行形で取り組んでいるとのこと
  • 前提知識が足りない、英語、途中から入った、という三重苦であまり理解できなかった

Lunch

弁当がでました(写真は撮り忘れた)

Data collection, analysis and optimization with python

  • 過去の番組表からタレントの出現頻度を分析
  • データ収集
    • requests, bs4(BeautifulSoup4), (Selenium)を用いる
  • データ分析
    • pandas, scikit-learn
  • 可視化
    • k-meansでクラスタリングした結果をmatplotlibで表示
    • タレントの出現頻度の時系列プロット、みのもんたは途中から(謎の理由で)頻度が減る、鳩山元首相も途中から消える
  • 当初何故かrequestsが入っていなくてデモができなかったが、最後でpip installして成功して会場から拍手
  • statsmodelがチラっと出て来たけど触ったことないので軽く触りたい

Effective numerical computation in Numpy adn Scipy

  • 資料
  • 効率的にスパース行列を計算するにはどうすれば良いのか、が主題
  • MedKitが参考になるとのこと Numpy MedKit
  • lil_matrixでスパース行列を構成し、csr_matrix, csc_matrix(row, colアクセスが速い)に変換すると良いとのこと
  • 自分で実際に触ってみた上で参考にしないと分からないなーという印象

Introduction to scientific programming in python

break

近くのコンビニのATMに金下ろしに行ってました。会場に戻ったら珈琲が出てたので適当に飲んでた。

リファクタリングツールあれこれ

  • 資料
  • 色々なリファクタリングのためのツールの紹介(vim寄り)
  • 感想
    • pep257知らなかった
    • vimのSyntasticを使うと勝手にpep8でチェックしてくれるのだが、調べたところflake8も使えるっぽいので後日vimrc弄りたい
    • 勝手に整形してくれるautopep8やautoflake知らなかったので後日試す
    • Ropeも便利そう、是非試してみたい

Mining sentiments in tweets using Python

  • tweet(英語)の極性判定の内容
  • Precision, Recall, F値という単語を久し振りに聞いた

Lightning Talk

  • Gunosyの広告配信サーバ
    • Pythonで構築している
    • 統計解析にNumpy,Scipy,Cython,Numba,Bokeh
    • この辺りの詳しい話がここ載っていた
  • pydun
  • 非エンジニアがPyConJPスタッフをしてみた
    • 緊張していたと言っていたが人事らしいしっかりした話し方
    • デプロイできる人事の存在に驚き
  • Djangoの話
    • 普段Djangoを書かないがためか何故かほぼ記憶にない

Party

  • @mzmttksさんがリプライをくれたこともあって、そのまま色々輪が広がっていって色々な人と話せたのですごい良かった、世の中は狭い

2日目

Keynote: Hirokazu Nishio

  • 若干遅刻したが大体聞けた

Job Fair

  • 皆コミュニケーションツールとしてslack使ってるのだなーと思った
  • ノマドデーを作ったらその日だけコミット数が少なくなったという話が途中であったが、人はサボるものなのだと思ってしまう

Poster Session

  • 確率プログラミング
    • PyMC3よりPyMC2の方がまだマシ、STANはオススメとのこと

Lunch

  • 2日目はサンドイッチだった、レタスが豊富に含まれておりでかかった

OpenCVpythonインターフェース入門

  • 資料
  • マイナビで連載をしているとのこと
  • OpenCV
    • いろんなモジュールが沢山入っている
    • C, C++版とほぼ同じ名前で関数を呼び出せるpython, Javaバインディングが存在
    • 最新バージョンは2.4.9だが最近3のベータ版が出た
  • import cv2
  • 基本モジュールとしてcore, imageproc, highv?(マウス操作など)
    • video(動画処理)、 calib3d(AR), ... 物体検出など
    • mlもあるがサポートベクターマシン、ランダムフォレスト、GMMもあるがscikit-learnなどの方が良い
  • OpenCV配列がnumpyとして保持される
    • imread()
    • 線形代数関連がそのまま使えるのがメリット
  • 画像の可視化
    • cv2.imshow()で実行可能
    • matplotlibも使える
    • 可視化するときだけBGRから変換が必要、内部的に扱うときはそのままでも良い
  • ガウシアンブラー
    • 自分で窓を定義しても良いが、OpenCVにも用意されている
  • エッジ検出
  • 動画の背景差分
    • background.subtrackterなんちゃらですぐできる
  • 人検出
  • QA
    • デメリットは速度
    • anacondaを使っている場合は2.4.9が入るのでそれが一番楽
    • c++だとCUDAとかOpenCLが使えるがpythonだと使えるのか
      • 使えない, cythonとかで組む, 3.0だとあるかもしれないが3.0だとpython3.x系対応

Pythonとscikit-learnではじめる機械学習

  • スパムフィルタの実装
  • ナイーブベイズを使って分類
    • scikit-learnのnaive_bayesのMultinomialで学習
    • クロスバリデーションで評価
    • 予測の説明は時間不足で端折られる
    • 全体的にscikit-learnを用いるとコードが驚く程短くなる
  • scikit-learnは異なる手法でもできるだけ同じインタフェースで学習やら予測ができるので学生時代に使いたかった

数理最適化によるパズルの解放

  • ipython notebookでプレゼン
  • 最適化問題を解くためのpulpというライブラリを使ってパズルを解く話
  • pulpモデラーであり、実際に問題を解くのは別に存在するソルバ
    • ソルバには専用ソルバと汎用ソルバが存在、現実に存在する複雑な問題を解く場合は専用ソルバを用いる
    • pulpをインストールするとCBCという汎用ソルバが同時に入るとのこと
  • LpProblem, LpVariable, LpAffineExpression, LpConstraintを使って問題を定義
    • あとはvalue, lpSum, lpDotさえ使えれば大丈夫とのこと(ただし中身を理解できていないので何が大丈夫かは分からない)
  • 数独やののぐらむ(ピクロス)などを制約を数式で定義して解く
    • 人が解いたら楽しいがコンピュータに解かせても何も楽しくないとのこと

break

  • 立話の中でmatplotlibはSliderなどのGUIっぽいものが使えるということを聞く
    • matplotlib.widgetsの中にSlider, Buttonなどが存在
    • サンプルを実行したところ、正弦波の周波数、振幅をスライダーで変化させ、ラジオボタンで線の色を変更可能なGUIが操作できた
  • @nekoallergieさんにiPadでiPython notebook(numpyなども含む)が使えるアプリCoumputableを教えてもらった
    • 後日インストールしたところ新規ノートを作るのに1000円払って機能解放しないといけなかったので辛い

データ分析の世界へようこそ!〜マーケティングに活かせるPythonライブラリ

  • 資料
  • Python2とPython3のユーザ数の違いに触れてPS3とPS4のユーザ数の違いに言及
    • Play PS4!
  • レコメンデーションにおいてはLiftという概念が重要
    • Xを買った人がYを同時に買う確率が、全体に対しYだけを買う確率に対して何倍であるかという指標
  • scipyのspatial.distanceに距離計算モジュールが存在している

正規表現リテラルは本当に必要なのか?

  • 正規表現文字列はダブルクオーテーションを使うとエスケープ文字をエスケープする必要が出て来るが、シングルクォーテーションであればエスケープしなくても良い
  • raw文字列が使える言語であれば同様に解決するが、Javaにはないのでバックスラッシュに拘らず他の文字を使って解決

Lightning Talks

  • 続・野球プログラミング
  • Pythonではじめる競技プログラミング
    • Pythonアイドルが競技プログラミングをやって青春
  • バイラルメディア
    • 炎上記事は見つけられず
  • PyConJP NOC
    • 参加者としてはありがたい限りです
  • SphixCon JP 2014
    • これまでもPyConとかOSCと共同で開催、今年もやるとのこと

Closing

  • 抽選は最後から2番目に当たった、PyConKrのTシャツを頂いた

雑感

  • 普段自分が使っているmatlabライクにオーディオファイルが扱えるscikit.audiolabは3系に対応していない上にほぼメンテナンスされていない状態
    • これが原因で3系に移れなかった
    • 初日のKeynoteを聞いて他人がなんとかしてくれることを期待してはいけない、自分でどうにかせねばと強く思った
  • 科学寄りの人が多いし英語の発表が多く軽い学会気分
    • 科学寄りの人達は皆iPython notebookを使っていた。あとJuliaに興味がある人も多かった
    • anacondaを使わないとダルいという話が随所であった気がするが皆同じこと思ってるものだと感じた
  • MBAの電池が志半ばな時間帯に2日とも尽きるし2日目に至ってはiPadの電池すら尽きる
  • 日本国内で自分の英語力を鍛える環境をどうにかして整えねばならない
  • どこかの発表でPyTablesが出て来たので後日調べる