机器学习之数据准备
04 | 數據準備
數據準備階段包含從原始數據到形成最終數據集(將要被喂給模型工具的數據)的所有操作。數據準備任務可能要進行多次,沒有規定的固定順序。任務包括:表,記錄和特征選擇以及為了模型工具的數據清洗和轉換。
-數據準備是費時間的
紐約時報的一篇文章報道,數據科學家在挖掘出有價值的“金塊”之前要花費50%到80%的時間在很多諸如收集數據和準備不規則的數據的普通任務上。混亂的數據是數據科學家工作流中典型的比較耗費時間的。
-真實世界中數據是雜亂的
數據很少是干凈的而且經常有數據質量問題。比如:數據的不唯一性,格式上不統一,非法值,特征依賴,缺失值,錯誤拼寫,等等。。見下圖:
典型的數據質量問題有幾個原因:
哪種問題影響數據質量?
-數據準備:避免垃圾進,垃圾出
-清洗你的數據
為什么處理缺失值?
如何處理缺失值?
處理缺失值的經典方法有:
關于異常/離群點你需要知道的?
離群點的成因
如何處理離群點
具體如何處理離群點應該視情況而定。
A:修改或者截斷
B:替換
處理離群點的例子:
截斷或修改小于5%的數據點不會對假設結果產生太大的影響。
大于5%的數據點可能影響輸出結果比如:
-數據歸一化
如何歸一化數據?
數據歸一化就是將數值型的值轉換到一個特定的區間上。常用的歸一化方法包含如下幾種:
線性的將值轉換到一個0-1的區間。最小值0,最大值1.公式:
根據數據的均值和方差歸一化:利用數據平均值的差除以數據的方差。特征標準化使得數據具有0均值(即當減去分子中的均值是)和標準方差。公式:
將數據中帶有小數點的特征值去掉小數點。
注:數據集的不同度量尺度可能是有問題的,在一些特定的機器學習算法是要求數據具有相同的比例的。
-數據離散化
如何離散化數據?
數值變量可能有許多不同的值,對于某些算法,這可能導致非常復雜的模型。可以通過“綁定”將連續屬性轉換為分類屬性,以便于使用某些機器學習方法。離散化是將數據放進一些桶的過程,所以這是有限個可能的狀態。這些桶本身被視為有序和離散的。你也可以離散化數值列和字符串列。
Bining(裝箱):
可以通過將連續數值轉換為分類屬性或者間隔值離散化數據。如下有一些方法:
-數據降維
樣本數據:
如果你要分析的數據非常龐大,通常比較好用的減少數據量的方法是將數據減少維度而且使得數據變得更加具有代表性和容易處理。這將促進數據的理解,探索和特征工程。大量的數據會導致算法更長的運行時間和更大的計算和內存需求。在總的數據訓練之前你可以拿一些具有代表性的少量數據去訓練,這樣可能會更快的探索和驗證方案。
如何給數據降維?有很多將數據降維的方法,以使得數據更容易處理。依賴于數據的大小和主要特征,如下有一種降維方法可以應用:
-文本清洗
如何清洗文本數據?
在讀取/寫入文本時不適當的文本編碼處理會導致信息的丟失,不經意的引入不可讀的字符(如:null)也可能影響文本解析。一些非結構化的文本如推特,生產評論或者網頁訪問數據在被分析之前通常需要做一些準備工作。
例如:
案例視頻網址:https://azure.microsoft.com/en-us/resources/videos/preprocessing-data-in-azure-ml-studio/
-特征工程
特征工程在機器學習中是關鍵的任務。現在沒有對特征工程統一的定義,對于不同的人他意味著不同的事情。在谷歌的定義里:從數據中提取特征的過程叫做特征工程。在微軟的文檔里特征工程更多的是關于特征的構造。
特征工程是一門藝術-數據專家和專業領域專家交流越多,特征工程過程會越好。
什么是特征?
左邊三列是輸入特征又叫做屬性,解釋變量,自變量右邊一列是對應的結果又叫做因變量,最后一列最下面兩個問號是未知值,是要利用模型進行預測的。
特征就是一個可以獨立測量的屬性或者根據現象可觀察的值。在上面圖中的例子,有一系列特征如bedrooms,house size,neighborhood用來當做模型的輸入,目標就是房子的售價。圖中有一些知道價格的房子(分為訓練集和測試集)。一個模型可以被建立用于預測還不知道價格的房子。簡而言之就是一旦我們利用帶有標簽的樣本訓練我們的模型,我們就可以用它預測沒有標簽樣本的標簽。
-特征工程可以增強你的數據
-特征工程案例
案例一:
?
案例2
案例3
案例4
因為我們的目標是從訓練數據里構造更加高效的特征,我們用同一個算法但用四個不同的訓練數據集建立了四個模型。這四個訓練數據集都是極具同樣的輸入數據創建的,只不過是為四個數據集增加了不同的特征。
除了特征集合A是在原始數據里都已經存在的特征,其他三個特征集合都是通過特征工程創建的。這些特征集合的每一個都體現不同剛面的問題:
四中數據集的效果對比:
我們用了增強決策樹回歸模型,一個常用的非線性算法建立模型。為了理解四個模型的表現,上表給出了對比的結果。表中可以看出:最好的結果是A+B+C和A+B+C+D但是特征集合D并沒有對模型的效果有所提升。
-特征選擇
通過特征集合的部分特征來降低特征空間。特征選擇就是從原始數據的特征集合里選擇一個特征子集來降低特征的維度,以用最小的特征子集代表最大數量的變量。這個子集就是要進行模型訓練的數據集。通常是先用特征工程生成特征然后在特征選擇這一步更好的評估相關的,多于的和高度匹配的特征。
-為什么要進行特征性選擇?
通常,數據包含很多冗余和不相關的特征,一下有四個進行特征選擇技術的原因?
維度災難:
維數災難指的是某些學習算法在高維數據中表現不佳。例如:經過一個固定點之后,通過增加特征來增加問題的維度確實會影響我們的分類器的性能。這種情況如下圖所示,通常我們稱之為“維災難”。
當你增加更多特征時,你可能需要指數級的增加數據去填充一些空白。然而,實際上我們的數據量都是固定的,增加你需要的數據并不容易。
-特征選擇方法
-傳統的方法:
-過濾方法
通過評估每個特征和目標屬性之間的相關性,這些方法通過應用一個統計測量給每一個特征附一個分數。特征根據分數進行排名,這個分數可以用來幫助設置一個閾值來選擇或者消除一個特定的特征。統計的測量方法包括如下幾種:
這些方法在計算時間上特別有效,并且對過擬合具有魯棒性。然而,過濾方法趨向于選擇冗余的特征,因為他們不考慮變量之間的相關性。因此,他們主要用作一個預處理方法。
-包裝方法
包裝方法將選擇特征作為一個搜索問題,和組合不同的是準備,評估以及和其他的組合比較。一個預測模型被用來評估一個組合特征并基于模型精度附一個得分。
包裝器方法評估變量的子集,這與過濾方法不同,允許檢測變量之間可能的交互。
當包裝器方法為每個子集訓練新的模型時,它們在計算上非常密集,但是通常為該特定類型的模型提供最佳性能的特征集。
-嵌入方法
嵌入的方法在創建模型的同時,學習哪些特征對模型的準確性做出最好的貢獻。最常用的嵌入式特征選擇方法是正則化方法。正則化方法也稱為懲罰方法,它向預測算法(如回歸算法)的優化引入額外的約束,使模型偏向于較低的復雜度(較少的系數)。這些方法的一些最流行的例子是LASSO和RIDGE回歸,它們具有內置的懲罰函數以減少過擬合。
-特征選擇方法總結
-特征選擇VS降維
-特征工程的定義具有不同的版本
谷歌的定義比微軟包含更多的處理。在谷歌的定義中,特征工程包括數據預處理,數據過采樣,特征選擇等。讓我們看看谷歌如何做特征工程:
特征工程是指將原始數據轉換為特征向量。從原始數據創建特征的過程是特征工程,期望花費大量的時間做特征工程。
?
總結
- 上一篇: 使用js定时器实现倒计时功能
- 下一篇: direct3d D3DXCreateT