1.為什麼需要對數值型別的特徵做歸一化?
( 1 )線性函式歸一化(min-max scaling) 它對原始資料進行
統性變換,使結果對映到[0,1 ]的範圍,實現對原始資料的等比縮放。歸一化公式如下
( 2)零均值歸一化( z-score normalization )當資料(x)按均值(μ)中心化後,再按標準差(σ)縮放,資料就會服從為均值為0,方差為1的正態分佈(即標準正態分佈),而這個過程,就叫做資料標準化(standardization,又稱z-score normalization),公式如下:
如果將資料歸一化化到相同的數值區間後, 梯度下降的速度更快,更容易找到最優解。
線性函式歸一化和零均值歸一化選哪個?
大多數機器學習演算法中,會選擇零均值歸一化來進行特徵縮放,因為線性函式歸一化對異常值非常敏感。在pca,聚類,邏輯回歸,支援向量機,神經網路這些演算法中,零均值歸一化往往是最好的選擇。
線性函式歸一化在不涉及距離度量、梯度、協方差計算以及資料需要被壓縮到特定區間時使用廣泛,比如數字影象處理中量化畫素強度時,都會使用線性函式歸一化將資料壓縮於[0,1]區間之中。
建議先試試看零均值歸一化,效果不好換線性函式歸一化。
在機器學習中,大多數演算法,譬如邏輯回歸,支援向量機svm,k近鄰演算法等都只能夠處理數值型資料,不能處理文字如男,女。類別型特徵必須經過處理轉換成數值型特徵才能正確工作。
在對資料進行預處理時,應該怎樣處理類別型特徵?
• 序號編碼
序號編碼通常用於處理類別間具有大小關係的資料 例如成績以分為低、中、高三擋 並且存在「高 低」的排序關係 序號編碼會按照大小關係對類別型特徵賦予乙個數值 id ,例如高表示為1中表示為 2低表示為3,轉換後依然保留了大小關係。
• 獨熱編碼
在對特徵進行編碼的時候,例如三種分類資料會被我們轉換為[0,1,2]這是說,我們把分類轉換成數字的時候,忽略了數字中自帶的數學性質,所以給演算法傳達了一些不準確的資訊,而這會影響我們的建模。
獨熱編碼通常用於處理類別間不具有大小關係的特徵例如血型。
• 二進位制編碼
進製編碼主要分為兩步 先用序號編碼給每個 別賦予乙個類別id ,然後將類別 id 對應的二進位制編碼作為結果。二進位制編碼本質上是利用二進位制對 id 進行雜湊對映,最終得到 0/1 特徵向 ,且維數少於 獨編碼,節省了儲存空間
我們做分類演算法訓練時,如果訓練集裡的各個類別的樣本數量不是大約相同的比例,就需要處理樣本不平衡問題。也許你會說,不處理會怎麼樣呢?如果不處理,那麼擬合出來的模型對於訓練集中少樣本的類別泛化能力會很差。舉個例子,我們是乙個二分類問題,如果訓練集裡a類別樣本佔90%,b類別樣本佔10%。 而測試集裡a類別樣本佔50%, b類別樣本佔50%,如果不考慮類別不平衡問題,訓練出來的模型對於類別b的**準確率會很低,甚至低於50%。
如何解決這個問題呢?一般是兩種方法:權重法或者取樣法。
權重法是比較簡單的方法,我們可以對訓練集裡的每個類別加乙個權重class weight。如果該類別的樣本數多,那麼它的權重就低,反之則權重就高。
如果權重法做了以後發現**效果還不好,可以考慮取樣法。
取樣法,對較多的那個類別進行欠取樣(under-sampling),捨棄一部分資料,使其與較少類別的資料相當
對較少的類別進行過取樣(over-sampling),重複使用一部分資料,使其與較多類別的資料相當。
取樣法改變了資料的分布,欠取樣浪費了資料,過取樣可能會導致過擬合。
採取的方案:
1不對資料進行過取樣和欠取樣,但使用現有的整合學習模型,如隨機森林
2輸出隨機森林的**概率,調整閾值得到最終結果
3選擇合適的評估標準
參考書籍:百面機器學習
參考部落格:
參考新增鏈結描述部落格
演算法工程師面試準備
貝葉斯 nb 神經網路 svm 概率圖模型 特徵選擇 其他 梯度下降的優缺點 降取樣,pca,lda pca的基於特徵值壓縮的方法 基於isolation forest識別的方法 梯度下降的優缺點 常見損失函式 bagging 和 boosting的區別 為什麼用最小二乘而不是最小四乘 gb和牛頓法...
特徵工程(1) 特徵工程是什麼?
特徵是資料中抽取出來的對結果 有用的資訊,可以是文字或者資料。特徵工程是使用專業背景知識和技巧處理資料,使得特徵能在機器學習演算法上發揮更好的作用的過程。過程包含了特徵提取 特徵構建 特徵選擇等模組。特徵工程的目的是篩選出更好的特徵,獲取更好的訓練資料。因為好的特徵具有更強的靈活性,可以用簡單的模型...
2012面試準備 2012 10 26面試準備
c 1 什麼純虛函式?首先,二者申明不一樣。virtual void test void 虛函式 virtual void test void 0 純虛函式 其次,如果乙個類包含了乙個純虛函式 哪怕只有乙個是純虛函式 那麼它就是乙個抽象類 就是不能生成具體的物件!但如果類中只包含虛函式,那麼是可以定...