ディレクトリ
PCA
PCA 就是找出数据最主要的方面,用数据里最主要的方面来代替原始数据。
PCA 是最重要的降维方法之一,在数据压缩、消除冗余和数据噪音消除等领域都有广泛的应用。
思考の1 PCA最大割り切れます
最大分離性:超平面上に投影されたサンプル点ができるだけ分離しました
2.基変換(線形変換)
欲获得原始数据新的表示空间,最简单方法是对原始数据进行基变换(线性变换)。
3.分散
一つの方向またはベースを選択する方法が最善ですか?PCAに基づく思考の最大に分割することができ、我々が見ている方向である寸法の最小損失をダウンとして、理解することができるデータプロジェクタは、可能な限りオープン共有が、分散液の分散の程度は、数学的に表現することができるので、さらに大きな分散データより多くの分散。
4.共分散
高次元の変換では、我々はより多くの情報を示すようにラジカル転換後に選択したすべての方向(またはグループ)は、関係ありません願っています。数学的に使用する共分散相関を表す:
\ [Covを(A、B)= FRAC \ {1} {M} \ sum_ {I = 1} ^ {M} a_ib_i \]
であれば\(Covを(A、B) = 0 \) 、そして2つのフィールドは完全に独立しており、これが私たちのある最適化の目標。
共分散行列
私たちは、達成したい目標(\(Covを(A、B)= 0 \) )およびフィールド分散のとフィールドの共分散の間に密接な関連を。のみと仮定すると、\(B \) 2つのフィールドは、行に記載\(X- \) 、共分散行列が得られます。
見て、共分散行列は対称行列であり、他の要素は、行列に統一されている両方ともフィールド間の共分散でありながら、各寸法の分散は、(フィールド分散)対角線です。
前記共分散行列の対角化
我々の目標は作ることである\(Covを(A、B)= 0 \) 、我々の最適化目標の共分散行列から見({1 C = \ FRAC \ } {M} XX ^ T \)は共分散と等価です対角行列(対角以外の要素はゼロであり、対角要素が上から下までサイズが配置されています)。
導出:
7. PCAアルゴリズムの流れ
入力: \(N- \) -サンプルの寸法セット\(X- =(X_1、X_2、...、X_m)\) 、次元の寸法低減する\を(N ^ {「} \ )
出力:次元削減の後に設定されたサンプル\(Y \)
アルゴリズム:
全てのサンプルの1)中心\(X_I = X_I - \ FRAC {1} {M} \ sum_ {J = 1} ^ mx_j \)
2)サンプルの共分散行列計算\(C = \ FRAC {1 } {M} XX ^ T \)を
3)対応する共分散行列の固有値と固有ベクトルを探します
4)を押して、上から下への固有値の大きさに対応する固有ベクトルは、従来取るためには、マトリクス状に配置された\(K \)行行列\(P \)
。5)(Y PXは= \)\寸法まで元の試料である)\(\ Kのポスト次元データマトリックス
コード:
"""
这里假设原始数据集为矩阵 dataMat,其中每一行代表一个样本,每一列代表同一个特征(与上面的介绍稍有不同,上 面是每一列代表一个样本,每一行代表同一个特征)。
"""
import numpy as np
################################
# (1)零均值化
################################
def zeroMean(dataMat):
meanVal=np.mean(dataMat,axis=0) #按列求均值(axis=0),即求各个特征的均值
newData=dataMat-meanVal
return newData,meanVal # newData是零均值化后的数据,meanVal是每个特征的均值
################################
# (2)求协方差矩阵
# 若rowvar=0,说明传入的数据一行代表一个样本;
# 若非0,说明传入的数据一列代表一个样本。
################################
newData,meanVal=zeroMean(dataMat)
covMat=np.cov(newData,rowvar=0)
################################
# (3)求特征值和特征矩阵
# eigVals存放特征值,行向量
# eigVects存放特征向量,每一列带别一个特征向量
# 特征值和特征向量是一一对应的
################################
eigVals,eigVects=np.linalg.eig(np.mat(covMat))
################################
# (4)保留比较大的前n个特征向量
# 第三步得到了特征值向量eigVals,假设里面有m个特征值,我们可以对其排序,排在前面的n个特征值所对应的特征 # 向量就是我们要保留的,它们组成了新的特征空间的一组基n_eigVect
################################
eigValIndice=np.argsort(eigVals) #对特征值从小到大排序
n_eigValIndice=eigValIndice[-1:-(n+1):-1] #最大的n个特征值的下标,首先argsort对特征值是从小到大排序的,那么最大的n个特征值就排在后面,所以eigValIndice[-1:-(n+1):-1]就取出这个n个特征值对应的下标(python里面,list[a:b:c]代表从下标a开始到b,步长为c)
n_eigVect=eigVects[:,n_eigValIndice] #最大的n个特征值对应的特征向量
################################
# (5)获取降维后的数据
# 将零均值化后的数据乘以n_eigVect就可以得到降维后的数据
################################
lowDDataMat=newData*n_eigVect #低维特征空间的数据
reconMat=(lowDDataMat*n_eigVect.T)+meanVal #重构数据
8. PCAアルゴリズムの概要
利点:
1)単独の分散は、データセットからの情報の量以外の要因の影響を測定します
2)相互に直交する主成分、元のデータ・コンポーネントとの間の相互作用を排除することができる要因の中
3)計算方法は、固有値分解の主な用途簡単です
短所:
1)前記曖昧さをある程度有する主成分の各次元の意味は、元のサンプルの説明と同様に良好で強い特徴
その後のデータ処理を廃棄次元削減が影響を与える可能性があるので2)主成分の小さな変動はまた、重要な違いサンプルは、情報を含むことができます