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

熱線電話:13121318867

登錄
首頁精彩閱讀機(jī)器學(xué)習(xí)數(shù)據(jù)降維方法:PCA主成分分析
機(jī)器學(xué)習(xí)數(shù)據(jù)降維方法:PCA主成分分析
2020-06-16
收藏

PCA機(jī)器學(xué)習(xí)中很常用,是一種無參數(shù)的數(shù)據(jù)降維方法。PCA步驟:

  1. 將原始數(shù)據(jù)按列組成n行m列矩陣X
  2. 將X的每一行(代表一個(gè)屬性字段)進(jìn)行零均值化,即減去這一行的均值
  3. 求出協(xié)方差矩陣
  4. 求出協(xié)方差矩陣的特征值及對(duì)應(yīng)的特征向量
  5. 特征向量按對(duì)應(yīng)特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P
  6. Y=PX即為降維到k維后的數(shù)據(jù)

1. PCA的推導(dǎo)

PCA通過線性變換將原始數(shù)據(jù)變換為一組各維度線性無關(guān)的表示,可用于提取數(shù)據(jù)的主要特征分量,常用于高維數(shù)據(jù)的降維。

我們知道PCA是一種數(shù)據(jù)降維的方法,在降低維度的過程中,我們當(dāng)然想要保留更多的特征,PCA就是經(jīng)過數(shù)學(xué)推導(dǎo),保留最多特征同時(shí)降維的方法。

在推導(dǎo)之前要先知道幾個(gè)基礎(chǔ)知識(shí):

  1. 內(nèi)積與投影

兩個(gè)維數(shù)相同的向量的內(nèi)積被定義為:

假設(shè)A和B是兩個(gè)n維向量,我們知道n維向量可以等價(jià)表示為n維空間中的一條從原點(diǎn)發(fā)射的有向線段,為了簡(jiǎn)單起見我們假設(shè)A和B均為二維向量,則A=(x1,y1),B=(x2,y2)。則在二維平面上A和B可以用兩條發(fā)自原點(diǎn)的有向線段表示,見下圖:

現(xiàn)在我們從A點(diǎn)向B所在直線引一條垂線。我們知道垂線與B的交點(diǎn)叫做A在B上的投影,再設(shè)A與B的夾角是a,則投影的矢量長度為|A|cos(a),其中|A|是向量A的模,也就是A線段的標(biāo)量長度。

到這里還是看不出內(nèi)積和這東西有什么關(guān)系,不過如果我們將內(nèi)積表示為另一種我們熟悉的形式:

現(xiàn)在事情似乎是有點(diǎn)眉目了:A與B的內(nèi)積等于A到B的投影長度乘以B的模。再進(jìn)一步,如果我們假設(shè)B的模為1,即讓|B|=1,那么就變成了:

也就是說,設(shè)向量B的模為1,則A與B的內(nèi)積值等于A向B所在直線投影的矢量長度!這就是內(nèi)積的一種幾何解釋,也是我們得到的第一個(gè)重要結(jié)論。在后面的推導(dǎo)中,將反復(fù)使用這個(gè)結(jié)論。

下面我們繼續(xù)在二維空間內(nèi)討論向量。上文說過,一個(gè)二維向量可以對(duì)應(yīng)二維笛卡爾直角坐標(biāo)系中從原點(diǎn)出發(fā)的一個(gè)有向線段。例如下面這個(gè)向量:

在代數(shù)表示方面,我們經(jīng)常用線段終點(diǎn)的點(diǎn)坐標(biāo)表示向量,例如上面的向量可以表示為(3,2),這是我們?cè)偈煜げ贿^的向量表示。

我們列舉的例子中基是正交的(即內(nèi)積為0,或直觀說相互垂直),但可以成為一組基的唯一要求就是線性無關(guān),非正交的基也是可以的。不過因?yàn)檎换休^好的性質(zhì),所以一般使用的基都是正交的。

3. 基變換的矩陣表示

一般的,如果我們有M個(gè)N維向量,想將其變換為由R個(gè)N維向量表示的新空間中,那么首先將R個(gè)基按行組成矩陣A,然后將向量按列組成矩陣B,那么兩矩陣的乘積AB就是變換結(jié)果,其中AB的第m列為A中第m列變換后的結(jié)果。(新基按行,向量按列)

特別要注意的是,這里R可以小于N,而R決定了變換后數(shù)據(jù)的維數(shù)。也就是說,我們可以將一N維數(shù)據(jù)變換到更低維度的空間中去,變換后的維度取決于基的數(shù)量。因此這種矩陣相乘的表示也可以表示降維變換。

最后,上述分析同時(shí)給矩陣相乘找到了一種物理解釋:兩個(gè)矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量為基所表示的空間中去。更抽象的說,一個(gè)矩陣可以表示一種線性變換。很多同學(xué)在學(xué)線性代數(shù)時(shí)對(duì)矩陣相乘的方法感到奇怪,但是如果明白了矩陣相乘的物理意義,其合理性就一目了然了。

4. 協(xié)方差矩陣與優(yōu)化目標(biāo)

我們從上面的矩陣乘法與基變換可以看出,當(dāng)新基的維數(shù)小于原來的維數(shù)時(shí)可以做到數(shù)據(jù)的降維,但是究竟如何選擇新基就是我們現(xiàn)在面臨的問題,我們想要選擇一個(gè)維數(shù)更小的新基,同時(shí)新基保留有更多的信息。我們知道矩陣向新基投影的形式,也就是PCA是將一組N維的特征投影到K維(K特征。< p="">特征。<>

那么怎么衡量更多的特征,也就是投影后盡量少的重疊,投影值盡可能分散。

協(xié)方差

從二維到一維的降維,只需要找到一個(gè)一維基使得方差最大,但是三維降到二維呢?我們需要找到兩個(gè)基讓這個(gè)三維數(shù)據(jù)投影到兩個(gè)基上,如果我們找方差最大的兩個(gè)基,會(huì)發(fā)現(xiàn)他們完全一樣或者線性相關(guān),這和一個(gè)基沒什么區(qū)別,不能表達(dá)更多的信息,所以我們需要添加限制條件,我們希望這兩個(gè)基彼此線性無關(guān),擴(kuò)展到K個(gè)基也是一樣。

當(dāng)協(xié)方差為0時(shí),表示兩個(gè)字段完全獨(dú)立。為了讓協(xié)方差為0,我們選擇第二個(gè)基時(shí)只能在與第一個(gè)基正交的方向上選擇。因此最終選擇的兩個(gè)方向一定是正交的。

至此,我們得到了降維問題的優(yōu)化目標(biāo):將一組N維向量降為K維(K大于0,小于N),其目標(biāo)是選擇K個(gè)單位(模為1)正交基,使得原始數(shù)據(jù)變換到這組基上后,各字段兩兩間協(xié)方差為0,而字段的方差則盡可能大(在正交的約束下,取最大的K個(gè)方差)。

關(guān)于PCA的貢獻(xiàn)率與K的選擇

在我的文章特征值和特征向量中說過,特征值反映了矩陣對(duì)于特征向量的拉伸程度,只有拉伸而沒有旋轉(zhuǎn),也就是在特征向量方向上的作用程度,所以在PCA中我們選取前K個(gè)特征向量組成新基進(jìn)行投影,就是因?yàn)樵?a href='/map/tezheng/' style='color:#000;font-size:inherit;'>特征在前K個(gè)特征向量有最大的作用程度。

投影過后可以保留更多的信息,作用程度是用特征值表示的,所以我們可以使用下面的式子表示貢獻(xiàn)率,貢獻(xiàn)率是表示投影后信息的保留程度的變量,也就是特征值的總和比上前K個(gè)特征值,一般來說貢獻(xiàn)率要大于85%。

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

若不方便掃碼,搜微信號(hào):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(), // 加隨機(jī)數(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)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }