[機械学習] 特徴の次元削減 - 主成分分析 PCA

「著者のホームページ」: Shibie Sanri wyx 「著者のプロフィール
」: CSDN トップ 100、Alibaba Cloud ブログ エキスパート、Huawei クラウド共有エキスパート、およびネットワーク セキュリティ分野の高品質クリエイター

抽出された特徴の中には、カウントする必要のない関連する(類似した) 「冗長な特徴」がいくつかあるため、関連する特徴を「削減」し、無関係な特徴を残す必要があります。つまり、「特徴の次元削減」です。

特徴の次元削減には多くの方法がありますが、ここではそのうちの 1 つである主成分分析を使用します。

1. 主成分分析

主成分分析 (PCA) は「統計的」手法です。直交変換により、 「相関がある」可能性のある変数群が「線形相関がない」変数群に変換され、変換された変数群を「主成分」と呼びます。

変数をカウントする場合、変数が多すぎて強い相関関係が存在します。つまり、 「類似した」変数が多数存在するため、分析の作業負荷と「複雑さ」が増大します。

主成分分析では、変数間の相関関係に基づいて、繰り返し使用される重要でない変数を置き換える新しい変数を作成できます。つまり、より多くの変数をより少ない変数に置き換えることができ、元の複数の変数の情報のほとんどを反映できるため、データ処理の「速度」が向上します

たとえば、優秀な生徒を 3 人選抜する場合、各生徒には身長、体重、家族背景、成績などの複数の特徴がありますが、身長と体重の特徴は選抜には役に立たないので、これらの無駄な特徴を削除して成績に置き換えます。

sklearn.decomposition.PCA( n_components=None )

  • PCA.fit_transform( data ): データを受信し、次元削減を実行します。
  • PCA.inverse_transform( data ): 次元削減されたデータを元のデータに変換します。
  • PCA.get_covariance(): 共分散データの取得
  • PCA.get_params(): モデルデータの取得
  • n_components: 次元を指定します (10 進数: 最終的に情報の何パーセントが保持されるか、整数: 特徴量が何パーセントまで削減されるか)

2、寸法を指定します

n_componentsパラメータは「整数」であり、「指定された次元」に縮小することを意味します。

from sklearn import decomposition

# 测试数据
data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]

# 初始化
pca = decomposition.PCA(n_components=2)

# 降维
result = pca.fit_transform(data)
print(result)

出力:

[[ 1.28620952e-15  3.82970843e+00]
 [ 5.74456265e+00 -1.91485422e+00]
 [-5.74456265e+00 -1.91485422e+00]]

結果からわかるように、特徴は元の 3 次元から現在の 2 次元に縮小されています。

PS: 元は 3 列で、3 次元と呼ばれますが、次元削減後は 2 列になり、2 次元と呼ばれます。


3. 定着率

n_componentsパラメーターは"10 進数"であり、次元削減後に保持される情報の量を意味します。

from sklearn import decomposition

# 测试数据
data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]

# 初始化
pca = decomposition.PCA(n_components=0.30)

# 降维
result = pca.fit_transform(data)
print(result)

出力:

[[ 1.28620952e-15]
 [ 5.74456265e+00]
 [-5.74456265e+00]]

結果から、特徴は元の 4 次元から 1 次元に削減され、情報の 30% のみが保持されていることがわかります。


4 番目に、共分散を取得します

from sklearn import decomposition

# 测试数据
data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]

# 初始化
pca = decomposition.PCA(n_components=2)

# 降维
result = pca.fit_transform(data)
print(pca.get_covariance())

出力:

[[  4.33333333  -5.5         -1.66666667   1.16666667]
 [ -5.5          7.           1.5         -1.        ]
 [ -1.66666667   1.5         20.33333333 -15.83333333]
 [  1.16666667  -1.         -15.83333333  12.33333333]]

5. 元データを返却する

次元削減されたデータを生データに変換する

from sklearn import decomposition

# 测试数据
data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]

# 初始化
pca = decomposition.PCA(n_components=2)

# 降维
result = pca.fit_transform(data)
print(pca.inverse_transform(result))

出力:


[[2. 8. 4. 5.]
 [6. 3. 0. 8.]
 [5. 4. 9. 1.]]

おすすめ

転載: blog.csdn.net/wangyuxiang946/article/details/131758573