/home/by-natures/dev*

ソフトウェア開発者として働く人の技術的なメモ

機械学習勉強会 #4, #5

機械学習勉強会の第4回, 第5回を実施しましたので、その様子をお伝えします。

第5回は、第6回に控えるチームごとの中間発表のための準備時間としたため、もくもく会としました。セミナーパートが無かったのでやや参加人数は少なかったですが、お菓子やジュースをたっぷり用意して、さながらカフェ(と言っては言い過ぎですが…)のように、それぞれが集中して作業していました。

ここでは主に第4回の内容をお伝えします。

第1回, 第2回, 第3回 の様子もぜひご覧ください。

この勉強会は、「機械学習について学ぶきっかけをつくってもらう」ことが目的です。新しいことを学ぶモチベーションを維持するための仕組みとして、月に1回開催するこの勉強会を、みなさんの生活の中に取り入れてもらえたらと思っています。

また、社外の人とコミュニケーションを図ることで、みなさんの業務のモチベーションアップに繋がればと考えています。社外の人とコミュニケーションを取ることで、会社内で閉じていた情報を交換し合ったり、様々なバックグラウンドをもつ方と話をすることで、気付きを得ることがこの勉強会のもう一つの目的です。

社会人だけでなく、学生の方(主に修士や博士の方)も来てくださっていて、アカデミックな雰囲気もあります。これは運営メンバーに株式会社アカリクの方がいる影響なのですが、他の勉強会とはちょっと違った面白いポイントだと思います。最近では学生の方がかなり増えていて、一社会人としては懐かしくもあったり、社会人になるにあたってアドバイスを求められることもあり、大したアドバイスもできずにシドロモドロしたり…と、新鮮な気分を味わっています。笑

ご興味ある方は Google+ コミュニティ へご参加・ご連絡ください!

[toc]

第4回の内容

セミナー(13:30〜15:00)

第4回はチーム作業前にセミナーを実施しましたので、どんな発表があったのか簡単にご紹介します。

ml4_seminar

Pythonによるデータ収集⇒分析⇒最適化 / 岩城 信二さん

発表資料:https://github.com/shinji071/PyCon2014

岩城さんは、PyCon JP 2014 のスピーカーを務めた際の資料を共有し、Python におけるデータ分析の一連の流れを説明しました。資料は上記リンク(GitHub)に、iPython Notebook として公開されています。iPython Notebook はその場でプログラム自体が実行できる、生きた教科書のようなツールです。豊富なサンプルと例が紹介されていますので、iPython Notebook をインストールしてぜひご覧ください。以下の画像は、岩城さんの資料の一部をキャプチャしました。iPython Notebook の雰囲気が伝わるでしょうか。

mllearn_04_iwaki

発表中ではいくつか例が紹介されましたが、その中に 2014年のワールドカップのデータを pandas や scikit-learn などのライブラリを利用し、各チームの指標を比較する例がありました。特に k-means でクラスタリングをしてみると、日本がどのようなクラスタに所属していて、どのような特徴をもつのかが分かります。早い段階で敗退したチームと同じクラスタに所属するようで、因果は分かりませんが日本のサッカーの弱点が見えてきそうです。

他にも、テレビ番組に出演した芸能人同士の関係をクラスタリングすると、ダウンタウンとんねるずなどの大物芸能人を中心にクラスタが別れるなど、身近なデータで面白い結果を多数紹介してくださいました。この際のデータはWebページから BeautifulSoup を利用してスクレイピングしていて、そのサンプルコードも iPython Notebook に記載されていますので、合わせてご覧ください。

R と Python と Julia で機械学習レベル4を目指す / 太田 悠太さん

発表資料:https://github.com/yutajuly/ML_level4

太田さんは「各種前処理を行って、スケーリングも、不均衡データ処理にも対応して、パラメータ調整して、一連の流れ踏める」という機械学習レベル4を目指すために、R, Python, Julia での機械学習における各手順の比較を行いました。

この3言語は近しいところがありますが、言語比較に加えて、同じことをやろうとしたときにそれぞれの言語ではどのように書けるのかが分かる、とても面白い発表でした。中でも Julia は非常に新しい言語なので、Julia の比較まで行っているという点で貴重だと思います。(検証も大変だったのではと想像します…^^;

言語の比較のみならず、機械学習の各ステップ(特に前処理について)が解説されています。これから機械学習をしてみようと言う方で、どの言語を使ったらよいのか考えている方にぴったりな発表となりました。太田さんの資料は 太田さんの GitHub にアップロードされていますので、ぜひご覧ください。以下の画像は、前処理の1ステップにおける各言語のスクリプトの比較を表したスライドを拝借しました:

mllearn_04_ohta

時系列データでなんかやってみる / 辻 陽行さん

発表資料:時系列データでなんかやってみる

辻さんは、大学院時代の専攻である経済政策の産業組織論に関連して、株価の時系列データについて、データの取得をスクレイピング用のライブラリである BeautifulSoup で行い、前処理をしてモデリングするという一連の流れを発表していただきました。時系列データを利用して「2ヶ月後に資産をドルでもっておくべきか、円でもっておくべきか」、「土地の価格変動を予測して安いときに土地を購入したい」など、身近なテーマに対しての予測を趣味にされているようです。

株価に対して、移動平均を算出する作業を Python のデーターフレームのライブラリである pandas を利用して前処理を行いますが、試行錯誤する中で、まずは明日の株価が上がるか下がるかの2値判別問題に置き換えてモデリングしたそうです。モデルは全て Python機械学習のライブラリである scikit-learn を利用しました。結果はどのモデルでもほぼランダムと同じような精度となってしまい、原因考察も発表中に行っていただきました。

資料は Google+ のコミュニティにアップロードされていますので、ぜひご覧ください:

MinHash の基礎と最新手法について / 和良品 友大さん

発表資料:MinHash の基礎と最新手法について(PDF)

和良品(わらしな)さんは MinHash 法という、集合をハッシュ値(またはハッシュ値の集合)で表し,Jaccard 係数を高速に推定する手法と、その最新手法について紹介しました。

Jaccard 係数とは2つの集合の類似度を計る指標で、積集合の要素数 / 和集合の要素数 で定義されます。0から1を取るこの値は、文書間の類似度を計る指標としてよく利用されます(もちろん1に近いほど、集合がより近い、文書が近いことを表します)。

しかし文書中に出現する単語を全て記憶しておくのは効率が悪く、まともに計算しようとすると時間が掛かります。そのため、Jaccard 係数を算出する近似手法の一つとして、MinHash 法が考案されたとのことです。詳しい説明はここでは省略しますが、十分に値域が大きいハッシュ関数を用意すれば、ある文章の単語に掛けたハッシュ値のうちで最小値(Min)を覚えておけばよいとのことで、メモリ効率も計算効率も格段に改善するアルゴリズムになっています。

和良品さんの発表では、WWW 2014 のベストペーパーに選ばれた、Odd Sketches というアルゴリズムについても紹介されています。和良品さんの資料は Google+ のコミュニティにアップロードされていますので、文書間の類似度など、言語処理に興味がある方はぜひご覧ください。以下の画像は、スライド中の MinHash を図式化した1ページを拝借いたしました:

mllearn_04_warashina

チーム作業(15:30〜18:00)

ml4_study

この日の会場は、構造計画研究所さんのカンファレンスルームをお借りしました。

土日の勉強会とあって、チームメンバーが毎回集まれる訳ではないのが難しいところですが、せっかくの時間を有意義に使おうという気概があって、かなり濃密な2時間30分でした。私のチームも久々に多くのメンバーが集まったので、土日だけを使って作業を進める難しさを共有したり、大枠を決めて個人作業ができるようにフレームワークを作ったりするなど、集中して作業に当たりました。

懇親会(18:30〜20:00)

写真 3

懇親会も引き続き、構造計画研究所さんのカンファレンスルームをお借りしました。場所が変わると雰囲気も変わって、主催者としては楽しい限りです(^_^

初めて参加された方も楽しんでもらえていますが、顔見知りも増えてきたせいか、割と込み入った話(お互いの会社の様子や、キャリアについて)が増えてきたような気がします。単発ではない、定期的に開催する勉強会ならでは…かもしれません。私にとっても、社外のコミュニケーションとしてすごく貴重な場になってきていて、2015年1月を最後にしようと考えていますが、せっかく築けた関係なので、別の形で勉強会を続けてもよいのかなと考えていたりもします(まだ他の主催メンバーとちゃんと話していないので、私の妄想ですが)。

 

以上、第4回・第5回の内容をお伝えしました。勉強会にご興味ある方は、気兼ねなく Google+ コミュニティ へご参加・ご連絡ください!