計算廣告裡面的特徵處理方法

連續特徵的離散化:在什麼情況下將連續的特徵離散化之後可以獲得更好的效果?

Q:CTR預估,發現CTR預估一般都是用LR,而且特徵都是離散的。為什麼一定要用離散特徵呢?這樣做的好處在哪裡?

A:在工業界,很少直接將連續值作為邏輯迴歸模型的特徵輸入,而是將連續特徵離散化為一系列0、1特徵交給邏輯迴歸模型,這樣做的優勢有以下幾點:

0、 離散特徵的增加和減少都很容易,易於模型的快速迭代。(離散特徵的增加和減少,模型也不需要調整,重新訓練是必須的,相比貝葉斯推斷方法或者樹模型方法迭代快)

1、稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展;

2、離散化後的特徵對異常數據有很強的魯棒性:比如一個特徵是年齡>30是1,否則0。如果特徵沒有離散化,一個異常數據“年齡300歲”會給模型造成很大的干擾;離散化後年齡300歲也只對應於一個權重,如果訓練數據中沒有出現特徵"年齡-300歲",那麼在LR模型中,其權重對應於0,所以,即使測試數據中出現特徵"年齡-300歲",也不會對預測結果產生影響。特徵離散化的過程,比如特徵A,如果當做連續特徵使用,在LR模型中,A會對應一個權重w,如果離散化,那麼A就拓展為特徵A-1,A-2,A-3...,每個特徵對應於一個權重,如果訓練樣本中沒有出現特徵A-4,那麼訓練的模型對於A-4就沒有權重,如果測試樣本中出現特徵A-4,該特徵A-4也不會起作用。相當於無效。但是,如果使用連續特徵,在LR模型中,y = w*a,a是特徵,w是a對應的權重,比如a代表年齡,那麼a的取值範圍是[0..100],如果測試樣本中,出現了一個測試用例,a的取值是300,顯然a是異常值,但是w*a還是有值,而且值還非常大,所以,異常值會對最後結果產生非常大的影響。

3、邏輯迴歸屬於廣義線性模型,表達能力受限;單變量離散化為N個後,每個變量有單獨的權重,相當於為模型引入了非線性,能夠提升模型表達能力,加大擬合;在LR模型中,特徵A作為連續特徵對應的權重是Wa。A是線性特徵,因為y = Wa*A,y對於A的導數就是Wa,如果離散化後,A按區間離散化為A_1,A_2,A_3。那麼y = w_1*A_1+w_2*A_2+w_3*A_3.那麼y對於A的函數就相當於分段的線性函數,y對於A的導數也隨A的取值變動,所以,相當於引入了非線性。

4、 離散化後可以進行特徵交叉,加入特徵A 離散化為M個值,特徵B離散為N個值,那麼交叉之後會有M*N個變量,進一步引入非線性,提升表達能力;

5、特徵離散化後,模型會更穩定,比如如果對用戶年齡離散化,20-30作為一個區間,不會因為一個用戶年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎麼劃分區間是門學問;按區間離散化,劃分區間是非常關鍵的。

6、特徵離散化以後,起到了簡化了邏輯迴歸模型的作用,降低了模型過擬合的風險。(當使用連續特徵時,一個特徵對應於一個權重,那麼,如果這個特徵權重較大,模型就會很依賴於這個特徵,這個特徵的一個微小變化可能會導致最終結果產生很大的變化,這樣子的模型很危險,當遇到新樣本的時候很可能因為對這個特徵過分敏感而得到錯誤的分類結果,也就是泛化能力差,容易過擬合。而使用離散特徵的時候,一個特徵變成了多個,權重也變為多個,那麼之前連續特徵對模型的影響力就被分散弱化了,從而降低了過擬合的風險。)

李沐曾經說過:模型是使用離散特徵還是連續特徵,其實是一個“海量離散特徵+簡單模型” 同 “少量連續特徵+複雜模型”的權衡。既可以離散化用線性模型,也可以用連續特徵加深度學習。就看是喜歡折騰特徵還是折騰模型了。通常來說,前者容易,而且可以n個人一起並行做,有成功經驗;後者目前看很贊,能走多遠還須拭目以待。

http://www.zhihu.com/question/28641663/answer/41653367

機器學習中,有哪些特徵選擇的工程方法?

特徵選擇是特徵工程中的重要問題(另一個重要的問題是特徵提取),坊間常說:數據和特徵決定了機器學習的上限,而模型和算法只是逼近這個上限而已。由此可見,特徵工程尤其是特徵選擇在機器學習中佔有相當重要的地位。機器學習做得好不好,被數據和模型共同影響,比如說,數據本身不可分,那麼SVM等分類算法再牛逼,也不能完全正確分開。數據集本身是有內在特性的,數據集本身的特徵決定了機器學習的上限。所以,一個機器學習算法可能在數據集A上效果很好,但在數據集B上效果很差,這是很正常的現象,因為數據集A和B的內在特性不一樣。我以前學別人使用GBDT提取特徵,別人使用GBDT提取特徵,可以使分類效果提升,但是,我使用了GBDT提特徵,並沒有使效果提升。因為數據集特性不一樣。所以,數據集的特性決定了算法能達到效果的上限。

通常而言,特徵選擇是指選擇獲得相應模型和算法最好性能的特徵集,工程上常用的方法有以下:

1.計算每一個特徵與響應變量的相關性:工程上常用的手段有計算皮爾遜係數和互信息係數,皮爾遜係數只能衡量線性相關性而互信息係數能夠很好地度量各種相關性,但是計算相對複雜一些,好在很多toolkit裡邊都包含了這個工具(如sklearn的MINE),得到相關性之後就可以排序選擇特徵了.(其實就是計算輸出關於輸入的導數,如果某個特徵很大程度上影響了輸出,那麼該特徵就會比較重要)。

2. 構建單個特徵的模型,通過模型的準確性為特徵排序,藉此來選擇特徵,另外,記得JMLR'03上有一篇論文介紹了一種基於決策樹的特徵選擇方法,本質上是等價的。當選擇到了目標特徵之後,再用來訓練最終的模型;

3. 通過L1正則項來選擇特徵:L1正則方法具有稀疏解的特性,因此天然具備特徵選擇的特性,但是要注意,L1沒有選到的特徵不代表不重要,原因是兩個具有高相關性的特徵可能只保留了一個,如果要確定哪個特徵重要應再通過L2正則方法交叉檢驗;

4. 訓練能夠對特徵打分的預選模型:RandomForest和Logistic Regression等都能對模型的特徵打分,通過打分獲得相關性後再訓練最終模型;

5. 通過特徵組合後再來選擇特徵:如對用戶id和用戶特徵最組合來獲得較大的特徵集再來選擇特徵,這種做法在推薦系統和廣告系統中比較常見,這也是所謂億級甚至十億級特徵的主要來源,原因是用戶數據比較稀疏,組合特徵能夠同時兼顧全局模型和個性化模型,這個問題有機會可以展開講。

6. 通過深度學習來進行特徵選擇:目前這種手段正在隨著深度學習的流行而成為一種手段,尤其是在計算機視覺領域,原因是深度學習具有自動學習特徵的能力,這也是深度學習又叫unsupervisedfeature learning的原因。從深度學習模型中選擇某一神經層的特徵後就可以用來進行最終目標模型的訓練了。

http://www.zhihu.com/question/34271604

在廣告LR模型中,為什麼要做特徵組合?

在業界,LR模型之所以很受歡迎,主要是因為LR模型本質是對數線性模型,實現簡單,易於並行,大規模擴展方便,迭代速度快,同時使用的特徵比較好解釋,預測輸出在0與1之間契合概率模型。(模型的可解釋性舉例,比如A-B的權重比較大,A代表用戶,B代表物品,那麼可以認為A是對B比較感興趣的)但是,線性模型對於非線性關係缺乏準確刻畫,特徵組合正好可以加入非線性表達,增強模型的表達能力。另外,廣告LR中,基本特徵可以認為是用於全局建模,組合特徵更加精細,是個性化建模,因為在這種大規模離散LR中,單對全局建模會對部分用戶有偏,對每一用戶建模又數據不足易過擬合同時帶來模型數量爆炸,所以基本特徵+組合特徵兼顧了全局和個性化。比如特徵向量中,有用戶A,B,C,物品E,F,G。基本的特徵A,B.C.E.F.G對應的權重,對應的是每個對象的偏置權重,但如果A偏好E,B偏好F,那麼組合特徵A-E,B-F就是對用戶的個性進行建模,組合特徵A-E,B-F的權重就是代表A對E的喜好,和B-F的喜好。

計算廣告裡面的特徵處理方法


分享到:


相關文章: