ml課程:機器學習算法串講及相關常見問題總結

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。

機器學習的兩條路線

  • 線性模型:邏輯迴歸-SVM-MLP(多層感知器
  • 樹模型:隨機森林-XGBT-lightGBM

問題1:機器學習算法有計算型和規則型這兩類的算法,請問這兩類下各自的都有哪些算法,以及您對這個分類思路的理解?

  • 計算型:LR邏輯迴歸、SVM支持向量機、NN神經元網絡等通過計算確定參量,基於閾值和得分向量進行分類而達到建立模型的目的;
  • 規則型:DT決策樹、RF隨機森林、RT迴歸樹、GBDT梯度提升樹 通過構建規則進行分類達到建模的目的。

問題2:同樣是進行分類任務,LR與決策樹在解決問題的思想上有哪些不同?

  • 邏輯迴歸LR屬於計算型算法,它通過歷史數據對未來結果發生的概率建模和預測。LR模型建立的迴歸方程描述自變量和因變量之間的關係,或者說自變量對因變量的影響程度,並對因變量進行預測。其中因變量是我們希望獲得的結果,自變量是影響結果的潛在因素。我們可以通過最小化損失函數計算出每一個特徵對應的權重,通過特徵的加權線性組合得到數值型的結果進行分類或迴歸。
  • 決策樹(Decision Tree)屬於規則型算法,它在已知各種情況發生概率的基礎上,通過構成決策樹來求取淨現值的期望值大於等於零的概率,評價項目風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種圖解法。由於這種決策分支畫成圖形很像一棵樹的枝幹,故稱決策樹。在機器學習中,決策樹是一個預測模型,他代表的是對象屬性與對象值之間的一種映射關係。

問題3:爲什麼說決策樹在進行非線性表達這個層面要優於LR?

  • 決策樹本身是建立在非線性映射的基礎上的,一般情況下它不能把因變量與元變量之間的關係表達爲線性方程的方式。

  • 邏輯迴歸算法是建立在線性映射的基礎上的,基於線性方程的模型。除非特徵本身是非線性的,不然邏輯迴歸無法處理非線性問題。

問題4:樹模型相對LR等線性模型的優點?

  • 不需要幅度縮放和歸一化
  • 可以進行非線性切分非線性的特徵,而LR擬合非線性則需要對特徵做非線性變換
  • 樹模型不需要對離散值進行處理就可以訓練
  • 像xgboost等融合算法可以自動處理缺失值
  • 樹與樹之間支持並行運算

問題5:請解釋決策樹結構中的各個組成部分?

  • 根節點:最原始的數據集
  • 內部節點:對應於某個屬性上的測試
  • 分支:對應於該測試的一種可能結果
  • 葉子節點:對應於一個預測結果
  • 決策樹模型由結點和(有向)邊組成。

  • 結點分成有內部結點和葉結點兩種類型。內部結點表示一個特徵,葉節點表示一個類別。 一個決策樹包含三種類型的節點:決策節點:通常用矩形框來表示,機會節點:通常用圓圈來表示,終結點:通常用三角形來表示

  • 使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作爲決策結果。(參考

問題6:決策樹是如何完成迴歸任務的?

  • 把整個特徵空間X切分成J個沒有重疊的區域R1,R2,R3...Rj
  • 自頂向下貪婪式的遞歸
  • 其中區域Rj中的每個樣本我們都給一樣的預測結果\tilde{y_{Rj}} = \frac{1}{n}\sum_{j\in Rj}y_{i},其中n是Rj中的總樣本數

機器學習類型:

  • 非監督學習:聚類、降維、關聯規則、主題模型LDA
  • 監督學習:分類和迴歸。
  • 強化學習。

問題1:常見的機器學習任務有哪幾大類別,具體說說每個類別又有哪些應用?

  • 迴歸方法:是一種對數值型連續隨機變量進行預測和建模的監督學習算法,也就是根據之前的數據建模,然後根據新的輸入預測出一個準確的輸出值。使用案例一般包括房價預測、股票走勢或測試成績等連續變化的案例。迴歸任務的特點是標註的數據集具有數值型的目標變量。也就是說,每一個觀察樣本都有一個數值型的標註真值以監督算法。
  • 分類方法:是一種對離散型隨機變量建模或預測的監督學習算法,也就是將事物打上一個標籤。使用案例包括郵件過濾、金融欺詐和預測僱員異動等輸出爲類別的任務。許多回歸算法都有與其相對應的分類算法,分類算法通常適用於預測一個類別(或類別的概率)而不是連續的數值。
  • 聚類:是一種無監督學習任務,該算法基於數據的內部結構尋找觀察樣本的自然族羣(即集羣)。使用案例包括細分客戶、新聞聚類、文章推薦等。因爲聚類是一種無監督學習(即數據沒有標註),並且通常使用數據可視化評價結果。如果存在「正確的回答」(即在訓練集中存在預標註的集羣),那麼分類算法可能更加合適。

問題2:機器學習的學習策略大致可分爲有監督學習與無監督學習,請談談您對這兩類策略的認識。

  • 監督學習:從給定的訓練數據集中學習出一個函數,當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特徵和目標。訓練集中的目標是由人標註的。常見的監督學習算法包括迴歸分析和統計分類。
  • 無監督學習:與監督學習相比,無監督學習的訓練集沒有人爲標註的結果。常見的無監督學習算法有生成對抗網絡(GAN)、聚類。監督學習和非監督學習的差別就是訓練集目標是否人標註,他們都有訓練集且都有輸入和輸出。
  • 增強學習/強化學習:通過觀察來學習做成如何的動作。每個動作都會對環境有所影響,學習對象根據觀察到的周圍環境的反饋來做出判斷。

問題3:列舉你所知道的機器學習任務中的一些術語並給出解釋。(例如,特徵,標籤,訓練等)

  • 標籤:是我們要預測的事物,即簡單線性迴歸中的 y 變量。
  • 特徵:是輸入變量,即簡單線性迴歸中的 x 變量。簡單的機器學習項目可能會使用單個特徵,而比較複雜的機器學習項目可能會使用數百萬個特徵。
  • 樣本:是指數據的特定實例。樣本可以分爲兩類:①有標籤樣本,②無標籤樣本,有標籤樣本同時包含特徵和標籤。
  • 模型:定義了特徵與標籤之間的關係。
  • 訓練:表示創建或學習模型。通過向模型展示有標籤樣本,讓模型逐漸學習特徵與標籤之間的關係。
  • 推斷:表示將訓練後的模型應用於無標籤樣本,也就是說,使用訓練後的模型來做出有用的預測 (y')。

問題4:GBDT 和 XGBOOST 的區別有哪些?

  • 傳統GBDT以CART作爲基分類器,xgboost還支持線性分類器,這個時候xgboost相當於帶L1和L2正則化項的邏輯斯蒂迴歸(分類問題)或者線性迴歸(迴歸問題)。
  • 傳統GBDT在優化時只用到一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階和二階導數。順便提一下,xgboost工具支持自定義代價函數,只要函數可一階和二階求導。
  • xgboost在代價函數里加入了正則項,用於控制模型的複雜度。正則項裏包含了樹的葉子節點個數、每個葉子節點上輸出的score的L2模的平方和。從Bias-variance tradeoff角度來講,正則項降低了模型的variance,使學習出來的模型更加簡單,防止過擬合,這也是xgboost優於傳統GBDT的一個特性。

  • Shrinkage(縮減),相當於學習速率(xgboost中的eta)。xgboost在進行完一次迭代後,會將葉子節點的權重乘上該係數,主要是爲了削弱每棵樹的影響,讓後面有更大的學習空間。實際應用中,一般把eta設置得小一點,然後迭代次數設置得大一點。(補充:傳統GBDT的實現也有學習速率)

  • 列抽樣(column subsampling)。xgboost借鑑了隨機森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計算,這也是xgboost異於傳統gbdt的一個特性。
  • 對缺失值的處理。對於特徵的值有缺失的樣本,xgboost可以自動學習出它的分裂方向。
  • xgboost工具支持並行。boosting不是一種串行的結構嗎?怎麼並行的?注意xgboost的並行不是tree粒度的並行,xgboost也是一次迭代完才能進行下一次迭代的(第t次迭代的代價函數裏包含了前面t-1次迭代的預測值)。xgboost的並行是在特徵粒度上的。我們知道,決策樹的學習最耗時的一個步驟就是對特徵的值進行排序(因爲要確定最佳分割點),xgboost在訓練之前,預先對數據進行了排序,然後保存爲block結構,後面的迭代中重複地使用這個結構,大大減小計算量。這個block結構也使得並行成爲了可能,在進行節點的分裂時,需要計算每個特徵的增益,最終選增益最大的那個特徵去做分裂,那麼各個特徵的增益計算就可以開多線程進行。

  • 可並行的近似直方圖算法。樹節點在進行分裂時,我們需要計算每個特徵的每個分割點對應的增益,即用貪心法枚舉所有可能的分割點。當數據無法一次載入內存或者在分佈式情況下,貪心算法效率就會變得很低,所以xgboost還提出了一種可並行的近似直方圖算法,用於高效地生成候選的分割點。

問題5:xgboost代價函數里加入正則項,是否優於cart的剪枝?

  • 決策樹的學習過程就是爲了找出最優的決策樹,然而從函數空間裏所有的決策樹中找出最優的決策樹是NP-C問題,所以常採用啓發式(Heuristic)的方法,如CART裏面的優化GINI指數、剪枝、控制樹的深度。這些啓發式方法的背後往往隱含了一個目標函數,這也是大部分人經常忽視掉的。xgboost的目標函數如下:

    其中正則項控制着模型的複雜度,包括了葉子節點數目T和leaf score的L2模的平方:

    那這個跟剪枝有什麼關係呢??? 跳過一系列推導,我們直接來看xgboost中樹節點分裂時所採用的公式:

    這個公式形式上跟ID3算法(採用entropy計算增益) 、CART算法(採用gini指數計算增益) 是一致的,都是用分裂後的某種值 減去 分裂前的某種值,從而得到增益。爲了限制樹的生長,我們可以加入閾值,當增益大於閾值時才讓節點分裂,上式中的gamma即閾值,它是正則項裏葉子節點數T的係數,所以xgboost在優化目標函數的同時相當於做了預剪枝。另外,上式中還有一個係數lambda,是正則項裏leaf score的L2模平方的係數,對leaf score做了平滑,也起到了防止過擬合的作用,這個是傳統GBDT裏不具備的特性。(參考一參考二

問題6:談談什麼是生成式模型與判別式模型,以及各自特點?

  • 生成模型:由數據學習聯合概率分佈𝑃(𝑋,𝑌)P(X,Y),然後求出條件概率分佈𝑃(𝑌|𝑋)P(Y|X)作爲預測的模型;特點:①可以還原出概率分佈𝑃(𝑋,𝑌)P(X,Y)、②學習收斂速度更快、③存在隱變量的時候仍然可以使用生成模型。
  • 判別模型:由數據直接學習決策函數𝑓(𝑋)f(X)或者條件概率分佈𝑃(𝑌|𝑋)P(Y|X)作爲預測的模型;特點:①直接學習的是條件概率𝑃(𝑌|𝑋)P(Y|X)或決策函數𝑓(𝑋)f(X),通常準確率更高②可以抽象、定義特徵,並增加、減少特徵,簡化學習問題。

機器學習步驟:

  • 定義假設函數:擬合x到y映射
  • 找到損失函數:logloss、交叉熵損失、合頁損失、指數損失、01損失
  • 尋求優化函數:梯度下降、牛頓法、擬牛頓法、Momentum動量算法
  • 定義評價指標和方法:具體可以看ml課程:模型融合與調優及相關案例代碼

問題1:分類和迴歸的評估指標分別有哪些?

  • 分類問題:主要有錯誤率、精度、查準率(準確率),查全率(召回率)、F1值、AUC(area under the ROC curve): 

  • 迴歸問題:mse、mae、r方、rmse等等:

問題2:什麼是損失函數?請寫出迴歸任務中的均方誤差的數學公式,並解釋

  • 損失函數(loss function)是用來估量你模型的預測值f(i)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(i))來表示,損失函數越小,模型的魯棒性就越好。公式如上圖,其中n是數據樣本數.
  • 主要分爲:mse(均方誤差損失,線性迴歸損失)、log損失(邏輯迴歸損失)、合頁損失(支持向量機損失)參考、交叉熵損失(softmax分類器損失)參考,交叉熵損失永不滿足。

問題3:簡單介紹下邏輯迴歸:

  • 邏輯迴歸雖然叫回歸,其實是通過確定決策邊界,解決的是分類問題
  • 邏輯迴歸的損失函數爲log損失,沒用mse作爲損失函數是因爲在mse上爲非凸的
  • 損失函數可以表示爲:最大化MLE=\prod p_{xi}(1-p_{xj}),但是小於零的數連乘會造成無法計算,所以取了log函數,然後取負數,求其最小值。
  • 具體求導公式參考:ml課程:線性迴歸、邏輯迴歸入門(含代碼實現)求導推倒過程

問題4:模型的泛化能力是指?

  • 泛化能力是模型中對新數據的預測能力。在實際中如果對訓練數據能很好的擬合,而對驗證集的效果較差,泛化能力較弱,可能出現過擬合。

問題5:爲什麼要爲模型添加正則化項?

  • 正則化是爲了解決過擬合問題,機器學習中幾乎都可以看到損失函數後面會添加一個額外項,常用的額外項一般有兩種,一般英文稱作ℓ1-norm和ℓ2-norm,中文稱作L1正則化和L2正則化,或者L1範數和L2範數。

  • L1正則化和L2正則化可以看做是損失函數的懲罰項。所謂『懲罰』是指對損失函數中的某些參數做一些限制。對於線性迴歸模型,使用L1正則化的模型建叫做Lasso迴歸,使用L2正則化的模型叫做Ridge迴歸(嶺迴歸)。

問題6:請結合公式進行說明結構風險最小化的含義?

  • 經驗風險最小化的公式定義爲:

  • 結構風險最小化的公式定義爲:

  • 可以看到,結構風險在經驗風險的基礎上加上了表示模型複雜度的正則項或懲罰項,防止在數據樣本小或者模型能力強的情況下出現過擬合。 𝐽(𝑓)J(f)爲模型的複雜度,模型 𝑓f 越複雜,𝐽(𝑓)J(f)越大。𝜆>=0λ>=0是權衡經驗風險和模型複雜度的係數。

To be continue......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章