解釋下特徵構建、特徵抽取和特徵選擇:
1、當數據拿到手裏後,首先需要從現有數據中挑選或將現有數據進行變形,組合形成新特徵,此過程稱爲特徵構建。
2、當特徵維度比較高,通過映射或變化的方式,用低維空間樣本來表示樣本,稱爲特徵抽取。
3、從一組特徵中挑選出一些最有效的特徵,以達到降低維度和降低過擬合風險的目的,稱爲特徵選擇。
機器學習,一些比賽競賽中,通常會給一定的特徵數據進行分類或者回歸預測。有時需要構建更多的特徵,然後對特徵再進行特徵選擇。通過增加一些輸入數據的非線性特徵來增加模型的複雜度通常是有效的。一個簡單通用的辦法是使用多項式特徵,這可以獲得特徵的更高維度和互相間關係的項。這在 PolynomialFeatures 中實現:
>>> import numpy as np
>>> from sklearn.preprocessing import PolynomialFeatures
>>> X = np.arange(6).reshape(3, 2)
>>> X
array([[0, 1],
[2, 3],
[4, 5]])
>>> poly = PolynomialFeatures(2)
>>> poly.fit_transform(X)
array([[ 1., 0., 1., 0., 0., 1.],
[ 1., 2., 3., 4., 6., 9.],
[ 1., 4., 5., 16., 20., 25.]])
在一些情況下,只需要特徵間的交互項,這可以通過設置 interaction_only=True 來得到:
>>> X = np.arange(9).reshape(3, 3)
>>> X
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> poly = PolynomialFeatures(degree=3, interaction_only=True)
>>> poly.fit_transform(X)
array([[ 1., 0., 1., 2., 0., 0., 2., 0.],
[ 1., 3., 4., 5., 12., 15., 20., 60.],
[ 1., 6., 7., 8., 42., 48., 56., 336.]])
X的特徵已經從(X_1,X_2,X_3)轉爲(1,X_1,X_2,X_3,X_1X_2,X_1X_3,X_2X_3,X_1X_2X_3)