機器學習- 降維- PCA主成分分析 - Jimmy Huang

文章推薦指數: 80 %
投票人數:10人

機器學習- 降維- PCA主成分分析 ... 這兩者的差別主要是,PCA速度快,而且是線性降維,也就是彼此線性相關的資料很適合使用PCA降維,但是如果特徵與 ... GetstartedOpeninappJimmyHuangSigninGetstarted51FollowersAboutGetstartedOpeninapp機器學習-降維-PCA主成分分析JimmyHuangSep3,2019·4minread機器學習中,若特徵數目過多會發生什麼事情呢??先直接舉個例子:假設今天冰品店想用溫度&假日與否來推測冰品銷售量數據集如下,只有十個點minT代表當日最低溫maxT當日最高溫avgT代表平均溫度T1-T7則是店家安裝在店面附近的溫度感測器df=pd.read_csv('./pca.csv')Y=df['Sale']X=df.drop('Sale',axis=1)deftrain(X,Y):lst=[]foriinrange(10):x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.3)regr=linear_model.LinearRegression()regr.fit(x_train,y_train)y_pred=regr.predict(x_test)lst.append(mean_squared_error(y_test,y_pred))print(np.mean(lst))這邊簡單地把資料load進去,隨機跑個十次data,然後用meansquared當作誤差指標train(X,Y)MSE=338.50Xslice=X.iloc[:,[2,10]]train(Xslice,Y)MSE=277.35結果發現,把全部維度的特徵丟進去,算出來的誤差(388),會比只用兩個特徵"avgT"和"Holiday"算出來的(277)大許多這個數據集是我自己隨便掰的,但是現實生活中常常會遇到這種問題,大家最近都在說"大"數據,但是餵進model的資料不是多就好,還要經過工程師的篩選才能有好的訓練效果,也就是抓住所謂的關鍵特徵(Keyfeature)而特徵的T1-T7就是現在製造業導入數據分析常常遇到的盲點:業主常常花大錢,買了一堆感測器,但是不清楚要分析些什麼,重複的感測數據彼此間有Multi-Collinearity—多元共線性,造成訓練效果的不佳多重共線性線性回歸模型中的解釋變量之間由於存在精確相關關係或高度相關關係。

看似相互獨立的指標本質上是相同的,是可以相互代替的,但是完全共線性的情況並不多見,一般出現的是在一定程度上的共線性,即近似共線性。

這種維度太多的情形,就是所謂聽到的維度災難如果理論上訓練樣本時無限多的,那麼維度災難不會發生,我們可以使用無限多的特徵來獲得一個完美的分類器。

訓練數據越少,使用的特徵就要越少。

而這時候遇到這種維度過多,就會需要降維降維主要有兩種方法1.PCA主成分分析2.T-sne這兩者的差別主要是,PCA速度快,而且是線性降維,也就是彼此線性相關的資料很適合使用PCA降維,但是如果特徵與特徵間的關聯是非線性關係的話,用PCA可能會導致underfitting的情形發生,就可以改用T-snefromsklearnimportdecompositionpca=decomposition.PCA(n_components=3)pca.fit(X)X_pca=pca.transform(X)train(X,Y)MSE=255.8透過PCA降維,可以將特徵壓縮到3個,並有良好的MSE其他舉例:葡萄酒數據集有13個特徵值,經過PCA分析後我們只選定兩個主成分,將投影過後的數據利用邏輯斯迴歸便可分類適當,也不用擔心因使用太多特徵值維數災難造成的過度適合(Overfitting)。

機器學習(6)--主成分分析(Principalcomponentanalysis,PCA)這一篇介紹主成分分析(Principalcomponentanalysis,PCA),是一種特徵提取的技術,利用特徵降維來避免因維度災難所造成的…arbu00.blogspot.com8*8的手寫辨識集,展開後是64個特徵,但經過PCA降維成25個特徵,也能保持良好的分類準確率下次遇到大量數據前,不如先試試PCA將維度降維看看吧!JimmyHuangSoftwareEngineerFollow110110 110MachineLearningPcaDimensionalityReductionPythonStatisticsMorefromJimmyHuangFollowSoftwareEngineer



請為這篇文章評分?