首页
/
每日頭條
/
生活
/
pca主成分分析總得分
pca主成分分析總得分
更新时间:2024-12-31 06:42:52

在本文中,我們将讨論主成分分析(PCA),它是什麼?它是如何工作的?在哪裡使用?首先,我們将研究PCA背後的技術細節,并将其應用于衆所周知的iris數據集并讨論結果。但是,讀者應該具備線性代數和統計分析的知識;至少了解矩陣運算和方差/協方差。

主成分分析是什麼?

PCA是一種在數據集中提取模式的統計技術,是降維方法,但實際上不止這些。PCA隻是轉換您的數據集以識别隐藏的關系,相似性或差異,然後您可以在其輸出上進行降維,數據壓縮或特征提取。然而,PCA是最着名的并且用于減少數據集的維度,這就是我們将在本文中做的事情:使用PCA降低維數。

您應該在這裡提出這個問題:為什麼我們需要減少數據集中的維度?那不是失去信息嗎?是的,當我們丢棄數據中的一些維度時,我們就會丢失信息。然而,在某些情況下,我們的數據可以有許多特征或變量來應用機器學習技術進行分類或聚類。想想亞馬遜視頻、Youtube或Netflix的用戶數據集,每個視頻内容都是一個變量或特性,當您需要提取用戶或視頻之間的相似性并生成推薦時,它們可能是百萬維的。

簡單地說,數據的維度越多,處理起來就越困難。采用PCA、LDA等降維技術,是從數據中提取新的強大的特征,使用這些新的特征或組件代替原始的特征。

主成分分析是如何運作的嗎?

為了分析和建立新的數據集(減少了維度)從原始的數據集由PCA,一般采用以下步驟:

  1. 獲取數據集
  2. 計算數據的協方差矩陣
  3. 計算特征值和特征向量除以協方差矩陣
  4. 選擇主成分
  5. 從選定的組件構造新的特征數據集

讓我們讨論并将每個步驟逐個應用到iris數據集。

1.獲取數據集

正如我們所說,iris數據集是本文中的目标數據集。數據有4個特征或變量; 或矩陣代數中的4維。并且,1個目标向量顯示依賴于4個特征的花的類型。所以,問題在于四維。4D并不多,但我們會嘗試将其縮小為2D以說明PCA。讓我們開始加載數據:

# sklearn has built-in iris dataset

iris數據集的協方差矩陣

3.計算特征值和特征向量

特征值和特征向量是PCA的核心; 不僅在PCA中,而且在其他如SVD,LDA中也是如此。但為什麼他們如此重要?特征值和特征向量相關聯構成了矩陣方程的根特征。我将把這個解釋留給這個來源,并繼續使用PCA的特征向量和特征值的重要特征。

我們需要了解它們的3個簡單特征:首先,我們隻能計算方陣的特征值/特征向量(nxn,矩陣的協方差)。其次,特征向量彼此垂直/正交。如果我們有n維矩陣,那麼我們在n空間中有n個特征向量,并且它們都是垂直的。這是有道理的,因為它們都構成了它們所代表的數據。最後,特征向量的長度恰好為1,并且每個特征向量具有相應的特征值,其表示向量的幂。

由于我們正在尋找新的特征來減少數據的維數,因此計算數據協方差矩陣的特征向量來尋找具有顯著性(特征值)的patterns (特征向量)。協方差矩陣的特征向量将代表新的特征,我們将根據它們的特征值幂或影響來選擇其中的一些特征。我們在iris示例中做這個。我們已經有了協方差矩陣它是一個方陣!

# numpy linear algebra module eig() api

# Compute the eigenvalues and eigenvectors of a square array

eig_values, eig_vectors = np.linalg.eig(R_cov)

# print values and corresponding vectors

eig_values

eig_vectors

pca主成分分析總得分(PCA主成分分析)1

iris數據集協方差矩陣的特征值

pca主成分分析總得分(PCA主成分分析)2

iris數據集協方差矩陣的特征向量

4、選擇主成分

從第一個結果中,我們得到了數據中每個維度的特征值,以及相應的特征向量。我們需要知道的是,将特征值從高到低排序。然後,我們選取一些值最高的特征向量來構建我們的新特征。

正如我們前面讨論的,特征值代表一個向量的影響或力量,所以我們必須選擇特征值較高的特征向量。在這種情況下,由于我們希望将虹膜數據的維數減少到2,我們将選擇第一個特征向量,因為它們的特征值是結果中最高的2。所選擇的最高值特征向量将是我們構建新特征和簡化數據集的主要組成部分。我們把這個矩陣叫做新特征向量。

# pick 2 eigenvectors whose eigenvalues are highest

featureVector = eig_vectors[:,:2]

featureVector

pca主成分分析總得分(PCA主成分分析)3

選擇2個特征值最高的特征向量

通過丢棄一些特征值/特征向量,我們将丢失一些信息。但是,由于我們選擇具有最高價值或重要性的組件,因此這種松散是合理的。通過删除,我們将使用較少維度的數據來工作。

5.構建新的簡化數據集

為了建立新的數據集,我們需要将原始矩陣(R)的轉置乘以新特征向量的轉置(選擇的主要成分)。

pca主成分分析總得分(PCA主成分分析)4

為什麼我們乘以原始數據集和主成分的轉置是為了獲得我們選擇的特征向量的新數據。我知道它似乎很複雜但你可以找到迄今為止采取的這些步驟的視覺解釋。

pca主成分分析總得分(PCA主成分分析)5

使用矩陣可視化在PCA中應用的步驟

這裡是為iris數據集生成新2D數據的Python代碼

featureVector_t = np.transpose(featureVector)

# R is the original iris dataset

R_t = np.transpose(R)

newDataset_t = np.matmul(featureVector_t, R_t)

newDataset = np.transpose(newDataset_t)

# check the shape of new reduced 2D dataset

newDataset.shape

最後,我們得到了二維簡化的新數據集。當然,它已經丢失了一些信息,但是由于我們選擇了兩個主要的特征向量,我們從選定的分量中構建的新特征應該足夠更進一步。

現在,我們來想象一下。首先,我們的數據集有4個維度,不可能繪制,但這是一個2D數據,很容易繪制。

import seaborn as sns

import pandas as pd

%matplotlib inline

# create new DataFrame

df = pd.DataFrame(data=newDataset, columns=['PC1', 'PC2'])

y = pd.Series(iris.target)

y = y.replace(0, 'setosa')

y = y.replace(1, 'versicolor')

y = y.replace(2, 'virginica')

df['Target'] = y

# plot 2D data

sns.lmplot(x='PC1', y='PC2', data=df, hue='Target', fit_reg=False, legend=True)

pca主成分分析總得分(PCA主成分分析)6

二維簡化數據圖

從上面的圖中,現在可以很容易地對兩個主成分的樣本進行分類或聚類。雖然由于删除了其他次要組件而丢失了一些信息,但是現在我們手裡有了更多可解釋的數據。最好的是它仍然非常接近原始數據。

結論

我們将原始虹膜數據集中的維度縮減到理想的大小(2D),并産生了新的特性。現在,在新的數據集中應用進一步的技術将更加有效。對于這個iris示例,我們并沒有獲得太多,可以考慮亞馬遜、Youtube和Netflix等大公司的數據集。

然後我們可以繼續應用我們的分類/聚類技術,在新的數據集或主組件上找到最好的MSE/MAE。如果結果不能滿足我們的要求,我們可以嘗試改變組件數量,或者可以應用其他類似的降維方法,比如SVD或LDA。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved