- 結構化數據(表)
- 半結構化數據(文本,日志)
- 非結構化數據(圖像,視頻)
- 參數空間
- 決策模型
- 概率模型
- 或者
- 生成模型:由數據學習聯合概率分布P(X,Y),然后求出條件概率分布P(Y|X)作為預測的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。(樸素貝葉斯)
- 生成模型可以還原聯合概率分布p(X,Y),并且有較快的學習收斂速度,還可以用于隱變量的學習
- 判別模型:由數據直接學習決策函數Y=f(X)或者條件概率分布P(Y|X)作為預測的模型,即判別模型。(k近鄰、決策樹)
- 直接面對預測,往往準確率較高,直接對數據在各種程度上的抽象,所以可以簡化模型
- 準則
-
實質公式場景對參數的看法利用的信息最小化結構風險loss+正則
最大似然概率積
(帶正則的最大似然)貝葉斯估計
+
把參數作為先驗知識 -
根據貝葉斯定理,后驗函數正比于似然函數乘以先驗概率,所以后驗概率函數一般表達如:
? ? ? ? 貝葉斯估計中的先驗概率其實就相當于最小化結構風險函數中的正則項,若先驗為拉普拉斯分布,則為L1,若先驗為高斯分布,則為L2
- 算法
- 最優化方法
(二)數據
1.常見抽樣方法
(1)簡單隨機抽樣:無放回抽樣,有放回抽樣
(2)分層抽樣
2.類別樣本不平衡的解決方法(假設負樣本遠遠大于正樣本數量)
(1)欠采樣:對負樣本進行欠采樣;一般不單純地進行欠采樣,而是結合集成學習來進行欠采樣;將負樣本劃分為若干個集合供不同分類器使用,這樣對每個分類器來看都進行了欠采樣,但在全局來看卻不會丟失重要信息;
(2)重采樣:對正樣本進行重采樣;一般不單純地進行重采樣,而是對正樣本進行插值等來產生新的正樣本;
(3)閾值移動:不是簡單地將概率閾值0.5作為正負樣本的區分界限,若負樣本過多,那么正樣本的閾值將往低于0.5方向調整;
3.處理數據缺失的常用方法:
(1)用平均值、中值、分位數、眾數、隨機值等替代;
(2)通過建模,使用其他變量來預測缺失值;
(3)將變量映射到高維空間:比如性別變量有男,女以及缺失3種情況,則映射為3個變量:是否男,是否女,是否缺失;
(4)整列刪除
4.構造線下驗證集的常用方法:
(1)hold-out-validation:將線下數據隨機劃分為一大一小兩部分,大的為訓練集,小的為驗證集,重復若干次;(典型做法是三七分)
(2)cross-validation:將線下數據劃分為k份,每次只用k-1份來訓練,剩下的1份作為驗證集,重復k次;(典型做法是k取10,k偏小則欠擬合,k偏大樣本增多則過擬合)
(3)bootstrapping:從原始數據集D中有放回地采樣,得到同樣大小的D1,D1作為訓練集,D-D1作為驗證集;
PS:
1)訓練集與驗證集的劃分要盡可能保持數據分布的一致性,避免因數據劃分過程引入額外的偏差而對最終結果產生影響,例如在分類任務中至少要保持樣本的類別比例相似;如果從采樣的角度來看待數據集的劃分過程,則保留類別比例的采樣方式通常稱為“分層采樣”;
2)驗證集較小時,評估結果的方差較大,過擬合;訓練集較小時,評估結果的偏差較大,欠擬合;
3)leave-one-out是k-fold cross-validation的特殊例子,只留一個樣本做驗證集;評估結果往往比較準確,但是不適用于大樣本數據;(訓練的計算開銷太大)
4)bootstrapping可以產生多個不同的訓練集,適用于ensemble learning;同時,由于重復采樣,所以會改變初始訓練集的分布,造成樣本泄露,因此一般適用于小樣本,在數據量足夠的情況下,常采用hold-out-validation或者cross-validation;
5.常見的離線評價指標:
(1)準確率(Accuracy)與平均準確率(Average Per-class Accuracy)
其中平均準確率是對各個類的準確率取平均值
(2)混淆矩陣:對二分類結果進行詳細表述的一個矩陣
怎么畫出X軸Y軸
適用于/優點關注范圍用一個值衡量的話?缺點
ROC
通過改變0.5這個閾值使得真陽性和假陽性變化假陽性真陽性排序質量單個集合AUC假設平衡PRCPercision/RecallPercisionRecall不平衡整體F1比較不平滑
6.常見的在線評價指標——A/B test
7.驗證集和測試集的區別
驗證集:用于調整子模型或者其超參數,做模型選擇
測試集:用來評測多個最終模型
如果采用 k-折交叉驗證等重采樣方法,尤其當重采樣方法已經被嵌套在模型驗證中時,「驗證數據集」和「測試數據集」的概念可能會淡化
(三)特征
1.冗余特征
(1)冗余特征指的是其所包含的信息能從其他特征中推演出來;
(2)去除冗余特征會減輕學習過程的負擔,增加冗余特征會降低學習任務的難度;
2.特征選擇:從給定的特征集合中選擇出相關特征子集的過程稱作“特征選擇”;其中包括子集搜索問題與子集評價問題:
(1)子集搜索:前向搜索(逐漸往子集增加特征),后向搜索(逐漸往全集剔除特征)
(2)子集評價:信息增益,基尼指數
PS:
(1)子集搜索中的前后向搜索都是貪心策略,所以不一定是最優,這是不進行窮舉搜索所無法避免的;
(2)將特征子集搜索機制與子集評價機制相結合,可以得到特征選擇方法,例如前向搜索與信息熵結合,得到的是決策樹的特征選擇方法;
3.特征選擇常見方法:過濾式(filter),包裹式(wrapper),嵌入式(embedding)
(1)過濾式 Filter:
根據CHI,PCA等降維
先做特征選擇,再訓練學習器
優點: 快速, 只需要基礎統計知識, 特征選擇過程與后續的學習器的訓練沒有關系 。
缺點:特征之間的組合效應難以挖掘。
(2)包裹式 Wrapper :
根據效果好的算法的結果搜索 “量身定做”的特征子集
優點: 直接面向算法優化,從最終學習性能來看,包裹式比過濾式更好,不需要太多知識。
缺點: 龐大的搜索空間, 需要定義啟發式策略。
(3)嵌入式Embedded:
將特征選擇與學習器訓練融為一體使用各種的稀疏和懲罰項
優點: 快速, 并且面向算法,兩者在同一個優化過程中完成,即在學習器訓練過程中自動地進行了特征選擇。
缺點: 需要調整結構和參數配置, 而這需要深入的知識和經驗。
(四)模型
1.模型選擇的常用方法:
(1)正則化
(2)交叉驗證
PS:當假設空間含有不同的復雜度(例如,不同的參數個數)的模型時,就要面臨模型選擇的問題;
2.過擬合與欠擬合
(1)過擬合是模型的學習能力太強,把樣本的噪聲都學習進去;
(2)欠擬合是模型的學習能力太弱,連樣本的一般特性都沒有學習進去;
3.泛化能力與泛化誤差上界
(1)泛化能力是指由該方法學習到的模型對未知數據的預測能力,是學習方法本質上最重要的性質;
(2)泛化誤差上界:訓練誤差越小,泛化誤差上界也越小;樣本容量越大,泛化誤差上界也越小;模型越復雜,泛化誤差上界越大;
- regularize:(規范; 使有規則; 使有秩序)
- Regularization(先驗規范化/正則化/懲罰項): 利用先驗知識,在處理過程中引入正則化因子(regulator),增加向模型收斂的哪個方面引導約束的作用,比如稀疏,比如防止過擬合,處理噪聲跟異常點。
- 通過添加正則項指定一組與原不適定問題相“鄰近”的適定問題的解,去逼近原問題的解?
- 都是通過增加模型的loss function來懲罰模型
- 正則化其實是決策模型的概念,其對應于概率模型中的貝葉斯估計;貝葉斯估計比起極大似然估計,多了參數的先驗知識;即假設模型參數是符合一個先驗的概率分布的
- 通過把(權重為0的個數)這樣的正則項加入,降低了權值的維度,從而提高了在一定數據樣本上的泛化能力
-
別名意義公式對特征的效果性能作用過擬合下降的梯度假設參數服從的分布L0
sigma(x==0)稀疏差一點
L1lasso權重絕對值loss + |xi| 產生稀疏的特征求導較困難特征選擇防止過擬合斜率拉普拉斯L2ridge嶺權重平方和loss + sigma(xi^2)選擇更多的特征,這些特征都會接近于0最吼規則化防止過擬合二次
高斯
-
- 這張圖里,方框是一種約束,使得模型的參數在方框里面,一圈一圈是逐漸逼近的目標函數(從紫色圈到擴散,為了滿足loss里的稀疏條件),其中w2或者w1=0的點就是稀疏點,所以交點就是滿足正則化同時達到一定模型性能的模型點,因為L1一般會用=0的位置(即角)相交于模型(稀疏點,lasso點,模型點三點一致),L2一般會讓模型靠近0,從而防止過擬合,但是模型從哪個方向靠近0都是沒關系的,只關心均方差就可以
- Normalization 歸一化 :把數據變為(0,1)之間的小數 , 消除量綱。
-
公式minmax
零均值(Z-score)減去均值,乘以方差:y=(x-means)/ variance對數y=lg (x)arctany=arctan(x)*2/PI - 比最大最小歸一化更好的方法是歸一到Z值,也就是說,特征值距離它的平均值有多遠,并除去本身的標準差,Batch norm的源頭
- 歸一化可以處理量綱問題,有利于優化迭代速度(梯度下降),提高精度(KNN)
Standardization 標準化:是將數據按比例縮放,使之落入一個小的特定區間(如,0均值)
Logisticy=1/(1+e^(-x))
數據分布很遠可導,廣泛應用
5.常用的防止過擬合的方法:
(1)數據集擴增
(2)正則化:約束參數大小
6.bias與variance
(1)bias:結果和預測的偏差,擬合誤差,表示模型的擬合能力,偏差越小,模型的擬合能力越強;(寬廣網的DNN部分)
擬合誤差表示是否已經把線偏差到指定位置
(2)variance:結果和預測的方差,泛化誤差,表示模型的泛化能力,方差越小,模型的泛化能力越強;(寬廣網的LR部分)
方差表示這根線有多符合這個驗證集
(3)error = bias + variance
是個問題
7.調試性能較差的分類器
- 對于出現了高方差(過擬合)
- 增加更多的數據,降低模型復雜度
- ill-condition,可以用L2正則化處理,或者檢查數據,重新搜索參數
- 對于出現了高偏差(欠擬合)
- 增加模型復雜度,或者嘗試別的模型
- 改變目標:
- 訓練和測試數據不均衡的情況下,應該關注準確率和召回率
- 注意的問題:很低的訓練誤差,甚至是0不一定很好,只是有可能出現了N小于P的情況,樣本數小于特征數
8.模型參數與超參數
(1)機器學習模型建立過程其實是一個參數學習與調優的過程,參數包括模型參數與超參數;
(2)模型參數使指通過模型訓練中的學習算法而進行調整的,而模型超參數不是通過學習算法而來的,但是同樣也需要進行調優,比如特征的維數等;
(3)常見的調參方法有:網格搜索,隨機搜索,啟發式搜索;
(4)調參是通過線下驗證集進行的;
9.VC維(Vapnik-Chervonenkis Dimension):VC維是統計學習理論中的一個核心概念,它是目前為止對函數集學習性能的最好描述指標
(1)shatter(打散)概念:給定訓練樣本集合x1,x2,...,xn;,其中每個樣本有兩個可選的label(+1, -1),因此總共有2的n次方種不同的label組合;如果對于其中每一種組合,分類模型(函數集) F 都能夠對其進行正確的劃分,那么我們稱 F 能夠將訓練樣本集合打散(shatter);

上圖共有3個樣本,可以看到,對于樣本的任意一種label組合,圖中的直線都可以將正樣本和負樣本分開;這時我們稱這條直線可以將這三個樣本打散(shatter);

上圖中顯示了四個樣本,如果只用一條直線,那么無論這條直線怎么劃都不能將正負樣本分開;
(2)VC維的概念:指函數集H能夠打散的最大樣本數稱為H的VC維;
(3)對于一個模型來說,其VC維越大,則其模型復雜度越高,需要更多的訓練數據,因此為了防止過擬合,加入正則項,其實也就是降低模型的VC維;
(4)一個機器學習模型想要取得好的效果,這個模型需要滿足以下兩個條件:
1. 模型在我們的訓練數據上的表現要不錯,也就是 trainning error 要足夠小。
2. 模型的 vc-dimension 要低。換句話說,就是模型的自由度不能太大,以防overfit.
換句話說,模型的維度大的容易過擬合,而數據量小的容易過擬合
PS:線性SVM的VC維為d+1(任何線性分類器的VC維都是d+1);高斯核函數的VC維為無窮大;NN(Neural Networks )的VC維為參數量;樹模型的vc維度很接近樣本
10.集成學習(ensemble learning)的常用方法:
(1)bagging:訓練不同的模型,對預測結果取均值或者投票等(減小variance,增強泛化);
(2)boosting:迭代算法,在上一次分類結果上進行迭代調整(減小bias,增強擬合);
(3)stacking/cascade:訓練不同的模型,用每個模型的預測作為輸入,訓練新的模型;
11.多分類的常見方法(假設N個類)
(1)one vs rest:構建N個分類器,每個分類器依次將每個類做為正樣本,剩余的類作為負樣本
(2)one vs one:構建N*(N-1)/2個分類器,每個分類器選擇兩個類的樣本進行訓練
- 區別:如果模型是參數的線性函數,并且存在線性分類面,那么就是線性分類器,否則不是。
- 常見的線性分類器有:LR,貝葉斯分類,單層感知機、線性回歸
- 常見的非線性分類器:決策樹、RF、GBDT、多層感知機




- deal(即團購單,下同)維度的特征:主要是deal本身的一些屬性,包括價格、折扣、銷量、評分、類別、點擊率等
- user維度的特征:包括用戶等級、用戶的人口屬性、用戶的客戶端類型等
- user、deal的交叉特征:包括用戶對deal的點擊、收藏、購買等
- 距離特征:包括用戶的實時地理位置、常去地理位置、工作地、居住地等與poi的距離


通用模型舉隅
排序層
模型集成方法:
Bagging
【切分數據集,結果加權】Bagging試圖在小樣本集上實現相似的學習模塊,然后對預測值求平均值。對于Bagging一般來說,你可以在不同數據集上使用不同學習模塊。正如你所期望的那樣,這樣可以幫助我們減少方差,增強泛化。
Boosting
【誤差梯度下降】Boosting是一項迭代技術,它在上一次分類的基礎上調整觀測值的權重。如果觀測值被錯誤分類,它就會增加這個觀測值的權重,反之亦然。Boosting一般會減少偏置誤差然后構建強大的預測模型。但是,有些時候它們也會在訓練數據上過擬合。
Stacking
【簡單的blending】訓練集中取子集,交叉訓練基模型,再用總模型匯總。這樣做可以減少偏置誤差和方差(泛化誤差)。
線性stacking:
用線性模型做最終模型,這樣就能看見每個模型的權重
二次線性stacking:
把模型的輸出和他們之間結果的組合一起作為最終模型的輸入
- 不標準化數據
- 使用z標準化
- 使用0-1標準化