1. 程式人生 > >機器學習裡資料預處理及特徵工程總結

機器學習裡資料預處理及特徵工程總結

         機器學習裡有一句名言:資料和特徵決定了機器學習的上限,而模型和演算法的應用只是讓我們逼近這個上限。這個說法形象且深刻的提出前期資料處理和特徵分析的重要性。這一點從我們往往用整個資料探勘全流程60%以上的時間和精力去做建模前期的資料處理和特徵分析也能看出。那麼疑問來了,這超過60%時間和精力我們都用在哪了?本文基於以往的知識儲備以及實際的專案經驗,我做一個總結。

         主要包括三部分,一是獲取資料、資料抽樣,二是資料探索,三是資料預處理與清洗

一、 獲取資料,資料抽樣:如何保證取樣資料的質量?是否在足夠範圍內有代表性?資料樣本取多少合適?如何分類(訓練集、測試集、驗證集)等等。當要處理或者要分析的資料量比較大,而我們的計算機或者平臺不支援開展全量資料分析時,利用抽樣技術進行樣本分析往往是一個好的主意,其中抽樣技術有:

1.簡單隨機抽樣(simple random sampling):將所有調查總體編號,再用抽籤法或隨機數字表隨機抽取部分觀察資料組成樣本。

優點:操作簡單,均數、率及相應的標準誤計算簡單。

缺點:總體較大時,難以一一編號。

2.系統抽樣(systematic sampling):又稱機械抽樣、等距抽樣,即先將總體的觀察單位按某一順序號分成n個部分,再從第一部分隨機抽取第k號觀察單位,依次用相等間距從每一部分各抽取一個觀察單位組成樣本。

優點:易於理解、簡便易行。

缺點:總體有周期或增減趨勢時,易產生偏性。

3.整群抽樣(cluster sampling):先將總體依照一種或幾種特徵分為幾個子總體(類.群),每一個子總體稱為一層,然後從每一層中隨機抽取一個子樣本,將它們合在一起,即為總體的樣本,稱為分層樣本

優點:便於組織、節省經費。

缺點:抽樣誤差大於單純隨機抽樣。

4.分層抽樣(stratified sampling):將總體樣本按其屬性特徵分成若干型別或層,然後在型別或層中隨機抽取樣本單位,合起來組成樣本。有按比例分配和最優分配(過度抽樣是否就是最優分配方法?)兩種方案。

優點:樣本代表性好,抽樣誤差減少。

缺點:由於通過劃類分層,增大了各型別中單位間的共同性,容易抽出具有代表性的調查樣本。該方法適用於總體情況複雜,各類別之間差異較大(比如金融客戶風險/非風險樣本的差異),類別較多的情況。

其中我們經常用到的是分層抽樣和簡單隨機抽樣,有兩種抽取模式,有放回和無放回,以及兩種抽取方式,按照比例抽樣和按照規模抽樣,其中:

有放回抽樣:每次抽取的樣品在下次抽樣前要放回總體,也就是說,每次都是從總體中抽取資料,每次抽到各個樣本的概率是相等的;

無放回抽樣:每次抽取後樣本總體都會減少一,所以每次抽取後,下一次抽取樣本的時候,抽樣概率就會改變;

按照比例抽樣:按照總體的百分比多少抽取樣本資料;

按照規模抽樣:即按照個數抽取,抽取的樣本規模是多少,規模不大於總體規模

二、 資料探索(資料質量稽核和特徵分析):根據觀測、調查收集到初步的樣本資料集後,接下來要考慮的問題是:樣本資料集的數量和質量是否滿足模型構建的要求?有沒有出現從未設想過的資料狀態?其中有沒有什麼明顯的規律和趨勢?各因素之間有什麼樣的關聯性?資料探索就是通過檢驗資料集的資料質量、繪製圖表、計算某些特徵量等手段,對樣本資料集的結構和規律進行分析的過程。

資料探索可以從資料質量分析和資料特徵分析等兩個角度進行展開:

1  資料質量分析:是資料探勘中資料準備過程中的重要一環,是資料預處理的前提,也是資料探勘分析結論有效性和準確性的基礎。資料質量分析的主要任務是檢查原始資料中是否存在髒資料,髒資料一般是指不符合要求,以及不能直接進行相應分析的資料。在資料探勘中,髒資料包括:

1) 缺失值

2)異常值

3)不一致的值

4)重複資料及含有特殊符號的資料

1.1     缺失值分析:資料的缺失主要包括記錄的缺失和記錄中某個欄位資訊的缺失,兩者都會造成分析結果的不準確。通過使用簡單的統計分析,可以得到含有缺失值的屬性的個數,以及每個屬性的未缺失數、缺失數與缺失率等。

1.1.1缺失值產生的原因:

1)有些資訊是被遺漏的。可能是因為輸入時認為不重要、忘記填寫或對資料理解錯誤等一些人為因素而遺漏的

2)屬性值不存在。

3)有些資訊暫時無法獲取,或者獲取的代價比較大。

1.1.2缺失值的影響:

1)資料探勘建模將丟失大量的有用資訊

2)資料探勘模型所表現出的不確定性更加顯著,模型中蘊含的規律更難把握

3)包含空值的資料會使建模過程陷入混亂,導致不可靠的輸出

1.2   異常值分析:異常值分析是檢驗資料是否有錄入錯誤以及含有不合常理的資料。忽視異常值的存在是十分危險的,不加剔除地把異常值包括進資料的計算分析過程中,會給結果帶來不良影響。異常值是指樣本中的個別值,其資料明顯偏離其餘的觀測值。異常值也稱為離群點,異常值的分析也稱為離群點分析。異常值分析可以通過以下3種方法來探索。

1)簡單統計量分析:可以先對變數做一個描述性統計,進而檢視哪些資料是不合理的。最常用的統計量是最大值和最小值。

2)3原則:如果資料服從於正態分佈,在3原則下,異常值被定義為一組測定值與平均值的偏差值超過3倍標準差的值,即|x-u| >3。如果資料不服從正態分佈,也可以用遠離平均值的多少倍標準差來描述。

3)箱型圖分析:箱型圖提供了識別異常值的一個標準:異常值通常被定義為小於QL -1.5IQR或大於QU +1.5IQR的值。

1.3   一致性分析:資料不一致性是指資料的矛盾性、不相容性。直接對不一致性的資料進行挖掘,可能會產生與實際相違背的挖掘結果。在資料探勘過程中,不一致資料的產生主要發生在資料整合的過程中,可能是由於被挖掘資料來自於不同的資料來源、對於重複存放的資料未能進行一致性更新造成的。

2  資料特徵分析:對資料進行質量分析以後,可以通過繪製圖表、計算某些特徵量等手段進行資料的特徵分析。主要通過分佈分析、對比分析、統計量分析、週期性分析、貢獻度分析、相關性分析等角度進行展開。

2.1  分佈分析:分佈分析能揭示資料的分佈特徵和分佈型別。對於定性資料,可用餅形圖和條形圖直觀的現實分佈情況。

2.2  對比分析:對比分析是指把兩個相互聯絡的指標進行比較,從資料量上展開和說明研究物件規模的大小,水平的高低,速度的快慢。在對比分析中,選擇合適的對比標準是十分關鍵的步驟。

2.3  統計量分析:用統計指標對定量資料進行統計描述,常從集中趨勢和離中趨勢兩個方面進行分析。

2.4  週期性分析:週期性分析是探索某個變數是否隨著時間變化而呈現出某種週期變化趨勢。時間尺度相對較長的週期性趨勢有年度週期性趨勢、季節性週期性趨勢,相對較短的有月度週期性趨勢、周度週期性趨勢,甚至更短的天、小時週期性趨勢。

2.5  貢獻度分析:貢獻度分析又稱帕累託分析,它的原理是帕累托法則又稱2/8定律。

2.6  相關性分析:分析連續變數之間線性相關程度的強弱,並用適當的統計指標表示出來的過程稱為相關分析,

1) 判斷兩個變數是否具有線性相關關係的最直觀的方法是直接繪製散點圖;

2)需要同時考察多個變數間的相關關係時,可利用散點圖矩陣同時繪製各變數間的散點圖,從而快速發現多個變數間的主要相關性;

計算相關係數:為了更加準確的描述變數之間的線性相關程度,可以通過計算相關係數來進行相關分析。在二元變數的相關分析過程中比較常用的有Pearson相關係數、Spearman秩相關係數和判定係數。

1)Pearson相關係數:一般用於分析兩個連續性變數之間的關係;

2)Spearman秩相關係數:一般用來處理不服從正態分佈的變數、分類或等級變數之間的關聯性,也稱等級相關係數。

3)判定係數:判定係數是相關係數的平方,用r^2表示:用來衡量回歸方程對y的解釋程度。

三、 資料預處理和清洗(data preprocessing):是指在主要的處理以前對資料進行的一些處理,現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提高資料探勘的質量產生了資料預處理技術。資料預處理有多種方法:資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。

1、 資料清理:通過填寫缺失的值、光滑噪聲資料、識別或刪除離群點並解決不一致性來“清理”資料。主要是達到如下目標:格式標準化,異常資料清除,錯誤糾正,重複資料的清除。

1)處理缺失值方法:

a.忽略元祖,挖掘任務涉及分類任務中如果缺少類標號時通常這樣做

b.人工填寫缺失值,量大時行不通

c.使用一個全域性常量填充缺失值,簡單但不可靠

d.使用屬性的均值填充缺失值

e.使用與給定元組屬同一類的所有樣本的屬性均值

f.使用最有可能的值填充缺失值,可以用迴歸,使用貝葉斯形式化的基於推理的工具或決策樹歸納確定,是流行的做法。

2)資料光滑技術:噪聲是被測量的變數的隨機誤差或方差

a.分箱,分箱方法通過考察資料的“近鄰”(即周圍的值)來光滑有序資料的值,有序值分佈到一些“桶”或箱中。由於分箱方法考察近鄰的值,因此進行區域性光滑。幾種分箱技術:用箱均值光滑、用箱邊界光滑、用箱中位數光滑。

b.迴歸:可以用一個函式(如迴歸函式)擬合數據來光滑資料。線性迴歸涉及找出擬合兩個屬性(或變數)的“最佳”線,是的一個屬性可以用來預測另一個。多元線性迴歸是線性迴歸的擴充套件,其中涉及的屬性多於兩個,並且資料擬合到一個多維曲面。

c.聚類:通過聚類檢測離群點

2、 資料整合:將多個數據源中的資料結合起來並統一儲存,建立資料倉庫的過程實際上就是資料整合,具體來講就是將分散在不同來源的資料有機地整合到一起的一步,例如寬表整合。明確哪些資料來源可用?哪些資料與當前挖掘目標相關?。其中要考慮三個問題:實體識別、資料冗餘和資料值衝突檢測與處理。

資料分析任務多半涉及資料整合。資料集成合並多個數據源中的資料,存放在一個一致的資料儲存(如資料倉庫)中。這些資料來源可能包括多個數據庫、資料立方體或一般檔案。資料整合有三個主要問題:

a.模式整合和物件匹配,實體識別問題:來自多個資訊源的現實世界的等價實體如何才能匹配?元資料可以幫助避免模式整合的錯誤。

b.冗餘:有些冗餘可以被相關分析檢測到。通過計算屬性A,B的相關係數(皮爾遜積矩係數)來判斷是否冗餘;對於離散資料,可通過卡方檢驗來判斷兩個屬性A和B之間的相關聯絡。

c.資料值衝突的檢測與處理

3、 資料變換:通過平滑聚集,資料概化,規範化等方式將資料轉換成適用於資料探勘的形式。其中平滑可以用分箱、聚類和迴歸來實現。資料泛化過程即概念分層,將低層次的資料提煉到更高一級的概念層次中。規範化又有最大最小規範化、0-值規範化和小數定標規範化。此外還可以構造新的屬性來使資料整合。

a.光滑:去掉資料的噪聲,包括分箱,迴歸和聚類

b.聚集:對資料進行彙總或聚集。這一步通常用來為多粒度資料分析構造資料立方體

c.資料泛化:使用概念分層,用高層概念替換底層或“原始”資料。

d.規範化:又稱為歸一化,feature scaling特徵縮放。將屬性資料按比例縮放,使之落入一個小的特定區間。規範化方法:

1.最小-最大規範化:v'=[(v-min)/(max-min)]*(new_max-new_min)+new_min

2.z-score規範化(或零均值規範化):v'=(v-屬性A的均值E)/屬性A的標準差∽

3.小數定標規範化:v'=v/10的j次方,j是使Max(|v'|)<1的最小整數

e.屬性構造(或特徵構造):可以構造新的屬性並新增到屬性集中,以幫助挖掘過程。

4、 資料歸約:資料探勘時往往資料量非常大,在少量資料上進行挖掘分析需要很長的時間,資料歸約技術可以用來得到資料集的歸約表示,它小得多,但仍然接近於保持原資料的完整性,並結果與歸約前結果相同或幾乎相同。此類技術主要有如下幾類:

a、 資料方聚集、

b、 維規約(檢測並刪除不相關、弱相關或冗餘的屬性或維)

c、 資料壓縮(小波或傅立葉變換以及主成份分析)

d、 數值規約(用替代的、較小的資料表示替換或估計資料):主要有迴歸、直方圖、聚類、選樣等操作

e、 還有概念分層。