1. 程式人生 > >Spark MLlib 特徵抽取、轉化和選擇 -- 特徵選取:卡方選擇器

Spark MLlib 特徵抽取、轉化和選擇 -- 特徵選取:卡方選擇器

這一部分主要介紹和特徵處理相關的演算法,大體分為以下三類:
1)特徵抽取:從原始資料中抽取特徵

2)特徵轉換:特徵的維度、特徵的轉化、特徵的修改

3)特徵選取:從大規模特徵集中選取一個子集

特徵選擇(feature Selection)指的是在特徵向量中選擇出那些優秀的特徵,組成新的、更精簡的特徵向量的過程。它在

高維資料分析中十分常用,可以剔除掉‘冗餘’和‘無關’的特徵,提升學習器的效能。

特徵選擇方法和分類方法一樣,也主要分為有監督(Supervised)和無監督(Unsupervised)兩種,卡方選擇則是統計學上常用的一種有監督特徵選擇方法,它通過對特徵和真實標籤之間進行卡方檢驗,來判斷該特徵和真實標籤的關聯程度,進而確定是否對其進行選擇。和ML庫中的大多數學習方法一樣,ML中的卡方選擇也是以estimator+transformer的形式出現的,其主要由ChiSqSelector和ChiSqSelectorModel兩個類來實現。

可以參考如下連結:

1)引入卡方選擇器所需要使用的類:

2)創造實驗資料,這是一個具有三個樣本,四個特徵維度的資料集,標籤有1,0兩種,我們將在此資料集上進行卡方選擇:

3)用卡方選擇進行特徵選擇器的訓練,為了觀察地更明顯,我們設定只選擇和標籤關聯性最強的一個特徵可以通過numTopFeatures引數方法進行設定):

4)用訓練出的模型對原資料集進行處理,可以看見,第三列特徵被選出作為最有用的特徵列: