PCA を使用して手書き数字を分類します。トレーニング フェーズには 200 桁、テストには 20 桁を使用します。
PCAが分類方法としてどのように機能するかわかりません。元のデータをその平均から差し引いてから、共分散行列、固有値、および固有ベクトルを計算する次元削減法として使用することを学びました。そこから、主成分を選択し、残りを無視することができます。手書きの数字の束をどのように分類すればよいですか? 異なるクラスのデータを区別する方法は?
PCA を使用して手書き数字を分類します。トレーニング フェーズには 200 桁、テストには 20 桁を使用します。
PCAが分類方法としてどのように機能するかわかりません。元のデータをその平均から差し引いてから、共分散行列、固有値、および固有ベクトルを計算する次元削減法として使用することを学びました。そこから、主成分を選択し、残りを無視することができます。手書きの数字の束をどのように分類すればよいですか? 異なるクラスのデータを区別する方法は?
PCA から取得したスコアをプロットすると、特定のクラスがクラスターになることがわかります。
シンプルな R スクリプト:
data <- readMat(file.path("testzip.mat"))$testzip
pca <- princomp(t(data))
plot(pca$scores)
次のようなプロットになります。
マット ファイルには数字クラスへのベクトルの結果が含まれていないため、色を付けることはできません。ただし、その単一のクラスを他のクラスと比較して分類するのに役立つ少なくとも 1 つのクラスターが表示されます (他のものはノイズのように見えますか?)。
また、Olivier Grisel (scikit-learn への寄稿者) は、メタ最適化に関するあなたの質問に答えました。
彼は、実際には次元削減のための教師なしの方法であると述べていますが、いくつかの凝った方法で分類することは可能です:
実際、Stéphane Mallat によるこの講演で、「PCA による分類」を行う別の方法を見つけました。各クラスは、最初の成分を方向とし、重心をオフセットとするアフィン多様体によって近似され、新しいサンプルは最も近いものまでの距離を測定することによって分類されます。正射影をもつ多様体。
トーク: https://www.youtube.com/watch?v=lFJ7KdSdy0k (CVの人にはとても興味深い)
しかし、これはあなたにとってやり過ぎだと思います。クラス ラベルがある場合は、任意の分類子を使用して、この問題を PCA 出力に適合させることができます。そうでない場合は、DBSCAN などの密度ベースのクラスタリングを選択し、そこに表示されるクラスターが見つかるかどうかを確認し、それを使用して新しい画像を分類します (クラスターの平均からの距離などによって)。
Ding と He (2004)は、PCA による次元削減と k-means によるクラスタリングが密接に関連していることを示しました。教師なし学習として知られるクラスタリングは、教師あり学習として知られる分類ではありませんが、他の人が指摘しているように、クラスタリングは、異なる桁に属するデータ ポイントのグループを識別するのに役立つ可能性があります。