1. 程式人生 > >資料探勘入門系列教程(六)之資料集特徵選擇

資料探勘入門系列教程(六)之資料集特徵選擇

目錄

  • 資料探勘入門系列教程(六)之資料集特徵選擇
    • 簡介
    • 載入資料集Adult
    • 特徵選擇
    • 選擇最佳特徵
    • 總結

資料探勘入門系列教程(六)之資料集特徵選擇

這一篇部落格主要來如何介紹從資料集中抽取合適的特徵。

我們知道,在資料探勘中,資料的訓練演算法很重要,但是同樣我們對於資料的前置處理也不可忽視。因為我們對某個資料集的描述是使用特徵來表示的。在前面的部落格中無論我們是獲得商品交易的相關性關係,還是使用決策樹去對Iris進行分類,我們都是使用了資料集中所有的特徵。但是實際上我們獲取的資料真的有這麼好嗎?

舉個例子,我們對西瓜進行分類,但是西瓜的編號實際上與訓練毫無關係,因此我們會訓練之前將去掉西瓜的編號。我們之所以去掉編號,是因為我們知道這個編號與西瓜的好壞毫無關係。但是如果給你一個陌生的資料集,有著成百上千的特徵,我們又如何去除無關的資料特徵得到有用的特徵然後進行訓練?

憑感覺?這裡有兩個問題:

  • 資料集太大,這個太耗費人力
  • 如果某個關鍵的特徵取值很相近(或者相同)怎麼辦

這裡說一下第二個問題。舉個例子,西瓜的好壞與西瓜的顏色有關,但是如果你的資料集中西瓜的顏色全部一樣,你還要不要使用這個特徵進行訓練呢?

肯定有人說,要!!但是如果這種特徵取值相似的特徵有1000個,你還要不要呢?在前面的部落格中,我們可以看到使用Apriori

演算法進行計算,一旦\(K\)的值增大,基本上輕薄本就算不動這個資料了!

簡介

通過前面的學習我們知道,無論是交易資料,還是Iris資料,他們都是一個一個的實體(視訊,聲音,文字也是),我們會通過選擇一個一個的特徵來描述某一個實體,這可以說是建模,同時這個模型的表示能夠讓資料探勘的演算法能夠理解。

如何選擇一些好的特徵,這個也就是這篇部落格要討論的話題(本篇部落格是探討探討如何從已有的特徵中選擇好的特徵【也就是簡化模型】,而不是自己去從資料集中(比如說聲音)去尋找特徵)。

這樣做有什麼好處呢?最簡單的一個就是它能夠降低真實世界的複雜度。比如說我要描述一個蘋果長什麼樣,我肯定不需要去了解蘋果是從哪裡買的。但是同樣也有缺點,因為我們在簡化的過程中,可能會忽略某一些特徵,但是這些特徵可能剛好有著某一些有用的資訊。

特徵可以初略的分為兩個型別:

  • 數值型:數值特徵,比如說Iris的花瓣長度是多少等等
  • 類別型:類別特徵(也可以稱之為名義特徵)比如說西瓜的顏色是淺綠色還是深綠色

對於數值型特徵來說,如果兩個特徵值相差很小,則可以認為這兩個特徵很相似,但是對於類別型的特徵值而言,沒辦法說他們是否相似,因為他們要不相同,要不不相同。因為名義特徵沒辦法進行數學上的計算,因此我們可以將它們進行二值化變成數值特徵。

同樣反過來,數值型特徵也可以通過離散化變成類別特徵,比如說花瓣長度大於某一個值為類別0,反之則為類別1。但是很明顯,這樣會丟失一些資料細節。

下面將以不同的資料集為例,介紹一些用來簡化模型的演算法。

載入資料集Adult

資料集來自這裡,同樣在我的GIthub中也存在這個資料集。我們下載如下的資料集:

adult.data中的部分資料如下,每一行代表的是一個人的資料,每一列表示的特徵屬性值(至於特徵是什麼,這個在adult.name檔案中有介紹):