機(jī)器學(xué)習(xí)之特征工程
特征工程是機(jī)器學(xué)習(xí)里面非常重要的一個(gè)部分,機(jī)器學(xué)習(xí)主要就是根據(jù)我們從數(shù)據(jù)中獲取到的特征數(shù)據(jù),來得到對(duì)結(jié)果的預(yù)測(cè),一般來說對(duì)結(jié)果影響最大的特征,需要重點(diǎn)觀察,而對(duì)結(jié)果影響不大的特征屬性需要排除出來,避免對(duì)預(yù)測(cè)結(jié)果產(chǎn)生不利影響
特征工程的作用
- 從數(shù)據(jù)中抽取出對(duì)預(yù)測(cè)結(jié)果有用的信息
- 從數(shù)據(jù)中構(gòu)建出對(duì)結(jié)果有用的信息
- 更好的特征能更高效的實(shí)現(xiàn)
- 更好的特征能在比較簡(jiǎn)單的模型中也能得到比復(fù)雜模型都好的擬合能力
一般特征工程的方式
- 將特征值為字符串的轉(zhuǎn)換成數(shù)值型特征值
train_data['age'].uniqe() # 取出特征值里面的所有值
train_data.loc[train_data['age']=='C', 'age'] = 1 # 對(duì)每一個(gè)值進(jìn)行映射
- 使用均值來填充缺失值
在pandas里面我們可以使用如下的方式來實(shí)現(xiàn)
train_data['age'] = train_data['age'].fillna(train_data['age'].medium)
- 使用眾數(shù)來填充字符型缺失值
import
train_data['Class'] = train_data['Class'].fillna()
- 歸一化
歸一化是用來將每個(gè)特征值的量綱能夠統(tǒng)一一下,一般是將特征值放縮到一定程度就可以,可使用如下方式
- 降維
降維主要是對(duì)特征做,而不是對(duì)數(shù)據(jù)做,將大特征的樣本降維成小特征樣本就好,一般會(huì)使用PCA的降維方式來做,PCA的思想就是選出最具代表性的幾個(gè)特征,什么是最具代表性,就是這些特征的方差最大,差異化最大,如果有幾個(gè)特征,對(duì)于每一個(gè)樣本來說都是差不多的,那么這個(gè)特征在分類樣本的區(qū)別貢獻(xiàn)上沒有很大的貢獻(xiàn),就是不能提供給結(jié)果一些評(píng)判標(biāo)準(zhǔn),這時(shí)候,就可以將這些特征進(jìn)行剔除了
當(dāng)然在做PCA降維的時(shí)候,需要找到最佳降維的坐標(biāo)系,比如在二維坐標(biāo)系中
[圖片上傳失敗...(image-e75589-1541861272706)]
要是我們直接使用x軸作為投影的軸,就會(huì)發(fā)現(xiàn)很多的樣本會(huì)出現(xiàn)重合,要是我們?nèi)∽罴训臄M合直線做降維軸的話,可以看到投影在改軸上的樣本很少出現(xiàn)重合,這樣我們就可以用改投影軸來作為PCA降維的軸了
為了減少降維過程中出現(xiàn)的映射誤差,需要對(duì)特征進(jìn)行歸一化處理
要進(jìn)行降維的操作,我們可以使用協(xié)方差矩陣的方式來進(jìn)行處理,協(xié)方差矩陣表示的就是不同特征之間的相關(guān)程度,也就是相關(guān)系數(shù)矩陣,相關(guān)系數(shù)越大,說明這兩個(gè)特征的相關(guān)性就越大,所以就可以使用該特征來代表對(duì)應(yīng)的相關(guān)特征了,具體的算法流程如下
數(shù)據(jù)集
按列計(jì)算數(shù)據(jù)集XX的均值
,然后令
;
-
求解矩陣
的協(xié)方差矩陣,并將其記為Cov;
協(xié)方差和方差類似,方差計(jì)算的是一維數(shù)據(jù)的離散程度而協(xié)方差計(jì)算的就是多維數(shù)據(jù)之間的相關(guān)性
計(jì)算協(xié)方差矩陣Cov的特征值和相應(yīng)的特征向量;
將特征值按照從大到小的排序,選擇其中最大的k個(gè),然后將其對(duì)應(yīng)的k個(gè)特征向量分別作為列向量組成特征向量矩陣
;
計(jì)算
,即將數(shù)據(jù)集
投影到選取的特征向量上,這樣就得到了我們需要的已經(jīng)降維的數(shù)據(jù)集
。
因?yàn)閰f(xié)方差沒有去掉量綱對(duì)數(shù)值的倍數(shù)影響,可能我們?cè)跈M向?qū)Ρ鹊臅r(shí)候會(huì)出現(xiàn),不同量綱的相關(guān)程度不一致的問題
PCA的維度選擇的方式可以通過誤差率來進(jìn)行選擇,選擇降維后剩下的特征所表達(dá)的信息,與未降維前所表達(dá)的信息進(jìn)行對(duì)比后,要占到一定的比例才行,如: