日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[机器学习笔记]Note12--降维

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [机器学习笔记]Note12--降维 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼續是機器學習課程的筆記,本節介紹的是降維方法,這也是非監督學習中的一個問題,主要介紹主要成分分析(Principal Component Analysis,PCA)算法。

降維

動機一:數據壓縮

使用降維的一個原因是數據壓縮。下面通過幾個例子來介紹降維。

第一個例子是將數據從二維降至一維。假設我們要采用兩種不同的儀器來測量一些東西的尺寸,其中一個儀器測量結果的單位是英尺,另一個儀器測量的結果單位是厘米,我們希望將測量的結果作為機器學習的特征。現在的問題是,兩種儀器對同一個東西測量的結果不完全相等(由于誤差、精度等),而將兩者都作為特征有些重復,因而,我們希望將這個二維的數據降至一維。如下圖所示:

具體做法就是,找出一條合適的直線,如上圖下方那條直線,然后將所有的數據點都投射到該直線上,然后用z(i)標識,這樣便完成了從二維數據x(i)向一維數據z(i)的映射。這樣得到的新特征只是原有特征的近似,但好處是將需要的存儲、內存占用量減半,而已可以讓使用這些數據的算法運行得更快

第二個例子是將數據從三維降至二維。這個例子的過程與上面類似,是將三維向量投射到一個二維平面上,強迫使得所有的數據都在同一個平面上,降至二維的特征向量。

這樣的處理過程可以被用于把任何維度的數據都降到任何想要的維度,如將1000維的特征降至100維。

動機二:數據可視化

在許多機器學習問題中,如果我們能將數據可視化,這有助于我們尋找到一個更好的解決方案,而降維可以幫助做到數據可視化。

一個例子是假設現在有關于許多不同國家的數據,每一個特征向量都有50個特征(如,GDP,人均GDP,平均壽命等),如下圖所示。

如果要將這個50維的數據可視化是不可能的,但是使用降維的方法將其降至2維,那就可以將其可視化。如下圖所示,用新的特征z1z2來表現。

這樣的問題就是,降維的算法只負責減少維度,而新特征的意義就必須由我們自己去發現了。對于上述例子,我們根據新的二維特征畫出一個二維圖,如下圖所示,用點z(i)表示每個國家,那么可能會發現水平軸可能對應的是一個國家的面積或者是GDP,而縱軸計算對應人均GDP或者幸福感等。

主要成分分析(Principal Component Analysis,PCA)

主要成分分析時最常見的降維算法。

在PCA中,如果是將二維數據降至一維,我們要做的就是找到一個方向向量(Vector direction),當我們將所有的數據都投射到該向量上時,我們希望投射平均均方誤差可以盡可能地小。方向向量時一個經過原點的向量,而投射誤差是從特征向量向該方向向量作垂線的長度。如下圖所示

下面給出PCA問題的一般描述:

  • 問題是將n維數據降至k維
  • 目標是找到向量u(1),u(2),,u(k)使得總的投射誤差最小

    然后是比較PCA和線性回歸的,這兩種算法是不同的算法。PCA最小化的是投射誤差,而線性回歸嘗試的是最小化預測誤差。線性回歸的目的是預測結果,而PCA不作任何預測。如下圖所示

左圖是線性回歸的誤差,而右圖是PCA的誤差。

PCA算法

接下來是介紹PCA的具體實現過程。

首先是預處理過程,做的是均值歸一化。需要計算出所有特征的均值μj=1mmi=1x(i)j,然后令xj=xj?μj。如果特征是不同數量級的,還需要將其除以標準差σ2

接下來就是正式的PCA算法過程了。也就是要計算協方差矩陣(covariance matrix)。而協方差矩陣=1mmi=1(x(i))(x(i))T

然后就是計算協方差矩陣的特征向量(eigenvectors)。在Octave語言中可以利用**奇異值分解(singular value decomposition,SVD)來求解,[U,S,V] = svd(sigma)。

對于一個n×n維度的矩陣,上式中的U是一個具有與數據之間最小投射誤差的方向向量構成的矩陣。如果我們希望將數據從n維降至k維,我們只需要從U中選取前K個向量,獲得一個n×k維度的矩陣,這里用Ureduce表示,然后通過如下計算獲得要求的新特征向量z(i):

z(i)=UTreduce×x(i)

其中xn×1維的,因此結果是k×1維。

注意,這里我們部隊偏倚特征進行處理。

在壓縮過數據后,我們可以采用如下方法來近似地獲得原有的特征:x(i)approx=Ureducez(i)

選擇主要成分的數量

PCA需要將n維數據降至k維數據,這里的k也就是PCA需要確定的參數K,也就是主要成分的數量。

主要成分分析是要減少投射的平均均方誤差

1mi=1m||x(i)?x(i)approx||2

而訓練集的方差是1mmi=1||x(i)||2

我們希望的是在平均均方誤差與訓練集方差的比例盡可能小的情況下選擇盡可能小的K值

一般來說,我們希望這個比例,如下所示,是小于1%,即意味著原本數據的偏差有99%都保留下來了。

1mmi=1||x(i)?x(i)approx||21mmi=1||x(i)||20.01

而如果選擇保留95%的偏差,便能顯著地降低模型中特征的維度了。

所以做法可以是,先令K=1,然后進行PCA,獲得Ureducez,然后計算比例是否小于1%。如果不是,再令K=2,如此類推,直到找到可以使得比例小于1%的最小K值(原因是各個特征之間通常情況存儲某種相關性)。

還有一些更好的方式來選擇K,在Octave語言中調用svd函數的時候,我們獲得三個參數:[U,S,V]=svd(sigma)。其中S是一個n×n的矩陣,只有對角線上有值,其他單元都是0,我們可以使用這個矩陣來計算平均均方誤差與訓練集方差的比例:

1mmi=1||x(i)?x(i)approx||21mmi=1||x(i)||2=1?ki=1Siimi=1Sii1%
也就是:
ki=1Siimi=1Sii0.99

應用PCA

假設我們正在針對一張100×100像素的圖片進行某個計算機視覺的機器學習,即總共有10000個特征。這里可以使用PCA來降維來提高算法的速度。做法如下:

  • 第一步是使用PCA將數據壓縮至1000個特征;
  • 對訓練集運行學習算法;
  • 在預測的時候,使用第一步學來的Ureduce將測試集中的特征x轉換成新的特征向量z,然后再進行預測。
  • 注意:只有在訓練集才運行PCA算法,而將訓練集中學到的Ureduce應用到交叉驗證集和測試集中。

    錯誤使用PCA的情況有:

  • 將PCA用于減少過擬合(減少特征的數量)。這樣做并不好,不如嘗試歸一化處理。原因是PCA只是近似地丟棄掉一些特征,它并不考慮與結果變量有關的信息,因此可能丟掉非常重要的特征。而當進行歸一化處理時,會考慮到結果變量,不會丟掉重要的數據。
  • 默認地將PCA作為學習過程中的一部分。這雖然很多時候有效果,但最好還是從原始特征開始,只在有必要的時候(算法運行太慢或者占用太多內存)才考慮使用PCA。
  • 小結

    本節內容介紹了使用降維的兩大原因,一個是進行數據壓縮,減少內存的使用,提高算法速度,第二個是為了數據可視化,從而找到一個更好的解決問題的方法。

    降維方法中最常用的就是PCA算法,所以本節內容主要是介紹PCA算法的基本做法,具體實現過程,以及使用的方法和注意事項。

    總結

    以上是生活随笔為你收集整理的[机器学习笔记]Note12--降维的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。