99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代PCA降維原理(主成分分析)的數(shù)學(xué)理論
PCA降維原理(主成分分析)的數(shù)學(xué)理論
2020-07-03
收藏

機器學(xué)習(xí)中,有成千上萬甚至幾十萬的維度的數(shù)據(jù)需要處理,這種情況下機器學(xué)習(xí)的資源消耗是不可接受的,并且很大程度上影響著算法的復(fù)雜度,因此對數(shù)據(jù)降維是必要的。PCA(Principal Component Analysis)是一種常用的數(shù)據(jù)分析方法,也是最基礎(chǔ)的無監(jiān)督降維算法。通常用于高維數(shù)據(jù)集的探索與可視化,還可以用于數(shù)據(jù)壓縮,數(shù)據(jù)預(yù)處理等。PCA通過線性變換將原始數(shù)據(jù)變換為一組各維度線性無關(guān)表示,可用于提取數(shù)據(jù)的主要特征分量及高維數(shù)據(jù)的降維,而轉(zhuǎn)換后的這組變量便是我們所說的主成分。

均值和零均值化

均值

PCA降維過程中,我們所求的均值是每個維度的均值。

零均值化

然后將每個維度的數(shù)據(jù)進(jìn)行零均值化,所謂零均值化就是讓均值為0.即每個數(shù)據(jù)都減去均值。

進(jìn)行去均值的原因是如果不去均值的話會容易擬合。在神經(jīng)網(wǎng)絡(luò)中,如果特征值x比較大的時候,會導(dǎo)致W*x+b的結(jié)果也會很大,這樣進(jìn)行激活函數(shù)(如relu)輸出時,會導(dǎo)致對應(yīng)位置數(shù)值變化量相對來說太小,進(jìn)行反向傳播時因為要使用這里的梯度進(jìn)行計算,所以會導(dǎo)致梯度消散問題,導(dǎo)致參數(shù)改變量很小,也就會易于擬合,效果不好。

特征向量和特征

定義

若A為n階矩陣,若數(shù)λ和n維非0列向量X滿足AX=λX,那么數(shù)λ稱為A的特征值,X稱為A的對應(yīng)于特征值λ的特征向量

PCA降維過程中,本質(zhì)就是把原有數(shù)據(jù)投影到新的一個空間,我們也就可以看做是在原有數(shù)據(jù)基礎(chǔ)上求解特征向量和特征

性質(zhì)

特征值和特征向量具有以下性質(zhì):

1.同一個矩陣的不同特征值對應(yīng)的特征向量是線性無關(guān)的

2.對于同一個特征值對應(yīng)的特征向量的非零線性組合仍是該特征值對應(yīng)的特征向量

3.矩陣的特征向量總是相對于矩陣的特征值而言,一個特征值具有特征向量不唯一,一個特征向量不能對應(yīng)不同特征

特征向量和特征值的性質(zhì)我們就可以發(fā)現(xiàn)正好符合PCA降維過程中取方差較大和線性不相關(guān)的前k維數(shù)據(jù)作為降維后數(shù)據(jù)的目的

方差

方差是是用來表示數(shù)據(jù)的離散程度的,方差越大,離散程度越大,也就是數(shù)據(jù)波動就越大。

方差的計算:前面已經(jīng)說了,需要先對每個維度的數(shù)據(jù)做零均值化,那么方差就是去均值后的平方和的均值

PCA中方差的意義:PCA的本質(zhì)就是找一些投影方向,使得數(shù)據(jù)在這些投影方向上的方差最大,而且這些投影方向是相互正交的(即:相關(guān)性幾乎為0)。這其實就是找新的正交基的過程,計算原始數(shù)據(jù)在這些正交基上投影的方差,方差越大,就說明在對應(yīng)正交基上包含了更多的信息量,對數(shù)據(jù)特征影響更大,我們暫且把這些信息量可以記為特征值。原始數(shù)據(jù)協(xié)方差矩陣的特征值越大,對應(yīng)的方差越大,在對應(yīng)的特征向量上投影的信息量就越大。反之,如果特征值較小,則說明數(shù)據(jù)在這些特征向量上投影的信息量很小,可以將小特征值對應(yīng)方向的數(shù)據(jù)刪除,從而達(dá)到了降維的目的。

協(xié)方差

協(xié)方差可以計算不同變量之間的相關(guān)性:

如果cov(x,y)=-1.變量之間完全負(fù)相關(guān)

如果cov(x,y)=1.變量之間完全正相關(guān)

如果cov(x,y)=0.變量之間完全不相關(guān)

而當(dāng)x和y相等時,協(xié)方差的值就等于方差,所以也可以看作方差是協(xié)方差的一種特殊情況

PCA的過程中我們是對原始數(shù)據(jù)做過零均值化處理的,故,協(xié)方差可以變?yōu)椋?

那么每個維度之間的相關(guān)性計算方式為:

協(xié)方差矩陣

協(xié)方差只能表示兩個維度變量之間的相互關(guān)系,如果有多個維度隨機變量,就需要使用協(xié)方差矩陣,我們假設(shè)現(xiàn)在又三個維度隨機變量x,y,z,那么對應(yīng)的協(xié)方差矩陣則為:

矩陣對角化定義

對角矩陣(diagonal matrix)是一個主對角線之外的元素皆為0的矩陣。對角線上的元素可以為0或其他值

如果存在一個可逆矩陣 P 使得 P-1AP 是對角矩陣,則矩陣A就被稱為可對角化矩陣

如果一個矩陣與一個對角矩陣相似,我們就稱這個矩陣可經(jīng)相似變換對角化,簡稱可對角化;與之對應(yīng)的線性變換就稱為可對角化的線性變換

協(xié)方差矩陣對角化

上文我們已經(jīng)說明了協(xié)方差矩陣是一個實對稱矩陣,由實對稱矩陣和相似矩陣性質(zhì)我們可以得出協(xié)方差矩陣C具有的性質(zhì):

和C相似的對角矩陣,其對角元素為各特征向量對應(yīng)的特征值(可能有重復(fù))即:C的特征值就是相似對角矩陣的對角元素

我們假設(shè)C的相似對角矩陣為A,那么如果存在一個矩陣P使得P-1CP=A,根據(jù)對角矩陣的特點,我們就可以發(fā)現(xiàn)矩陣P的每一行就是我們所要找的協(xié)方差矩陣的特征向量,而特征值就是對角矩陣的對角元素,現(xiàn)在我們離整個PCA過程還有一步,先把每一個特征向量變成單位向量,然后再按照特征值的大小進(jìn)行排序,取前K行特征值對應(yīng)的單位向量組成的矩陣和標(biāo)準(zhǔn)化后數(shù)據(jù)相乘,就得到了我們需要的降維后的數(shù)據(jù)矩陣。

至此,整個PCA降維過程涉及到的數(shù)學(xué)理論就完成了。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }