パターン認識特論(2013年度)
授業科目,
www.kameda-lab.org
2013/12/03d
課題〆切を12/10→12/18に変更しました。(2013/12/03)
ページのアップロードが遅くなりました。(2013/11/12)
担当:掛谷英紀・亀田能成
教室:3L207
期間:秋AB
時間:火曜3,4時限目(12:15-13:30,13:45-15:00)
単位:2単位
本講義は2013年度秋ABモジュールに、
筑波大学大学院システム情報工学研究科知能機能システム専攻の
1・2年生を想定して開講されます。
年/月/日 | 回 | 担当 | テーマ
|
2013/10/01 | 01 | 掛谷 | ガイダンス・導入
|
2013/10/08 | 02 | 亀田1 | 教師つき学習・高次元ベクトル表現・線形識別器
|
2013/10/15 | 03 | 亀田2 | SVM1
|
2013/10/22 | 04 | 亀田3 | SVM2
|
2013/10/29 | 05 | 亀田4 | SVM3・デモ・課題
|
2013/11/12 | 06 | 掛谷1 |
|
2013/11/19 | 07 | 掛谷2 |
|
2013/11/26 | 08 | 掛谷3 |
|
2013/12/03 | 09 | 掛谷4 |
|
2013/12/10 | 10 | 掛谷5 |
|
2013/12/17 | (試験) | 試験 | 掛谷先生分のみ
|
この講義のうち、少なくとも亀田担当分は
ハイビジョン講義アーカイブ
で視聴可能(予定)です。
ここにあるのは亀田側からの課題のみです。
掛谷先生からの課題はここには掲載されていません。
下記の課題1〜3において、「★」のついた行が実際に提出すべき部分です。
- 課題1 [2013/12/18, 18:00締切]
「2クラス問題の線形分離条件」
詳細については講義中に説明済みです。
- 今、d次元実数ベクトルがn個存在するとし、2クラス問題を考える。
n個のベクトル(ただし一般配置(general position)とする)にどのように2クラスのラベルを付与しても、必ず線形分離可能であるための条件を示し、その証明をせよ。
参考図書、文献を用いた場合は出典を詳細に明記すること。
説明は必ず自分で文章を作成すること。
独自の説明図を必ず1つ以上挿入すること。
説明文・説明図に他の学生や参照元等と重複が見られた場合は0点扱いとする。(説明の論理は同じでもよい)
★提出は課題2と合わせてPDFファイルで行い、1枚目に授業名、氏名、学籍番号、提出日を表示すること。課題1・課題2合わせて解答は1枚以上とする。
- 課題2 [2013/12/18, 18:00締切]
「SVMにおけるSupport Vectorの数」
詳細については講義中に説明済みです。
- 今、2クラスのデータセットが線形分離できる分布で与えられているとする。
このとき、SVMの線形識別面の決定に参加するSupport Vectorは幾つから幾つまで考えられるか。根拠を示して説明を試みよ。
必要があれば、データがd次元ベクトルであるとして考えること。
(Support Vectorの最低数についての考察だけでもよい)
★提出は課題1と合わせてPDFファイルで行い、1枚目に授業名、氏名、学籍番号、提出日を表示すること。課題1・課題2合わせて解答は1枚以上とする。
- 課題3 [2013/12/18, 18:00締切]
「SVMによる高次元ベクトルの2クラス分類の実施」
高次元ベクトル集合の2クラス分類を実施してください。
★提出は記述に関しては、PDFファイルで行い、1枚目に授業名、氏名、学籍番号、提出日を表示すること。その際、以下の下線部に相当する記述がすべて含まれていること。(課題1・課題2とは別にすること)
★PDFファイルとは別に、xxxxxxx-SmallSet-L.txt, xxxxxxx-SmallSet-T.txt, xxxxxxx-LargeSet-L.txt, xxxxxxx-LargeSet-T.txtの4つのデータファイルを提出すること。
- (1) データ
- (SmallSet) 2クラス、2次元ベクトル
- 全て教師信号つきのデータを用意すること。
- 教師信号は-1と1とする。
- データ数は各クラス200以上。うち、100データを試験用、残りの100データ以上を学習用とする。
- シミュレーションによる合成可。
- 2クラスは線形識別不能であることこと。
- フォーマットはlibsvm入力データフォーマット準拠。
- ★学籍番号の数字部分 xxxxxxx を用いて、学習用(Learning)を xxxxxxx-SmallSet-L.txt、試験用(Testing)を xxxxxxx-SmallSet-T.txt として提出すること。
- ★特徴量ベクトルの次元数dを示すこと。
- ★実データの場合、データのクラスの意味と各特徴量の意味を説明すること。シミュレーションの場合は式を提示すること。
- ★2クラスが線形識別不能であることを示せ。
- (LargeSet) Nクラス(N>=2)、d次元ベクトル(d>=6)
- 学習データとして、教師信号つきを用意すること。試験データについても教師信号付きが望ましい(がなくともよい)。
- 教師信号は-1と1とする。
- データ数は各クラス200以上。うち、100データを試験用、残りの100データ以上を学習用とする。
- シミュレーションによるデータ生成不可。、実データに基づくデータであること(手動による加工過程が含まれていてもよい)。今後公開しても問題の無い情報に基づくこと。
- 2クラスは線形識別不能であることことが望ましいが、次元数に対してデータ数が少ない場合はこの限りではない。
- フォーマットはlibsvm入力データフォーマット準拠。
- ★学籍番号の数字部分 xxxxxxx を用いて、学習用(Learning)を xxxxxxx-LargeSet-L.txt、試験用(Testing)を xxxxxxx-LargeSet-T.txt として提出すること。
- ★特徴量ベクトルの次元数dを示すこと。
- ★データのクラスの意味と各特徴量次元の意味を説明すること。各特徴量の取得方法を説明すること。(引用をベースにするの場合、出典を明らかにすること)
- ★データの線形識別不能性について調査し説明すること。
- 参考:
libre calcで生成したcsvファイルをlibsvmフォーマットに準拠させるフィルタ
$ awk -f csv2libsvm.awk < fromlibre.csv > forlibsvm.txt
- (2) SVM(識別器の作成)
libsvmを用いて、クラス分類器を製作し、試験を行うこと。
それぞれ、SmallSet, LargeSetの両方について行うこと。
- easy.pyを用いてよい。
- スケーリング範囲は(-1, 1)とする。
- カーネルにはRBFを用いること。
- パラメータチューニングにおいて、5-fold cross validationを用いること。
- パラメータチューニングにおいて、Soft Marginのグリッドサーチ範囲は 2-5 〜 215、RBFのγのグリッドサーチ範囲は 2-15 〜 23 とする。
- ★作業手順を示すこと。(bashのhistory相当でよい)
- ★チューニング結果であるソフトマージン、RBFのγをそれぞれ 2xの形で示すこと。
- ★チューニングの様子を示すグリッドサーチに対する認識率分布グラフを示すこと。
- ★学習用データに対する認識率を示すこと。
- ★試験用データに対する認識率を示すこと。
- ★学習用データ、試験用データの認識率の差に対する考察を、データ分布状況やSVMの特性に言及して行うこと。
- (2-Ex) SVM(クラス毎解析)
以下のことを行った場合、加点する。
- ☆学習用データに対するクラスごとの認識率を示すこと。
- ☆試験用データに対するクラスごとの認識率を示すこと。
- ☆学習用データ、試験用データの各クラスの認識率の差異に対する考察を、データ分布状況やSVMの特性に言及して行うこと。
- (3) PCAによる2D表示
R等を用いて、SmallSet, LargeSetの両方について主成分分析を行い、2次元平面内へプロットして示すこと。
- 入力データはスケーリングすること(相関行列で行うこと)。
- ★求めた第1、第2主成分について、寄与率を示すこと。
- ★求めた第1、第2主成分について、偏差と主成分ベクトルを示すこと。
- ★求めた第1、第2主成分の軸に沿って入力データをプロットした散布図を示すこと。各クラスについて異なる印で示すこと。
- Rと合わせたlinux上での作業例については講義アーカイブ参照。
- (3-Ex) PCAによる2D表示の補足
以下のことを行った場合、加点する。
- ☆上記(3)でプロットしたそれぞれの散布図に、(2-Ex)で求めた識別面を示すこと。
授業で解説した内容とほぼ同等のことは、全て、
Casper CartridgeのVer.5xx.で実行可能です。日本語込みであれば Ver.521, Ver.540辺りがよいでしょう。
上記の説明に出てくるスクリプトやデータについては、下記アーカイブを展開して参照してください。
アーカイブ内のデータは復習用に自由に使ってもらって構いません。
ただし、レポート提出時には(シミュレーションでもその他でも)このデータないしこのデータから派生したと思われるデータは使わないこと。
Rの簡単な使い方説明
多次元データ(2クラス)をPCAして、2次元平面上で観察する方法です。
PRML2013-kameda.zip
SVM java applet demo (from libsvm 3.17)
kameda[at]iit.tsukuba.ac.jp