Stanford機器學習 第十講 資料降維

2021-06-29 05:08:21 字數 4135 閱讀 8006

第十講. 降維——dimensionality reduction

******************************=

(一)、為什麼要降維?

(二)、主成分分析principal component analysis (pca) 

(三)、pca 演算法流程

(四)、從壓縮資料中恢復原資料

(五)、怎樣決定降維個數/主成分個數

(六)、應用pca進行降維的建議

本章主要講述應用pca演算法進行資料降維的原理

***********************************==

(一)、為什麼要降維?

我們需要一組關於***的資料,定義就鋪天蓋地的來了,百萬級個特徵拿過來,我們怎麼進行機器學習啊?!李航老師在他的部落格《機器學習新動向:從人機互動中》中提到,學習精度越高,學習確信度越高,學習模型越複雜,所需要的樣本也就越多。樣本複雜度滿足以下不等式

由此可見,feature太多會造成模型複雜,訓練速度過慢,因此我們引入降維。

多維資料很難進行視覺化分析,因此我們需要降維分析。

***********************************==

(二)、about principal component analysis (pca) 

如圖所示,藍色的點project到紅色su***ce上得到綠點,

尋找su***ce

使得兩點之間的orthogonal distance總和最小,就是pca的任務。

1. pca衡量的是orthogonal distance, 而linear regression是所有x點對應的真實值y=g(x)與估計值f(x)之間的vertical distance距離

2. more general 的解釋:pca中為的是尋找乙個su***ce,將各feature投影到這個su***ce後使得各點間variance最大(跟y沒有關係,是尋找最能夠表現這些feature的乙個平面);而linear regression是給出,希望根據x去**y,所以進行回歸

***********************************==

(三)、pca 演算法流程

假設有m個samples,每個資料有n維。

----------------------------------------

資料預處理

----------------------------------------

1. 計算各個feature的平均值,計μj ;(x

j(i)表示第i個樣本的第j維特徵的value)

μj = σm xj

(i)/m

2. 將每乙個

feature scaling:將在不同scale上的feature進行歸一化;

3. 將特徵進行mean normalization令xj

(i)= (x

j(i)-μj

)/sj

這樣呢,我們需要做的就是兩件事:

第一,如何尋找這個su***ce?

第二,給定su***ce,怎樣求點到su***ce投影的value?

--------------------------------------- pca演算法選取k個主分量

----------------------------------------

4. 求n×n的協方差矩陣σ:

5. 根據svd求取特徵值和特徵向量:

[u,s,v] = svd(σ)

其中,svd為奇異值分解(

singular value decomposition

),在matlab中有函式[u,s,v] = svd(a) 返回乙個與a同大小的對角矩陣s(由σ的特徵值組成),兩個酉矩陣u和v,且滿足= u*s*v'。若a為m×n陣,則u為m×m陣,v為n×n陣。奇異值在s的對角線上,非負且按降序排列。

那麼對於方陣σ呢,就有

σ = usv'

σς' = usv'*vs'u' = u(σς')u'

σ'ς = vs'u'*usv' = v(σ'ς)v'

i.e. u是σς'的特徵向量矩陣;v是σ'ς的特徵向量矩陣,都是n*n的矩陣

由於方陣的svd相當於特徵值分解,所以事實上u = v, 即σ = usu', u是特徵向量組成的正交矩陣

我們的目的是,從n維降維到k維,也就是選出這n個特徵中最重要的k個,也就是選出特徵值最大的k個~so...goto next step

6. 按特徵值從大到小排列,重新組織u

如果使用matlab的svd求得特徵值,就可以直接跳過這步了,因為該函式返回值中,奇異值在s的對角線上按照降序排列。否則的話應進行排序,並按照該次序找到對應的特徵向量重新排列。

7. 選擇k個分量

按照第五、六步中講的svd過後,我們得到了乙個n×n的矩陣σ和u,這時,我們就需要從u中選出k個最重要的分量;即選擇前k個特徵向量,即為ureduce, 該矩陣大小為n×k

這樣對於乙個n維向量x,就可以降維到k維向量z了:

***********************************==

(四)、從壓縮資料中恢復原資料

我們已經知道,可以根據z(i) = ureduce'× x(i) 將n維向量x降維到k維向量z,那麼有時我們需要恢復n維向量,怎麼做呢?

由於ureduce是正交矩陣(下面u

reduce簡記為u),即u' = u-1

, 所以

= (u')-1×z = (u-1

)-1×z = uz 

(ps:這裡的逆操作為偽逆操作)

並不是原先的x,而是向量x的近似值。

***********************************==

(五)、怎樣決定降維個數/主成分個數

首先從乙個general一點的思路去想呢,我們是希望,選出主成分之後進行資料分析,不會造成大量特徵的丟失,也就是說可以用下式的error ratio表示經過壓縮後的效能如何。

然後呢,我們定義乙個threshold(10% for example),如果error ratio

從數學上可以證明,上面這個error ratio 可以表示為 

所以,可以用下式進行k的合理選取:

(六)、應用pca進行降維的建議

1. pca可以降維,那讓我們聯想到了之前說過擬合問題是由維度過高或者引數過多造成的,那麼可不可以用pca解決overfitting的問題呢?

ans:no!應用pca提取主成分可能會解決一些overfitting的問題,但是呢,不建議用這種方法解決overfitting問題,還是建議用第三章

中講過的加入regularization項

(也稱為ridge regression)

來解決。

2. pca中主成分分析應用到那部分資料呢?

ans:only training data!可以用cross-validation data 和 test data進行檢驗,但是選擇主分量的時候只應用training data.

3. 不要盲目pca

notice:only 當你在原資料上跑到了乙個比較好的結果,又嫌它太慢的時候才採取pca進行降維,不然降了半天白降了~

《機器學習技法》第十講 Random Forest

bagging 通過平均來降低變化量。decision tree 對不同的資料敏感,變化量大。aggregation of aggregation 用bagging的方式把一堆decision tree結合起來。1 並行化 高效 2 繼承cart的優點 3 消除完全生長cart的overfit缺點 ...

stanford 機器學習筆記

個 史丹福大學機器學習課程個人學習筆記 上 zip 史丹福大學機器學習課程個人學習筆記 下 zip 一併附上原始講義 史丹福大學機器學習課程原始講義.zip 說明 部落格上很多提出的問題,我難以回答,因為我水平確實有限,更深層次的內容最好找相關大牛諮詢和相關 研讀。如果有想在我這個版本基礎上再新增自...

機器學習十講01

2021.1.26 概論人工智慧 機器學習 深度學習 機器學習問題 資料 聚類 分類 異常值分析 機器學習的基本方法 監督學習 1 資料集中的樣本帶有標籤,有明確目標。2 回歸和分類。無監督學習 1 資料集中的樣本沒有標籤,沒有明確目標。2 聚類 降維 排序 密度估計 關聯規則挖掘 強化學習 介於前...