http://www.zhihu.com/question/31989952
連續(xù)特征的離散化:在什么情況下將連續(xù)的特征離散化之后可以獲得更好的效果?
Q:CTR預估,發(fā)現(xiàn)CTR預估一般都是用LR,而且特征都是離散的。為什么一定要用離散特征呢?這樣做的好處在哪里?
A:
在工業(yè)界,很少直接將連續(xù)值作為邏輯回歸模型的特征輸入,而是將連續(xù)特征離散化為一系列0、1特征交給邏輯回歸模型,這樣做的優(yōu)勢有以下幾點:
0、 離散特征的增加和減少都很容易,易于模型的快速迭代。(離散特征的增加和減少,模型也不需要調整,重新訓練是必須的,相比貝葉斯推斷方法或者樹模型方法迭代快)
1、稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展;
2、離散化后的特征對異常數(shù)據(jù)有很強的魯棒性:比如一個特征是年齡>30是1,否則0。如果特征沒有離散化,一個異常數(shù)據(jù)“年齡300歲”會給模型造成很大的干擾;離散化后年齡300歲也只對應于一個權重,如果訓練數(shù)據(jù)中沒有出現(xiàn)特征"年齡-300歲",那么在LR模型中,其權重對應于0,所以,即使測試數(shù)據(jù)中出現(xiàn)特征"年齡-300歲",也不會對預測結果產生影響。特征離散化的過程,比如特征A,如果當做連續(xù)特征使用,在LR模型中,A會對應一個權重w,如果離散化,那么A就拓展為特征A-1,A-2,A-3...,每個特征對應于一個權重,如果訓練樣本中沒有出現(xiàn)特征A-4,那么訓練的模型對于A-4就沒有權重,如果測試樣本中出現(xiàn)特征A-4,該特征A-4也不會起作用。相當于無效。但是,如果使用連續(xù)特征,在LR模型中,y = w*a,a是特征,w是a對應的權重,比如a代表年齡,那么a的取值范圍是[0..100],如果測試樣本中,出現(xiàn)了一個測試用例,a的取值是300,顯然a是異常值,但是w*a還是有值,而且值還非常大,所以,異常值會對最后結果產生非常大的影響。
3、邏輯回歸屬于廣義線性模型,表達能力受限;單變量離散化為N個后,每個變量有單獨的權重,相當于為模型引入了非線性,能夠提升模型表達能力,加大擬合;在LR模型中,特征A作為連續(xù)特征對應的權重是Wa。A是線性特征,因為y = Wa*A,y對于A的導數(shù)就是Wa,如果離散化后,A按區(qū)間離散化為A_1,A_2,A_3。那么y = w_1*A_1+w_2*A_2+w_3*A_3.那么y對于A的函數(shù)就相當于分段的線性函數(shù),y對于A的導數(shù)也隨A的取值變動,所以,相當于引入了非線性。
4、 離散化后可以進行特征交叉,加入特征A 離散化為M個值,特征B離散為N個值,那么交叉之后會有M*N個變量,進一步引入非線性,提升表達能力;
5、特征離散化后,模型會更穩(wěn)定,比如如果對用戶年齡離散化,20-30作為一個區(qū)間,不會因為一個用戶年齡長了一歲就變成一個完全不同的人。當然處于區(qū)間相鄰處的樣本會剛好相反,所以怎么劃分區(qū)間是門學問;按區(qū)間離散化,劃分區(qū)間是非常關鍵的。
6、特征離散化以后,起到了簡化了邏輯回歸模型的作用,降低了模型過擬合的風險。(當使用連續(xù)特征時,一個特征對應于一個權重,那么,如果這個特征權重較大,模型就會很依賴于這個特征,這個特征的一個微小變化可能會導致最終結果產生很大的變化,這樣子的模型很危險,當遇到新樣本的時候很可能因為對這個特征過分敏感而得到錯誤的分類結果,也就是泛化能力差,容易過擬合。而使用離散特征的時候,一個特征變成了多個,權重也變?yōu)槎鄠€,那么之前連續(xù)特征對模型的影響力就被分散弱化了,從而降低了過擬合的風險。)
李沐曾經說過:模型是使用離散特征還是連續(xù)特征,其實是一個“海量離散特征+簡單模型” 同 “少量連續(xù)特征+復雜模型”的權衡。既可以離散化用線性模型,也可以用連續(xù)特征加深度學習。就看是喜歡折騰特征還是折騰模型了。通常來說,前者容易,而且可以n個人一起并行做,有成功經驗;后者目前看很贊,能走多遠還須拭目以待。
http://www.zhihu.com/question/28641663/answer/41653367
機器學習中,有哪些特征選擇的工程方法?
特征選擇是特征工程中的重要問題(另一個重要的問題是特征提取),坊間常說:數(shù)據(jù)和特征決定了機器學習的上限,而模型和算法只是逼近這個上限而已。由此可見,特征工程尤其是特征選擇在機器學習中占有相當重要的地位。機器學習做得好不好,被數(shù)據(jù)和模型共同影響,比如說,數(shù)據(jù)本身不可分,那么SVM等分類算法再牛逼,也不能完全正確分開。數(shù)據(jù)集本身是有內在特性的,數(shù)據(jù)集本身的特征決定了機器學習的上限。所以,一個機器學習算法可能在數(shù)據(jù)集A上效果很好,但在數(shù)據(jù)集B上效果很差,這是很正常的現(xiàn)象,因為數(shù)據(jù)集A和B的內在特性不一樣。我以前學別人使用GBDT提取特征,別人使用GBDT提取特征,可以使分類效果提升,但是,我使用了GBDT提特征,并沒有使效果提升。因為數(shù)據(jù)集特性不一樣。所以,數(shù)據(jù)集的特性決定了算法能達到效果的上限。
通常而言,特征選擇是指選擇獲得相應模型和算法最好性能的特征集,工程上常用的方法有以下:
1.計算每一個特征與響應變量的相關性:工程上常用的手段有計算皮爾遜系數(shù)和互信息系數(shù),皮爾遜系數(shù)只能衡量線性相關性而互信息系數(shù)能夠很好地度量各種相關性,但是計算相對復雜一些,好在很多toolkit里邊都包含了這個工具(如sklearn的MINE),得到相關性之后就可以排序選擇特征了.(其實就是計算輸出關于輸入的導數(shù),如果某個特征很大程度上影響了輸出,那么該特征就會比較重要)。
2. 構建單個特征的模型,通過模型的準確性為特征排序,借此來選擇特征,另外,記得JMLR'03上有一篇論文介紹了一種基于決策樹的特征選擇方法,本質上是等價的。當選擇到了目標特征之后,再用來訓練最終的模型;
3.?通過L1正則項來選擇特征:L1正則方法具有稀疏解的特性,因此天然具備特征選擇的特性,但是要注意,L1沒有選到的特征不代表不重要,原因是兩個具有高相關性的特征可能只保留了一個,如果要確定哪個特征重要應再通過L2正則方法交叉檢驗;
4. 訓練能夠對特征打分的預選模型:RandomForest和Logistic Regression等都能對模型的特征打分,通過打分獲得相關性后再訓練最終模型;
5. 通過特征組合后再來選擇特征:如對用戶id和用戶特征最組合來獲得較大的特征集再來選擇特征,這種做法在推薦系統(tǒng)和廣告系統(tǒng)中比較常見,這也是所謂億級甚至十億級特征的主要來源,原因是用戶數(shù)據(jù)比較稀疏,組合特征能夠同時兼顧全局模型和個性化模型,這個問題有機會可以展開講。
6. 通過深度學習來進行特征選擇:目前這種手段正在隨著深度學習的流行而成為一種手段,尤其是在計算機視覺領域,原因是深度學習具有自動學習特征的能力,這也是深度學習又叫unsupervisedfeature learning的原因。從深度學習模型中選擇某一神經層的特征后就可以用來進行最終目標模型的訓練了。
這是結合sklearn的特征選擇方法: http://www.cnblogs.com/zhizhan/p/5035306.html?
在廣告LR模型中,為什么要做特征組合?
在業(yè)界,LR模型之所以很受歡迎,主要是因為LR模型本質是對數(shù)線性模型,實現(xiàn)簡單,易于并行,大規(guī)模擴展方便,迭代速度快,同時使用的特征比較好解釋,預測輸出在0與1之間契合概率模型。(模型的可解釋性舉例,比如A-B的權重比較大,A代表用戶,B代表物品,那么可以認為A是對B比較感興趣的)但是,線性模型對于非線性關系缺乏準確刻畫,特征組合正好可以加入非線性表達,增強模型的表達能力。另外,廣告LR中,基本特征可以認為是用于全局建模,組合特征更加精細,是個性化建模,因為在這種大規(guī)模離散LR中,單對全局建模會對部分用戶有偏,對每一用戶建模又數(shù)據(jù)不足易過擬合同時帶來模型數(shù)量爆炸,所以基本特征+組合特征兼顧了全局和個性化。比如特征向量中,有用戶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的喜好。
http://www.zhihu.com/question/34271604
Tips
什么是卡方檢驗?用方差來衡量某個觀測頻率和理論頻率之間差異性的方法
什么是皮爾森卡方檢驗?這是一種最常用的卡方檢驗方法,它有兩個用途:1是計算某個變量對某種分布的擬合程度,2是根據(jù)兩個觀測變量的Contingency table來計算這兩個變量是否是獨立的。主要有三個步驟:第一步用方差和的方式來計算觀測頻率和理論頻率之間卡方值;第二步算出卡方檢驗的自由度(行數(shù)-1乘以列數(shù)-1);第三步比較卡方值和對應自由度的卡方分布,判斷顯著性。
什么是p-value?簡單地說,p-value就是為了驗證假設和實際之間一致性的統(tǒng)計學意義的值,即假設檢驗。有些地方叫右尾概率,根據(jù)卡方值和自由度可以算出一個固定的p-value,
什么是響應變量(response value)?簡單地說,模型的輸入叫做explanatroy variables,模型的輸出叫做response variables,其實就是要驗證該特征對結果造成了什么樣的影響
什么是統(tǒng)計能力(statistical power)?
什么是度量(metric)?
什么是零假設(null hypothesis)?在相關性檢驗中,一般會取“兩者之間無關聯(lián)”作為零假設,而在獨立性檢驗中,一般會取“兩者之間是獨立”作為零假設。與零假設相對的是備擇假設(對立假設),即希望證明是正確的另一種可能。
什么是多重共線性?
什么是grid search?