The Dabsong Conshirtoe

技術系の話を主にします。

PyconJP 2014に参加した

毎年恒例pyconに参加しました。

今年は例年に比べ機械学習や数理系の話題が多く、自分自身も業務で最近はこの辺に触ることが多かったので嬉しい内容でした。

内容は、1セッションの時間が30分ということもあり、使っているライブラリの紹介や入門内容的なものが多かったですが、それでもどんなライブラリを使っているか知れてよかったです。

機械学習系でよく使われていそうだったライブラリ

numpy

高速な行列計算が便利なライブラリ。

以下のプレゼンでは、1から1億までの数を合計するプログラムが、素のpythonと比べて80倍早かった(Cと同等)とのこと。

Effective numerical computation in num py and scipy

scipy

sparse matrixなど、便利なデータ構造がある。距離計算関数なども。

matplotlib

グラフ描画ライブラリ。APIMATLABに似ているとのこと。プロジェクトは非常に成熟・安定しているとのこと。

scikit-learn

機械学習ライブラリ。機械学習系のライブラリは他にもいくつかありそうでしたが、これがデファクトという感じでした。

メリットは、

  • 使い方が簡単
  • 比較的高速
  • メジャーなアルゴリズムはだいたい網羅している
  • プロジェクトが活発

pandas

クロス集計など、行列計算を楽にするライブラリ。RのData.Frameに似ているらしい。scikit-learnと相性が悪い、という人も一人だけいた(詳しいことはわかりませんでしたが)。

anaconda

これらデータ分析に必要なライブラリを一挙にインストールするためのパッケージ。numpyやscipyのコンパイルは大変なので(何かしらハマりどころが多い)、これを使うと楽らしい。

標準モジュール

itertools

permutationやgroupbyなど、便利なモジュール多いです。

collections

defaultdictには毎日のようにお世話になってます。Counterとかも便利だそうです。

statistics

python3.4から新しく入ったライブラリ。平均や標準偏差などの統計量を計算するライブラリです。

iPython Notebook

プレゼンのツールとして, iPython Notebookを使っている人が多かったです。グラフとコードを一体にして見せれるので、分析系の人たちには重宝されていそう。

その他面白かったもの

Deep Learningと画像認識

「Deep learning for Image Recognition in Python」というタイトルでHideki Tanakaさんの発表でした。

Deep Learning for Image Recognition in Python

  • 機械学習の精度を競うKaagleというウェブサイトがあり、そこで犬と猫の画像を自動判定する課題に挑戦した。

    • 最初は、画像認識のための一般的な特徴量であるHaar-like featuresを使った。
      • 60%くらいの精度しか出ず。しかしながら、Kaagleでのトップランナーは99%近い精度を出している。
  • トップの連中はどうやらDeep learningという手法を用いているらしい。

    • Deep Learning (Pre-Trained Networks)を使ってみたところ95%まで急上昇した。

後半に公開された会場限定のスライドが非常に面白く、初日のキーノートと並んで最も面白く、記憶に残る楽しいプレゼンでした。

Oktavia

Oktaviaという全文検索エンジンのプレゼンがありました。

従来の転置インデックスではなく、「高速文字列解析の世界」にあったFM-Indexというアルゴリズムを採用したという話でした。

  • 検索エンジンのインデックスとしては、一般的には転置インデックスが用いられる。
    • 日本語や中国語などアジア系の言語は単純に単語に分割できない。

      • 形態素解析を用いて分割し、転置インデックスを作る
        • 各言語に精通している必要がある。
        • 巨大な辞書が必要。
        • 検索ワードに対しても、同様の処理(形態素解析)を行う必要がある。
      • N-gram
        • インデックスファイルが巨大になりやすい。
    • そこで、FM-Index

      • 「高速文字列解析の世界」で紹介されていた。
      • 検索前に単語を分割する必要がない。
      • 圧縮インデックスファイルを使った検索アルゴリズムの中でも最速。
      • インデックスファイルからオリジナルのドキュメントを復元できる。
      • 参考

キーノート(1日目)

スピーカーはreqeustsの作者であるKenneth Reitzさん。

python2, python3のコミュニティの分断について語られました。

個人的には、python2はこれ以上進化しないとわかっているわけだし、ライブラリのpython3対応もかなり進んでいるので、あとは趣味レベルを越えたビジネスでの事例が出てくれば自然に移行していくんじゃないかなと楽観的に見てます。

事例が少ないだけに、今python3を採用すれば先進的なブランドイメージが得られるかもしれないですね。

以上。運営の皆様、お疲れ様でした!