web-dev-qa-db-ja.com

PCAカテゴリの機能については?

私の理解では、PCAは連続機能に対してのみ実行できると考えました。しかし、onehotエンコーディングとラベルエンコーディングの違いを理解しようとすると、次のリンクの投稿がありました。

One Hot Encoding vs LabelEncoder vs DictVectorizo​​rを使用する場合

PCAが後に続く1つのホットエンコーディングは非常に優れた方法であり、基本的にPCAがカテゴリ機能に適用されることを示しています。したがって、混乱して、同じ上で私を提案してください。

18
vikky

私は他の人に同意しません。

バイナリデータでPCAを使用できます(たとえば、ワンホットエンコードデータ)は、それが良いことを意味しないか、非常にうまく機能します。

PCAは、continuous変数用です。分散(=平方偏差)を最小化しようとします。バイナリ変数がある場合、偏差の二乗の概念が崩れます。

はい、PCAを使用できます。そして、はい、あなたは出力を取得します。それは最小二乗出力ですら-PCAがそのようなデータをセグメンテーション違反するようなものではありません。それは動作しますが、それはあなたが望んでいるよりもはるかに少ない意味があります。そしておそらくよりも有意義ではありません頻繁なパターンマイニング。

29
Anony-Mousse

MCAは、カテゴリカルデータディメンション削減の既知の手法です。 Rには、MCAを使用したり、混合コンテキストでPCAと混合したりするためのパッケージがたくさんあります。 python存在するmcaライブラリ。MCAは、PCA、実際にフランスの統計学者が「データ分析は対角化する正しい行列を見つけることです」と同じような数学を適用します

http://gastonsanchez.com/visually-enforced/how-to/2012/10/13/MCA-in-R/

4
joscani

最近の出版物 は、シンプレックス頂点として扱われるカテゴリ変数でPCAを計算するときに、優れた意味のある結果を示します。

カテゴリ変数の共分散とPCA、新妻裕隆、岡田隆、2018年.

4
Oleg Melnikov

基本的に、PCAは機能セットに関する情報量の少ない(重複する)情報を見つけて排除し、機能スペースの次元を削減します。言い換えると、N次元のハイパースペースを想像してください。PCAは、データが最も変化するM(M <N)の特徴を見つけます。このようにして、データはM次元の特徴ベクトルとして表されます。数学的には、特徴空間の一種の固有値と固有ベクトルの計算です。

したがって、機能が連続しているかどうかは重要ではありません。

PCAは多くのアプリケーションで広く使用されています。主に、分類/認識の前に何らかのセンサーまたはハードウェアから送信される、ノイズが多く情報量の少ないデータを排除するため。

3
Ockhius

PCAは 次元削減法 であり、あらゆる機能セットに適用できます。次に、OneHotEncoded(つまり、カテゴリ)データを使用した例を示します。

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X = enc.fit_transform([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]).toarray()

print(X)

> array([[ 1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  1.,  0.,  1.,  0.,  1.,  0.,  0.,  0.],
       [ 1.,  0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  0.,  0.,  0.,  0.,  1.,  0.]])


from sklearn.decomposition import PCA
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X)

print(X_pca)

> array([[-0.70710678,  0.79056942,  0.70710678],
       [ 1.14412281, -0.79056942,  0.43701602],
       [-1.14412281, -0.79056942, -0.43701602],
       [ 0.70710678,  0.79056942, -0.70710678]])
0
AlexG