【机器学习】特征降维
特征降維
學習目標
-
知道特征選擇的嵌入式、過濾式以及包裹氏三種方式
-
應用VarianceThreshold實現刪除低方差特征
-
了解相關系數的特點和計算
-
應用相關性系數實現特征選擇
降維
降維是指在某些限定條件下,降低隨機變量(特征)個數,得到一組“不相關”主變量的過程
-
降低隨機變量的個數
-
相關特征(correlated feature):相對濕度與降雨量之間的相關等等
正是因為在進行訓練的時候,我們都是使用特征進行學習。如果特征本身存在問題或者特征之間相關性較強,對于算法學習預測會影響較大
降維的兩種方式
-
特征選擇
-
主成分分析(可以理解一種特征提取的方式)
特征選擇
什么是特征選擇
定義: 數據中包含冗余或無關變量(或稱特征、屬性、指標等),旨在從原有特征中找出主要特征。
方法:
-
Filter(過濾式):主要探究特征本身特點、特征與特征和目標值之間關聯
- 方差選擇法:低方差特征過濾
- 相關系數
-
Embedded (嵌入式):算法自動選擇特征(特征與目標值之間的關聯)
- 決策樹:信息熵、信息增益
- 正則化:L1、L2
- 深度學習:卷積等
-
Wrapper (包裹式)
模塊
sklearn.feature_selection過濾式
低方差特征過濾
刪除低方差的一些特征,前面講過方差的意義。再結合方差的大小來考慮這個方式的角度。
-
特征方差小:某個特征大多樣本的值比較相近
-
特征方差大:某個特征很多樣本的值都有差別
API
- sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
- 刪除所有低方差特征
- Variance.fit_transform(X)
- X:numpy array格式的數據[n_samples,n_features]
- 返回值:訓練集差異低于threshold的特征將被刪除。默認值是保留所有非零方差特征,即刪除所有樣本中具有相同值的特征。
數據計算
我們對某些股票的指標特征之間進行一個篩選
一共這些特征
pe_ratio,pb_ratio,market_cap,return_on_asset_net_profit,du_return_on_equity,ev,earnings_per_share,revenue,total_expense index,pe_ratio,pb_ratio,market_cap,return_on_asset_net_profit,du_return_on_equity,ev,earnings_per_share,revenue,total_expense,date,return 0,000001.XSHE,5.9572,1.1818,85252550922.0,0.8008,14.9403,1211444855670.0,2.01,20701401000.0,10882540000.0,2012-01-31,0.027657228229937388 1,000002.XSHE,7.0289,1.588,84113358168.0,1.6463,7.8656,300252061695.0,0.326,29308369223.2,23783476901.2,2012-01-31,0.08235182370820669 2,000008.XSHE,-262.7461,7.0003,517045520.0,-0.5678,-0.5943,770517752.56,-0.006,11679829.03,12030080.04,2012-01-31,0.09978900335112327 3,000060.XSHE,16.476,3.7146,19680455995.0,5.6036,14.617,28009159184.6,0.35,9189386877.65,7935542726.05,2012-01-31,0.12159482758620697 4,000069.XSHE,12.5878,2.5616,41727214853.0,2.8729,10.9097,81247380359.0,0.271,8951453490.28,7091397989.13,2012-01-31,-0.0026808154146886697 def variance_demo():"""過濾低方差特征:return:"""# 1、獲取數據data = pd.read_csv("factor_returns.csv")data = data.iloc[:, 1: -2]print(data)# 2、實例化一個轉換器transfer = VarianceThreshold(threshold=5)# 3、調用fit_transformdata_new = transfer.fit_transform(data)print("data_new", data_new, data_new.shape)return Noneif __name__ == '__main__':# 低方差特征過濾variance_demo()相關系數
皮爾遜相關系數(Pearson Correlation Coefficient): 反映變量之間相關關系密切程度的統計指標
公式計算案例(了解,不用記憶)
公式:
比如說我們計算年廣告費投入與月均銷售額
= 0.9942
所以我們最終得出結論是廣告投入費與月平均銷售額之間有高度的正相關關系。
特點
相關系數的值介于–1與+1之間,即–1≤ r ≤+1。其性質如下:
-
當r>0時,表示兩變量正相關,r<0時,兩變量為負相關
-
當|r|=1時,表示兩變量為完全相關,當r=0時,表示兩變量間無相關關系
-
當0<|r|<1時,表示兩變量存在一定程度的相關。且|r|越接近1,兩變量間線性關系越密切;|r|越接近于0,表示兩變量的線性相關越弱
一般可按三級劃分:|r|<0.4為低度相關;0.4≤|r|<0.7為顯著性相關;0.7≤|r|<1為高度線性相關
這個符號:|r|為r的絕對值, |-5| = 5
API
from scipy.stats import pearsonr x : (N,) array_like y : (N,) array_like Returns: (Pearson’s correlation coefficient, p-value)主成分分析
學習目標
-
應用PCA實現特征的降維
-
應用:用戶與物品類別之間主成分分析
什么是主成分分析(PCA)
定義:高維數據轉化為低維數據的過程,在此過程中可能會舍棄原有數據、創造新的變量
作用:是數據維數壓縮,盡可能降低原數據的維數(復雜度),損失少量信息。
應用:回歸分析或者聚類分析當中
那么更好的理解這個過程呢?我們來看一張圖
API
- sklearn.decomposition.PCA(n_components=None)
- 將數據分解為較低維數空間
- n_components:
- 小數:表示保留百分之多少的信息
- 整數:減少到多少特征
- PCA.fit_transform(X) X:numpy array格式的數據[n_samples,n_features]
- 返回值:轉換后指定維度的array
數據計算
[[2,8,4,5], [6,3,0,8], [5,4,9,1]] def pca():"""主成分分析進行降維:return:"""# 信息保留70%pca = PCA(n_components=0.7)data = pca.fit_transform([[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]])print(data)return None案例:探究用戶對物品類別的喜好細分降維
數據
-
order_products__prior.csv:訂單與商品信息
- 字段:order_id, product_id, add_to_cart_order, reordered
-
products.csv:商品信息
- 字段:product_id, product_name, aisle_id, department_id
-
orders.csv:用戶的訂單信息
- 字段:order_id,user_id,eval_set,order_number,….
-
aisles.csv:商品所屬具體物品類別
- 字段: aisle_id, aisle
分析
-
合并表,使得user_id與aisle在一張表當中
-
進行交叉表變換
-
進行降維
總結
以上是生活随笔為你收集整理的【机器学习】特征降维的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】快速入门机器学习
- 下一篇: 【机器学习】特征预处理