PyData.Tokyo第1回チュートリアルイベント開催!
PyData.Tokyoオーガナイザーのシバタです。
PyData.Tokyoは「Python+Dataを通じて、世界のPyDataエクスパートと繋がれるコミュニティーを作る」ことを目的として設立され、これまでに行ってきた勉強会は、質の高い登壇者と参加者が「濃い」議論をできる場として、広く知られるようになりました。イベントを管理しているconnpass上では500人を超えるメンバー登録があり、CodeZineでの連載もたくさんの方に読んでいただいております。
PyData.Tokyoで当初目標としていたのは、レベルの高いデータサイエンティストの集まる会を作ることに加え、これからデータサイエンティストになることを目指している方々の育成です。データサイエンティストの不足はあらゆるところで聞かれ、一方で幸いにも多くの方が今後データサイエンティストを目指している状況にあって、私たちもコミュニティーに貢献したいと思ってきました。3月に実施したチュートリアルでは、特にデータサイエンティストを目指す初級中級者のかたに実際に手を動かしてデータ解析を学ぶことのできるチュートリアル実施するとともに、上級者の方々には、自らの技術を使って機械学習による予測精度を競うハッカソンを行いました。
今後のイベントのお知らせ
勉強会およびチュートリアルは、connpassを通じて告知を行っておりますので、ご興味をお持ちの方はこちらからメンバー登録をしていただきますと、最新のイベント情報をお知らせします。
今回のチュートリアル&ハッカソンのテーマ
今回のチュートリアル&ハッカソンでは「タイタニックの生存者予測をテーマに行いました」。データサイエンティストが腕を競い合う道場的存在であるKaggleでも公開されており、広く研究されているデータです。
タイタニックは歴史上最も大きい海難事故の一つで、たくさんの人の命が失われました。一方で、生存者には一定のパターンがあります。例えば、「女性は男性に助けられて生存の確率が高かった」「等級の高い船室にいた乗船客はいち早く救助されたため生存の確率が高かった」などです。乗客名簿には、このほかにも船室の位置や、乗船場所、さらに乗客の名前まで記載されています。一見役に立たないようにも見えるこれらの情報も、複雑な関係のもとに乗客の生死を分けるパターンと捉えることができる可能性があります。そのような多数の変数の中から人間には分からないパターンを見つけるためには3つのことが重要です。
- 事故が起こった現場の状況や、各乗船客に対する理解に基づいて、データをどのように使えば生存予測の向上を行えるか、正しい仮説を作ること
- データが十分に信頼できるものであり、前処理により不正値や欠損値などの問題が取り除かれていること(チュートリアル第1部)
- 機械学習アルゴリズムを使い、複数の変数から隠れているパターンを見出すこと(チュートリアル第2部)
このチュートリアルでは、プレゼンテーションを行ってデータを使った予測モデルの作り方を解説し、その後第1部ではデータの前処理をメインに解説、そして第2部では機械学習アルゴリズムの使い方と結果の検証の仕方を解説しました。
導入部分のプレゼンテーションはこちらです。
優れたアルゴリズムよりも大切なこと
機械学習を使った分析でよく聞かれるのが「このアルゴリズムではあまり結果が出ない、別のアルゴリズムならもっといい結果が出るだろう」というようなコメント。実際にはアルゴリズムを変えることで達成できる向上は、よほど革新的なアプローチをしない限りは大差ありません。当然のことのように聞こえるかもしれませんが、何よりも大切なのは、「データを見る」ことです。データが現実の問題の何を表しているのか、その理解なしに優れたモデルを組むことはできません。アルゴリズムは「魔法」ではなく、決まった規則に従って計算するだけの機械なので、人間が正しい問題設定をしていなければ、いくらたくさんのデータを放り込んでもいい結果は見込めません。
実際のデータ分析では、正しく問題の理解をし、どうしたら問題が解けるのか仮説を構築した上で実際の結果が良くなっているかどうか、検証を繰り返していくことになります。
玄人のためのハッカソン
初心者の育成が主な目的だった今回のイベントですが、データ分析に精通し、日頃からKaggleで腕試しをしているようなデータサイエンティストも10名ほどご参加いただきました。会場の一角にある茶の間コーナーで、ちゃぶ台の上にパソコンを並べ、お互いのアイディアを交換しながら精度向上を行っていました。最終的には85%に迫る精度を出した参加者の方もおり、最後のLT発表では「そんなことまでするのか」と他の参加者からは驚きの声が挙がっていました。
環境構築
今回、チュートリアルでは下記のパッケージを利用しました。
パッケージ名 | 動作バージョン | 用途 |
---|---|---|
Pandas | 0.15.2 | データの読み込み・集計・加工 |
matplotlib | 1.4.3 | データの可視化 |
IPython | 3.0.0 | 実行環境(Notebookを利用) |
scikit-learn | 0.15.2 | 機械学習 |
データ分析用のパッケージをまとめて配布しているAnacondaを導入するか、各パッケージをpipでインストールします。
$ pip install pandas $ pip install matplotlib $ pip install ipython[notebook] $ pip install scikit-learn
IPythonの起動は下記のコマンドで行えます。
$ ipython notebook