知能情報実験 3 : データマイニング班
- データマイニング班学生公開用Wiki(調整中)
- ie-Mattermost: (#info3,4dm)
- 授業内容と方法
- 達成目標
- スケジュール案&目安
- 前半はほぼ毎週事例紹介付き。
- ステージ1(1-3週目): Unix思想、環境構築、Python演習、テスト、機械学習体験。
- ステージ2(3-5週目): データマイニング・機械学習外観。
- ステージ3(6-8週目): テーマ設計(アプリケーション検討)。
- ステージ4(9-15週目): グループ開発。オマケ: 自然言語処理入門、Pythonデバッグ。
- ステージ5(16週目〜): 最終発表、公開。
- 参考文献・サイト
- 授業内容と方法
-
データの山を採掘することで「データの中に埋め込まれている(有用な)知識を発掘」することをデータマイニング(data mining)と呼ぶ。別の言い方では、データマイニングは、より良い意思決定をするために履歴データをうまく使って一般的な規則性を発見しようとする研究分野である。
データマイニングの手続きとしては、(1)対象領域の理解、(2)データの準備、(3)パターン(知識)の発見、(4)パターンの事後処理(可視化、解釈など)、(5)結果の活用、といった一連のステップを繰り返すことが多い。
今回の実験においては、(a)機械学習の基本的な考え方を実装&体験を通して学び、(b)scikit-learnによる機械学習を用いたチュートリアルを通してデータ・マイニングを概観する。また、(c)自然言語処理を導入した文書分類や類似文書検索といった例を基に、構造化されていないテキストデータから有用な情報を得るテキスト・マイニングにも踏み込む。最終的には、(d)機械学習をツールとして用いたシミュレーションを通し、プログラミング技術・問題設定・評価・考察といった一連の計算機実験のために必要なプロセスを体験してもらうことを目的とする。
- 達成目標
-
- バージョン管理(Mercurial or Git)、ユニットテスト(pytest or doctest)を用いて開発することができる。
- データ・マイニングのプロセスを踏まえ、各手続きを自動化することで実験を効率良く進めることができる。
- データセットがどのような背景・状況でどのように構築されたのかを解釈し、目的とするマイニングに必要なデータ(特徴/説明変数/素性)の取捨選択を検討/実施することができる。
- 非(半)構造化データに対し、マイニングに適したデータセットを検討/構築することができる。
- 属性選択&構造化されたデータセットに対し、データマイニングを適用することで得られた知識を可視化・解釈する手段について検討/実施することができる。
- (可視化・解釈した結果から有用な知識にについて説明することができる)
- 開発したプログラムを再利用可能な形で公開できる。
- 実験再現に必要なプログラムやデータを整理して用意できる。
- 実験を再現する手順をドキュメントとして用意できる。
- 実験内容を報告書として文書化できる。
- 第三者として本実験班にいない知能情報コース同学年学生を想定し、実験目的を述べることができる。
- 実験計画や手順を検討し、述べることができる。
- 生の実験結果を適宜図表等にまとめつつ整理し、事実に基づいた意見(考察)を述べることができる。特異な現象や傾向を見出したときは、その原因を推理し、追求を試みることができる。
- 実験結果と目的を対応させながら結論を述べることができる。
- 達成できたこと、できなかったことを整理し、残された課題を述べることができる。
- 進め方
-
- ステージ1〜2はガイダンス・解説および演習がメインですが、その後は進捗状況を報告してもらい、それに対して指導するという形式になる予定です。
- グループで取り組み、最終アウトプットとしては「ドキュメント付きのオープンソース」として公開することを目標とします。
- どのようなタスクに取り組むかはグループ単位で決めてもらって構いませんが、必ず機械学習の適用を含むこと。
- 先行事例の参照について。
データマイニング班の過去の事例を含め、論文・書籍・解説・webページ等の先行事例を参照することはカンニングではありません。むしろ推奨されます。例えば追実験(先行事例通りに実装し、結果の妥当性を検証する等)をするというスタンスも良いでしょう。ただし、参考にする際には経緯を払って文献情報を示すことを忘れないように。
- 既存プログラムの利用について。
開発することそのものを含めての実験なので、丸々利用して終わり、という形になるのはNGです。が、利用した上で+αの追加実装(インタフェース改善等でも)やれるのであれば、利用してもらって構いません。なお、最終的にはオープンソースとして公開しますので、ライセンスには十分に気をつけてください。
ステージ1: 事例紹介, 環境構築, Pythonチュートリアル, ユニットテスト
1週目
- プレ・ガイダンス
- [事例紹介] 電子マネー顧客分類のための手法検討と解析結果に関する報告 : 自己組織化マップと協調フィルタリングを用いたクラスタリング (電子情報通信学会技術研究報告. KBSE, 知能ソフトウェア工学, 2006)
Google drive:tnal/doc/kbse-tnal.ppt.pdf
キーワード: 前処理, 分類, 自己組織化マップ, 決定木, 協調フィルタリング- Tポイントの会員データ分析から企業は何を知るのか
*このぐらいの目的・用途なら機械学習不要で、分析ツールを使えば良い。10 Minutes to pandas。データサイエンスという呼称と、使いやすさから広まってきたのが pandas x jupyter の組み合わせ。
- Tポイントは本当は何をやっているのか(2012/9/3)
- IkaLogの裏側~「スプラトゥーン」のリアルタイム画像解析はどのように行われているのか
その他 - Tポイントの会員データ分析から企業は何を知るのか
- [実験テキスト1] 開発スタイルと実験で使う環境: 2020info3dm-w1.pdf (UNIX哲学、実験で使う環境、アジャイル)
- 参考: 研究者流コーディングの極意 (PDF) by 東北大学・岡崎先生
- 環境構築
- Python / Numpy / Pandas 演習 *来週?
- [説明] 演習課題は下記から自由に選択するか、自主設定した課題に取り組む等自由に取り組んでもらっても構いません。目標は「言語処理100本ノック 2020 (Rev 2)の第1章〜第3章程度を記述できるレベル」です。
- [アウトプット] 個人リポジトリを GitHub に用意し、作業後にpushすること。リポジトリ名は自由です。
- 以下、言語処理100本ノック以外の課題例。
- Python演習の補足、演習課題
- Python Tutorial *コード例見ながら学びたいならこっち。
- [ paiza | progate ]: 初めてプログラミングする人向け。自動採点機能付きオンライン解説。
- Python公式ドキュメント: [ 英語版 | 日本語版 ]
- Numpy: [ Numpy Quickstart tutorial | Python Numpy チュートリアル ]
- Pandas: [ Tutorials (cookbook, cheatsheet) | 10 Minutes to pandas ]
- numpy, scipy, pandasの使い方を学びながら機械学習 (scikit-learn) を体験しよう
- 例題検討
クラスタリング
- 次週予定や独習おすすめ
- 予定: Python演習続き(関数, doctest, 機械学習概観, scikit-learn入門)、*参考: 2015年度2週目
- 余裕あれば独習オススメ
- 以下は機械学習・データマイニング関連のイントロダクションや事例。
- 第1回 機械学習 ことはじめ (gihyo.jp, 中谷秀洋, 2010)
- 写真共有SNSのユーザーの性別を機械学習で推定するWebアプリケーションをPythonで作ってみよう (CodeZine, yiori, 2015)
- データマイニング概要 by 神嶌敏弘先生の講義資料
- データマイニング+WEB@東京 (TokyoWebmining) (各種企業さんの事例紹介も豊富)
- 授業「データマイニング2021」
2週目
- 事例紹介
- 学習指導要領に基づいた設問自動分類タスクにおける分類精度向上に関する研究 (2012年度修士論文):
Google drive:tnal/doc/master2012-nakashin.pdf
キーワード: 可視化, 形態素解析, 正規化, 集約 - Word2Vec:発明した本人も驚く単語ベクトルの驚異的な力
- 異空間への埋め込み!Poincare Embeddingsが拓く表現学習の新展開
- 学習指導要領に基づいた設問自動分類タスクにおける分類精度向上に関する研究 (2012年度修士論文):
- [実験テキスト]
- 機械学習概観
- 線形回帰モデルと最急降下法
- 演習1Github:jupyter + sklearn 入門
Numpy入門: intro_numpy.ipynb
Matplotlib入門: intro_matplotlib.ipynb
sklearn入門: intro_sklearn.ipynb
演習課題: example_plot.ipynb
- 演習2: Example for Linear Regression *ほぼ演習1と同じ。
- 演習3: 映画レビューデータを通したデータ処理演習
- 演習4: 入力1次元・連続値出力に対するフィッティング(回帰)
ステージ2: データマイニング・機械学習外観
3週目
- 事例紹介
- Twitter上で行われる議論構造可視化のためのツイート種別推定・話題クラスタリング手法の検討 (2011年度修士論文):
Google drive:tnal/doc/master2011-suzu.key.pdf
キーワード: 分類, 距離補正, クラスタリング, bag-of-words, TF, TF-IDF, Ward法, 決定木, ナイーブベイズ, k近傍法, SVM - 情報工学科総会: [ 情報工学科総会(初イベント)アナウンス2回目 | 情報工学科総会4月21日(水)の要約 ]
- 関連記事: 空気を読んで論文を紹介するtwitter-bot 「論文ったー」つくってみた。 - YamadaToshiyukiの日記
- Twitter上で行われる議論構造可視化のためのツイート種別推定・話題クラスタリング手法の検討 (2011年度修士論文):
- [実験テキスト]
- 線形回帰モデル(OLS, GD)の実装演習(最小二乗法、解法例、クラスデザイン、Numpy+Pythonチュートリアル、グラフ描画)
- 補足資料: Github: regression-test
- Github:jupyter + sklearn 入門
演習課題: example_plot.ipynb
- 演習3: 映画レビューデータを通したデータ処理演習
- 演習4: 入力1次元・連続値出力に対するフィッティング(回帰)
- 例題検討
回帰問題
- 演習続き。
- おすすめ本: Pythonで動かして学ぶ! あたらしい機械学習の教科書
4週目
- 事例紹介
- Twitterにおける談話同定のための共起的手法に関する基礎研究 (2013年度修士論文)
Google drive: tnal/doc/master2013-draisine-*.pdf
キーワード: 談話, 分類, 共起, 談話認識
- Twitterにおける談話同定のための共起的手法に関する基礎研究 (2013年度修士論文)
- [実験テキスト]
- テキスト:線形回帰モデルの多項式拡張、過学習とその回避
- 以下、演習。
- Github:jupyter + sklearn 入門
演習課題: example_plot.ipynb
- 演習4: 入力1次元・連続値出力に対するフィッティング(回帰)
- 演習続き。
- 次週予定: 機械学習振り返り、問題検討?
5週目
- [実験テキスト] 線形回帰モデルの多項式拡張、過学習とその回避: PDF
- 補足資料: Github: regression-test
- 補足資料: Fairness
- 演習: 上記資料31ページ目。regression.RidgeRegression() にて、alpha={0, 0.1, 0.5, 1.0, 10.0} とした際の回帰曲線をプロットせよ。(モデルはsklearn.linear_model.Ridge()を使ってもOKだが、入力を多項式にすることを忘れずに。)
- 事例紹介
- 怪奇!! 次元の呪い - 識別問題、パターン認識、データマイニングの初心者のために (解説記事): 前編, 後編 (情報処理, Vol.34, No.5, No.6) *時間があれば。
- UCI Machine Learning Repository をマイニングする(Machine Learning Advent Calendar 12日目)
- Machine Learning Advent Calendar: [ 2013 | 2014 | 2015 ]
- データマイニング概要 by 神嶌敏弘先生の講義資料
- データ・セット例
- データマイニング班: 過去の成果物例
- googleドライブ => info3,4-examples
- 次回予定: 振り返り、テーマ検討
ステージ3: テーマ設計(アプリケーション検討)
6週目
- [実験テキスト]機械学習概観の振り返り: PDF(振り返りのみ)
- グループワーク
- グループ作成。
- 実装したい(して欲しい)テーマ検討。
- テーマ検討に関する補足
テーマ設計例やMindmapを参考に、目的/目標/アプローチ/特徴ベクトルの作り方/データセット準備/学習の進め方/実験計画等について検討&取り組んでください。(可能な範囲でok)
注意: テキスト処理を組み込む必要はありません。下記はあくまでも例です。
- テーマ設計例: Twitter上のテキスト文を対象とした2値分類学習に基づく未知語自動収集 (Google drive: tnal/design_examples/*)
- グループワーク報告1: テーマ検討
=> google drive / groupX / 議事録
- 来週以降の予定
- 7〜15週目: 互いに開発委託(データセット準備2~3週間、実験用コード2~3週間、実験&考察2~3週間)。
ステージ3: テーマ設計(アプリケーション検討)、自然言語処理入門
ここから先は未編集(昨年度のママ)
7週目
- テーマ検討に関する補足
テーマ設計例やMindmapを参考に、目的/目標/アプローチ/特徴ベクトルの作り方/データセット準備/学習の進め方/実験計画等について検討&取り組んでください。(可能な範囲でok)
注意: テキスト処理を組み込む必要はありません。下記はあくまでも例です。
- テーマ設計例: Twitter上のテキスト文を対象とした2値分類学習に基づく未知語自動収集 (PDF:HG/tnal/stage4-examples-unknown-words.pptx.pdf)
hg clone ssh://info3dm@shark.nal.ie.u-ryukyu.ac.jp//home/info3dm/HG/tnal cd tnal open stage4-examples-unknown-words.pptx.pdf
- その他の例: HG/tnal/problem-design-examples.mm
open -a freemind problem-design-examples.mm
- テーマ設計例: Twitter上のテキスト文を対象とした2値分類学習に基づく未知語自動収集 (PDF:HG/tnal/stage4-examples-unknown-words.pptx.pdf)
- (グループワーク報告1: テーマ検討)
- 来週以降の予定
- 8〜15週目: 互いに開発委託(データセット準備2~3週間、実験用コード2~3週間、実験&考察2~3週間)。
参考文献・サイト
- オススメ/ピックアップ
- データマイニング概要 by 神嶌敏弘先生の講義資料
- 集合知プログラミング (book, 実装寄り/Python)
- 集合知イン・アクション (book, 実装寄り/Java)
- データマイニング+WEB@東京 (TokyoWebmining) (各種企業さんの事例紹介も豊富)
- 機械学習 はじめよう
- 開発関係
- データマイニング関係
- データマイニングの簡単な解説
- データマイニングの宝箱
- サーチアーキテクチャ「さがす」の情報科学 (book, 一般寄り)
- 集合知プログラミング (book, 実装寄り/Python)
- 集合知イン・アクション (book, 実装寄り/Java)
- データマイニングによる異常検出 (book, 研究寄り)
- テキストマイニングハンドブック (book, 概観+網羅)
- 第26回 データマイニング+WEB@東京( #TokyoWebmining 26th) -オープンデータ活用・ソーシャ ル・アドテクノロジー 祭り- を開催しました
- Twitterでの番組の評判を番組作りに活かすNHKのつぶやき解析技術 - GIGAZINE
- Webデータ分析&データサイエンスで役立つ統計学・機械学習系の分析手法10選
- リンクするデータ(Linked Data)-広がり始めたデータのクラウド, 情報処理学会誌, 2011: [ 目次一覧 ]
- 「アクセス解析」における5つの真実
- データマイニング概要 by 神嶌敏弘先生の講義資料
- ツイートプロファイリング
- 自然言語処理関係
- Python による日本語自然言語処理
- 入門 自然言語処理 (book)
- 言語処理100本ノック - 東北大学 乾・岡崎研究室
- NLPプログラミングチュートリアル - Graham Neubig - チュートリアル資料
- (有料) 不自然言語処理 -枠に収まらない「リアルな」言語処理, 情報処理学会誌, 2012: [ 目次一覧 ]
- Wikipediaマイニング:Wikipedia研究のサーベイ, 情報処理学会論文誌データベース, 2009
- 利用者の好みをとらえ活かす-嗜好抽出技術の最前線, 情報処理学会誌, 2007: [ 目次一覧 ]
- 機械学習関連
- Jubatus : オンライン機械学習向け分散処理フレームワーク (C++, Python, Ruby, Java)
- 機械学習チュートリアル@Jubatus Casual Talks
- 機械学習の Python との出会い
- scikit-learn: machine learning in Python
- Pythonのscikit-learnでRandomForest vs SVMを比較してみた
- 機械学習 はじめよう : 連載 | gihyo.jp
- 怪奇!! 次元の呪い - 識別問題、パターン認識、データマイニングの初心者のために (解説記事): 前編, 後編 (情報処理, Vol.34, No.5, No.6)
- SVM実践ガイド (A Practical Guide to Support Vector Classification)
- 統計的にインデントするやつ
- 関連学会など
- データセット
- 関連記事
- 空気を読んで論文を紹介するtwitter-bot 「論文ったー」つくってみた。 - YamadaToshiyukiの日記
- Facebookが考えるデータサイエンティストの要件 - 道玄坂で働くデータサイエンティストのブログ
- Hiveで生テーブルを取ってくる→素性ベクトル+分類ラベルのテーブルに直す - 道玄坂で働くデータサイエンティストのブログ
- 「ゲームとTwitterとFacebookしかしないなんてもったいない」、Gunosy開発チーム根掘り葉掘りインタビュー - GIGAZINE
- Evernoteがアプリ開発コンテスト開催へ - 「Evernote Devcup 2013」で求められるエッセンスとは?
- ビッグデータに必須!"数学脳"の鍛え方 (Monthly Interview : 国立情報学研究所 新井紀子教授)
- 靴屋とデータマイニングと季節外れの冬物衣料 - あんちべ!
- データマイニングコンペティションサイト Kaggle にも Deep Learning ブームがきてるかと思ったのでまとめる - 糞ネット弁慶
- Googleが「CAPTCHA」を改良、リスク分析により人間と機械を区別
- 「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側