機(jī)器學(xué)習(xí)簡(jiǎn)介3--PCA

在我們數(shù)據(jù)挖掘的任務(wù)中,數(shù)據(jù)往往擁有非常多的緯度。這些過(guò)多的維度泵三,往往給數(shù)據(jù)挖掘的任務(wù)帶來(lái)困難。本小節(jié)以PCA算法為例來(lái)講解降維的主要算法思想和算法流程。降維算法不僅可以為計(jì)算機(jī)減少大量的數(shù)據(jù)運(yùn)算烫幕,簡(jiǎn)化數(shù)據(jù)俺抽,也可以去除噪聲,使數(shù)據(jù)集更易使用较曼。PCA為最常用的降維算法之一磷斧。廣泛應(yīng)用于數(shù)據(jù)壓縮,圖像壓縮捷犹,信息壓縮等領(lǐng)域弛饭。
PCA全稱Principal Component Analysis,即主成分分析萍歉,它可以通過(guò)線性變換將原始數(shù)據(jù)變換為一組各維度線性無(wú)關(guān)的基來(lái)表示孩哑,以此來(lái)提取數(shù)據(jù)的主要線性分量。
對(duì)于非技術(shù)同學(xué)可能看到PCA的定義會(huì)一臉懵逼翠桦。我們還是用通俗的話解釋下:
也就是說(shuō)横蜒,我們要找出一組正交基,使原數(shù)據(jù)變換到這組正交基后销凑,數(shù)據(jù)屬性方差最大丛晌。就這么簡(jiǎn)單。
這里說(shuō)明下為什么需要方差最大斗幼。方差越大澎蛛,說(shuō)明數(shù)據(jù)越分散。通常認(rèn)為蜕窿,數(shù)據(jù)的某個(gè)特征維度上數(shù)據(jù)越分散谋逻,該特征信息量越大,熵越大桐经。(數(shù)據(jù)的無(wú)序也在一定程度上反應(yīng)了數(shù)據(jù)的主要成分)毁兆。我們都知道矩陣的乘法,實(shí)際就是用左邊的矩陣對(duì)右邊的向量做線性變換阴挣。其實(shí)也就是對(duì)原矩陣的基做旋轉(zhuǎn)和拉伸變換气堕。那么,我們只要找到這個(gè)變換矩陣畔咧,然后用變換矩陣乘以原數(shù)據(jù)茎芭,則乘的結(jié)果就是我們降維后的數(shù)據(jù)了。這里的分母應(yīng)為m-1.
這里首先說(shuō)明下方差的定義:


image.png

由于實(shí)際的計(jì)算過(guò)程中誓沸,我們通常會(huì)對(duì)數(shù)據(jù)做歸一化操作梅桩,因此方差可以直接表示為:


image.png

同理的數(shù)據(jù)歸一化后,協(xié)方差的定義為:
image.png

這里我們舉一個(gè)實(shí)例:
假設(shè)我們有一組個(gè)二維的數(shù)據(jù)拜隧,
image.png

則該組二維數(shù)據(jù)對(duì)應(yīng)的協(xié)方差矩陣為:


image.png

我們知道宿百,最終我們要找的是使方差最大的線性變換對(duì)應(yīng)的一組正交基煮寡。通過(guò)協(xié)方差矩陣可以看出。要使這個(gè)這組基互相正交犀呼,則協(xié)方差矩陣的協(xié)方差項(xiàng)需要全為0幸撕,即對(duì)協(xié)方差矩陣進(jìn)行對(duì)角化操作。
這里也可以采用知乎上的一個(gè)證明思路:


image.png

最終推出外臂,求正交基的過(guò)程坐儿,即是原矩陣協(xié)方差矩陣對(duì)角化的過(guò)程。

由于協(xié)方差矩陣是一個(gè)標(biāo)準(zhǔn)的對(duì)稱矩陣宋光,根據(jù)對(duì)陣矩陣的定理:

若A為對(duì)陣矩陣貌矿,則必有正交矩陣P,使得
image.png

其中罪佳,拉姆達(dá)為A矩陣的特征向量所對(duì)應(yīng)的特征值逛漫。
image.png

也就說(shuō),我們只要求出協(xié)方差矩陣對(duì)應(yīng)的特征值和特征向量赘艳。就可以把協(xié)方差矩陣對(duì)角化酌毡,得到對(duì)應(yīng)的對(duì)角化矩陣。
1.而這個(gè)對(duì)角化矩陣的協(xié)方差項(xiàng)都為0蕾管,即滿足了正交基枷踏。
2.我們對(duì)特征值排序,降維時(shí)掰曾,保留大的特征值旭蠕。即滿足了最大方差。
假設(shè)我們此時(shí)降維為k旷坦,則保留前k個(gè)特征向量(歸一化)掏熬,則這前K個(gè)特征向量對(duì)應(yīng)的線性變換,即為PCA降維對(duì)應(yīng)的線性變換矩陣秒梅。 至此旗芬,PCA算法的整個(gè)算法過(guò)程結(jié)束。
我們?cè)诖丝偨Y(jié)一下這個(gè)看似復(fù)雜的過(guò)程:以降維到K個(gè)維度為例
1.將原始數(shù)據(jù)的每個(gè)屬性做均值歸一化番电。
2.求出原矩陣對(duì)應(yīng)的協(xié)方差矩陣岗屏。
3.求出協(xié)方差矩陣對(duì)應(yīng)的特征值和特征向量。
4.將特征向量歸一化后按對(duì)特征值大小從上到下按行排列成矩陣漱办,取前k行組成矩陣P。
5.矩陣P對(duì)數(shù)據(jù)做線性變換的結(jié)果婉烟,即為降維后的數(shù)據(jù)娩井。
關(guān)于矩陣特征向量的求解,請(qǐng)參考線性代數(shù)教材似袁。
非技術(shù)的同學(xué)讀到這里應(yīng)該有所理解洞辣。如果實(shí)在有疑問(wèn)可以記住上面pca運(yùn)算的過(guò)程咐刨,或者評(píng)論提問(wèn)。
按照慣例扬霜,接下來(lái)我會(huì)用代碼來(lái)演示下pca的簡(jiǎn)單使用定鸟。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.decomposition import PCA
from sklearn.datasets.samples_generator import make_blobs
# X為樣本特征,Y為樣本簇類別著瓶, 共1000個(gè)樣本联予,每個(gè)樣本3個(gè)特征,共4個(gè)簇
X, y = make_blobs(n_samples=10000, n_features=3, centers=[[3,3, 3], [0,0,0], [1,1,1], [2,2,2]], cluster_std=[0.2, 0.1, 0.2, 0.2],
                 random_state =9)
fig = plt.figure()
ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
plt.scatter(X[:, 0], X[:, 1], X[:, 2],marker='o')
plt.show()

pca = PCA(n_components=2)
pca.fit(X)
print(pca.explained_variance_ratio_)
print(pca.explained_variance_)

# pca = PCA(n_components=0.95)
# pca.fit(X)

X_new = pca.transform(X)
plt.scatter(X_new[:, 0], X_new[:, 1],marker='o')
plt.show()

這里我截出代碼運(yùn)行的截圖材原,這里以2維為例:
降維前:


image.png

降維后:


image.png

pca算法的核心思想介紹就到這里沸久。如果問(wèn)題歡迎評(píng)論與我討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末余蟹,一起剝皮案震驚了整個(gè)濱河市卷胯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌威酒,老刑警劉巖窑睁,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異葵孤,居然都是意外死亡卵慰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)佛呻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)裳朋,“玉大人,你說(shuō)我怎么就攤上這事吓著±鸬眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵绑莺,是天一觀的道長(zhǎng)暖眼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)纺裁,這世上最難降的妖魔是什么诫肠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮欺缘,結(jié)果婚禮上栋豫,老公的妹妹穿的比我還像新娘。我一直安慰自己谚殊,他們只是感情好丧鸯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嫩絮,像睡著了一般丛肢。 火紅的嫁衣襯著肌膚如雪围肥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天蜂怎,我揣著相機(jī)與錄音穆刻,去河邊找鬼。 笑死杠步,一個(gè)胖子當(dāng)著我的面吹牛氢伟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篮愉,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腐芍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了试躏?” 一聲冷哼從身側(cè)響起猪勇,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寞宫,失蹤者是張志新(化名)和其女友劉穎伦忠,沒(méi)想到半個(gè)月后盾沫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體萍肆,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年琢唾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寡壮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片生闲。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寡键,死狀恐怖掀泳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情西轩,我是刑警寧澤员舵,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站藕畔,受9級(jí)特大地震影響马僻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜注服,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一韭邓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溶弟,春花似錦女淑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至我抠,卻和暖如春苇本,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背菜拓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工瓣窄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纳鼎。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓俺夕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贱鄙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子劝贸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容