ここにはおまけ課題があります.おまけですので,やらなくても減点はありません.やると棒茄子? それぞれの課題について,やったひとは授業時間中に takataka に見せてね.
A と B は独立です
ex03notebookA.ipynb の式(3) の1行目
が成り立つとき,次のことが言えます:
\( \mathbf{w} \) で決まる回帰式が表す平面は,説明変数と被説明変数の平均の点 \( (\bar{x}_{1}, \bar{x}_{2}, \ldots, \bar{x}_D, \bar{y}) \) を通る.
これを証明しなさい.
主成分分析では,データの分散共分散行列の固有値・固有ベクトルを計算に使いますが,実は,「特異値分解」を利用すると,分散共分散行列を計算しなくても,その固有値・固有ベクトルを求めることができます. その理屈を理解して実際に計算してみましょう.
任意の \( m \times n \) 行列 \( X \) は
と分解できます.ただし,\( \textrm{rank}(X) = r \leq \textrm{min}(m, n) \) として,
です.\( \sigma_1, \sigma_2, \ldots, \sigma_r \) を \( X \) の特異値といい,この行列分解を特異値分解といいます.
このとき,\( X^{\rm T}X \) を \( V \) と \( S \) を用いて表しなさい.
Step1 ができたらいったん takataka に見せてください.Step2 につながるお話をします.
Step1 が(高橋の説明も含めて)分かると,データを表す \( N\times D \) 行列 \( X \) が与えられたとき(平均は \( \mathbf{0} \) とします), \( X \) の分散共分散行列 \( \frac{1}{N}X^{\rm T}X \) を計算してからその固有値固有ベクトルを求める必要はなく,\( X \) を特異値分解した結果からそれらが求まることが分かります. ex05notebookB の適当な箇所にセルを追加して,Vの固有値固有ベクトルをXの特異値分解(np.linalg.svd 使いましょう)を用いて計算して表示するコードを書きなさい.
画像処理してみよー
自分で適当なデータを探して,Colab notebook を使って重回帰分析または主成分分析をやってみましょう. 期限は特に設けませんので,できた時点で takataka に見せてください.データの入手の仕方や前処理のやり方などなど,随時相談にのります.
もっと手書き数字認識してみよー
ex11 課題C の続きとして,次のことをやってみましょう
(1) 主成分分析 + 二次判別分析による識別の実験で,削減後の次元数をいろいろ変えて学習データとテストデータに対する正解率を算出し,横軸に次元数,縦軸に正解率をとったグラフを描きましょう.一つのグラフに学習・テスト両方の値を描くとよいです.次元数を減らさないときの値も含めるとよいです.
(2) scikit-learn で実装されている他の手法でも実験してみましょう.おすすめは次の二つ(やってみるのはどちらか一方だけでもよいです).
次元削減しないでデータをそのまま使ったらよいです.主成分分析 + 二次判別分析の場合には次元数を変えると結果が変わりました.この次元数のように,自動的には推定されず人間が設定する必要のあるパラメータを「ハイパーパラメータ」といいます.上記の二つの手法にもハイパーパラメータがあります.前者では `n_neighbors` がそれです.後者にはいろいろありますが,`n_estimators` が代表的です.これらの値を変えて結果を観察しましょう.