情報工学実験 4 : データマイニング班


授業内容と方法

データの山を採掘することで「データの中に埋め込まれている(有用な)知識を発掘」することをデータマイニング(data mining)と呼ぶ。別の言い方では、データマイニングは、より良い意思決定をするために履歴データをうまく使って一般的な規則性を発見しようとする研究分野である。

データマイニングの手続きとしては、(1)対象領域の理解、(2)データの準備、(3)パターン(知識)の発見、(4)パターンの事後処理(可視化、解釈など)、(5)結果の活用、といった一連のステップを繰り返すことが多い。

今回の実験においては、(a)機械学習の基本的な考え方を実装&体験を通して学び、(b)scikit-learnによる機械学習を用いたチュートリアルを通してデータ・マイニングを概観する。また、(c)自然言語処理を導入した文書分類や類似文書検索といった例を基に、構造化されていないテキストデータから有用な情報を得るテキスト・マイニングにも踏み込む。最終的には、(d)機械学習をツールとして用いたシミュレーションを通し、プログラミング技術・問題設定・評価・考察といった一連の計算機実験のために必要なプロセスを体験してもらうことを目的とする。

達成目標
  • バージョン管理(Mercurial or Git)、ユニットテスト(pytest or doctest)を用いて開発することができる。
  • データ・マイニングのプロセスを踏まえ、各手続きを自動化することで実験を効率良く進めることができる。
    • データセットがどのような背景・状況でどのように構築されたのかを解釈し、目的とするマイニングに必要なデータ(特徴/説明変数/素性)の取捨選択を検討/実施することができる。
    • 非(半)構造化データに対し、マイニングに適したデータセットを検討/構築することができる。
    • 属性選択&構造化されたデータセットに対し、データマイニングを適用することで得られた知識を可視化・解釈する手段について検討/実施することができる。
    • (可視化・解釈した結果から有用な知識にについて説明することができる)
  • 開発したプログラムを再利用可能な形で公開できる。
    • 実験再現に必要なプログラムやデータを整理して用意できる。
    • 実験を再現する手順をドキュメントとして用意できる。
進め方
  • ステージ1〜2はガイダンス・解説および演習がメインですが、その後は進捗状況を報告してもらい、それに対して指導するという形式になる予定です。
  • 2〜4名程度のグループで取り組み、最終アウトプットとしては「ドキュメント付きのオープンソース」として公開することを目標とします。
  • 最終課題についての開発は、その全てを他チームに依頼した上でそのチーム感でのやり取りを含めた共同開発を行います。言い換えると、各チームは「(a)自チームの欲しいシステムを他チームに開発依頼しつつ、(b)他チームからの依頼に基づき開発をする」の両方をやることになります。
  • 先行事例の参照について。

    データマイニング班の過去の事例を含め、論文・書籍・解説・webページ等の先行事例を参照することはカンニングではありません。むしろ推奨されます。例えば追実験(先行事例通りに実装し、結果の妥当性を検証する等)をするというスタンスも良いでしょう。ただし、参考にする際には経緯を払って文献情報を示すことを忘れないように。

  • 既存プログラムの利用について。

    開発することそのものを含めての実験なので、丸々利用して終わり、という形になるのはNGです。が、利用した上で+αの追加実装(インタフェース改善等でも)やれるのであれば、利用してもらって構いません。なお、最終的にはオープンソースとして公開しますので、ライセンスには十分に気をつけてください。




ステージ1: 事例紹介, 環境構築, Pythonチュートリアル, ユニットテスト

1週目


2週目


3週目


4週目


5週目


6週目

以下、2016年度コピペ(参考)

6週目



ステージ3: テーマ設計(アプリケーション検討)、自然言語処理入門

7週目


参考文献・サイト