SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「PyData.Tokyo Meetup」イベントレポート

ストリーミング処理サービス「Amazon Kinesis」と、米国の本家イベントの紹介~PyData Tokyo Meetup #2イベントレポート


  • X ポスト
  • このエントリーをはてなブックマークに追加

PyData NYC参加レポート

 PyData Tokyoオーガナイザーのシバタアキラ(@madyagi)です。

本家のPyDataカンファレンス

 日本では先月始まったPyDataコミュニティーですが、実は2012年に始まっている本家のアメリカのPyDataコミュニティーとの交流は未だ始まっていませんでした。折しも本家では半年に一度行われるPyDataカンファレンスが2014年11月22日から23日の日程でニューヨークで行われることになっており、オーガナイザーの田中と2人で行った研究発表も兼ね、参加してきました。

 カンファレンスのアジェンダはこちらからご覧いただけます。

 登壇者はビッグデータのインフラをフル活用しているエンジニアから、並列計算にはまったく興味のない研究者まで非常に幅広く。Pythonのツールを使ってできる新しいことや、研究発表を行っていました。

今回のカンファレンスからのハイライト

 今回私が参加したセッションの中から、特に注目に値すると思ったものをいくつかピックアップしてお伝えしたいと思っています。

ビッグデータへのインターフェースとしてのPython

 PyDataオーガナイズの母体ともなっている、Continuum Analytics(Numpyの開発者だったTravis Oliphant氏がCEO)のエンジニアの発表の多くが、分析インフラに関してのお話でした。

 彼らはBlazeというライブラリで、既存のNumpyやPandasといったインターフェイスレイヤーを拡張することで、同一インターフェイスでさまざまなデータバックエンドへのアクセスを可能にしようとしていました。

 具体的には、このような形で、データと計算を別々に定義することがポイントです。

>>> from blaze import TableSymbol, compute
>>> accounts = TableSymbol('accounts', '{name: string, amount: int}')
>>> tsum=accounts.amount.sum()
>>> from pandas import DataFrame
>>> df = DataFrame([['Alice',   100],
               ['Bob',    -200],
               ['Charlie', 300],
               ['Dennis',  400],
               ['Edith',  -500]],
              columns=['name', 'amount'])
>>> compute(tsum, df)
100

 そうすることで、仮にデータの入っているバックエンドが変わったとしても(下記の場合、DataFrameから、numpy.ndarrayに変換している)同じ形で計算を行うことができます:

>>> from blaze import into
>>> L = into(np.ndarray, df)
>>> compute(tsum, L)
100

 オンメモリーのデータ・タイプだけでなく、SQL、MongoDB、Sparkなどにもすでに対応しているということで、いろいろな使い方ができそうですが、一方で、チュートリアルからちょっと外れたことをするとすぐにうまく行かなくなったりして、まだ開発段階という感じが強かったです。

Sympy

 Blazeの開発者のRocklin氏が関わっているのが、Sympyという記号計算ライブラリです。SageやMathematicaなどのように、数式を記号的に処理するライブラリです。例を見てみると一目瞭然です:

>>> from sympy import *
>>> from sympy.abc import x, y, z
>>> expr = sin(x)**2 + 2*cos(x)
>>> expr
sin2(x)+2cos(x)

 例えば、これを微分し、xに1を代入して、50桁の精度で計算してみると

>>> ezpr=expr.diff()
2*sin(x)*cos(x) - 2*sin(x)
>>> expr.subs(x,1).evalf(50)
-0.77364454279011131790898477734885315654287115014885

 このような計算が非常に簡単にできてしまいます。先ほどのBlazeと違い、Sympyは非常に開発が進んで安定したライブラリです。計算式は、さまざまな言語で書き出すことも可能です:

>>> from sympy import latex, fcode, ccode
>>> latex(expr)
'2 \\sin{\\left (x \\right )} \\cos{\\left (x \\right )} - 2 \\sin{\\left (x \\right )}'
>>> fcode(expr) #fortran
'      2*sin(x)*cos(x) - 2*sin(x)'
>>> ccode(expr) #c
'2*sin(x)*cos(x) - 2*sin(x)'

Beaker

 今回私が見たセッションの中でも特に面白かったのがこのセッションです。Beakerというオープンソースのプログラムで、PythonだとiPython notebookに近いものです。何ができるのかというと、複数の言語を同時に走らせることで、それぞれの言語の得意とすることを組み合わせることができるというものです。Beaker.appをインストールすると、ローカルホストで、ノートブックが立ち上がり、ブラウザを通じてプログラムを実行できるようになります。例を見てみましょう、ここではPythonを使って、ランダムなグラフのデータを生成しています。

 最後の行で、

beaker.graph = {"nodes":nodes, "links": links}

となっているところがポイントで、ここで、生成したデータをbeakerという変数に渡しています。このbeakerという変数がこのノートブック上どこからでもアクセスできるようになっています。次に、唐突ですが、HTMLでスタイルを定義します。

 そして、今度はJavaScriptでd3を使ったビジュアライゼーションを書きます

 ここで、先ほどのbeaker変数からデータを取り出しているのが分かります。このように複数の言語を組み合わせる上で、データを書き出したり読み出したりすることが非常に簡単に1つのノートブックから行うことができます。結果として現れるのがこのようなビジュアライゼーションです:

 このように、それぞれの言語の強みを活かし、複数の言語を同時に操ることができるという、非常に新しいアイディアが会場を沸かしていました。ところで、このプログラムを発表していたScott Draves氏は、以前はGoogle Mapsにも関わっていた方で、またSoftware Artistとして、非常に美しいビジュアルを生成するプログラムを書いてきたことでも知られている人物です。

ディープラーニングを使ったサムネイル生成

 2日間のセッションのプログラムには、私も発表者として参加しました。PyData Meetup #1でもテーマとして扱ったディープラーニングを使ったミニプロジェクトの発表です。私がCEOを務めている白ヤギコーポレーションのニュースサービス、「カメリオ」では、ニュースの見出しに横長のサムネイルを切り出して使っています。その横長の形ゆえ、重要な部分が切り取られてしまうという問題が以前から発生していたのでした:

 このため、今回のプロジェクトでは、各イメージの中にある「面白そうなもの」を特定し、画像内の面白さマップを作ることで、その部分を中心にした切り出しを可能にするというものです。ディープラーニングを使うためには、まず面白そうなものが入っている領域を切りださなくてはなりません。この技術はセグメンテーションという手法を使って最近大きく進歩し、Selective Searchというアルゴリズムを使うことで、従来のSliding Windowと呼ばれるBrute Force的な切り出しから大幅に改善することができました。大体それぞれのイメージから200位の領域が切りだされます。下図の赤い四角がそれです:

 ここで切りだされた各領域にディープラーニングのライブラリであるCaffeを使って、すでにトレーニングがされているネットワークを使います。そうすることで、人間に取ってより興味の対象となる領域に高いスコアを割り当てることができるようになります。このようにして計算されたスコアをヒートマップ化したものが下図になります:

 ネコや、女の子の顔の部分が特に赤く(スコアの高い)判定がされていることが分かるかと思います。このようにして特に「面白い」と判定された領域を最も多く含むようなサムネイルの切り出しをすることで、以前のように重要な部分を切り落としてしまうということを減らすことができます。

 実際には、この手法はまだ実用にはあと一歩というところです。というのも、標準的なCPUを使うと、一枚の写真を処理するのに、数分かかってしまうのです。特に処理時間の大半を占めるCaffeはGPUでの動作をさせたり、スピードアップをすることが可能なため、そのような形で今後実用化を検討していきたいと思っています。

 なお、この分析に関するより詳しい詳細は、「カメリオ開発者ブログ」でご覧いただけます。

PyDataオーガナイザーとも今後の運営について意見交換

 今回PyData NYCに参加したのには、もう一つ理由がありました。運営者の方との面談です。PyData Tokyoを初めて以来、本家のUSコミュニティーとは未だお話ができていなかったのです。

 あるセッションの後に前述の主宰者のTravis Oliphantに声をかけたところ、「いいねぇ、そういうふうにどんどん広げていきたいんだよ」とノリノリのお返事。さらに、事務局のLiah Silenさんからも、「そういう活動はWelcomeよ、スピーカー呼んだり手伝えることがあったら何でも言ってね」と拍子抜けするくらいウェルカムな雰囲気で、今後のコラボレーションが楽しみになりました。今後も「PythonとDataを通じて、世界中のエキスパートと繋がれる」コミュニティーを目指して頑張りたいと思います。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「PyData.Tokyo Meetup」イベントレポート連載記事一覧

もっと読む

この記事の著者

シバタアキラ(シバタ アキラ)

データサイエンティスト@DataRobot, Inc. PyData.Tokyoオーガナイザー 人工知能を使ったデータ分析によるビジネス価値の創出が専門分野。物理学博士。NYU研究員時代にデータサイエンティストとして加速器データの統計モデル構築を行い「神の素粒子」ヒッグスボゾン発見に貢献。その後ボストン・コンサルティング・グループでコンサルタント。白ヤギコーポレーションCEOを経て現職 Twitter: @madyagi Facebook: Akira Shibata DATAブログ: http://ashibata.com DataRobot, Incウェブサイト: http://datarobot.com

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

池内 孝啓(イケウチ タカヒロ)

神奈川県横浜市出身。1984年生まれ。ソフトウェア開発会社、インフラサービス提供会社を経て2011年3月株式会社ALBERT入社。クラウドコンピューティングを活用したマーケティングプラットフォーム事業の立ち上げに携わる。2014年1月に同社執行役員に就任。2015年8月株式会社ユーリエを設立。同社代表取締役社長兼CTO。2014年にコミュニティ PyData.Tokyo を共同で立ち上げるなど、Python と PyData ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

田中 秀樹(タナカ ヒデキ)

PyData TokyoオーガナイザーシリコンバレーでPython×データ解析の魅力に出会う。帰国後、ディープラーニングに興味を持ち、PyCon JP 2014に登壇したことがきっかけとなりPyData Tokyoをスタート。カメラレンズの光学設計エンジニアをする傍ら、画像認識を用いた火星および太陽系惑星表面の構造物探索を行うMarsface Project(@marsfaceproject)に参加。インドやモロッコなど、旅先で...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8392 2015/04/10 13:11

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング