機(jī)器學(xué)習(xí)基礎(chǔ)總結(jié)

機(jī)器學(xué)習(xí)基礎(chǔ)總結(jié)

一、其它

1. 機(jī)器學(xué)習(xí)的編程流程

  • 模型的訓(xùn)練過程

    • a. 數(shù)據(jù)的加載

    • b. 數(shù)據(jù)的清洗

    • c. 數(shù)據(jù)的分割

    • d. 數(shù)據(jù)的特征工程

    • e. 算法對象構(gòu)建

    • f. 算法模型訓(xùn)練

    • g. 算法模型的效果評估

    • h. 如果模型評估不好,那么進(jìn)入模型的調(diào)整階段,主要調(diào)整的內(nèi)容如下:

      • -1. 考慮一個數(shù)據(jù)全不全,能不能通過數(shù)據(jù)收集的方式增加更多的特征信息
      • -2. 考慮一下特征與特征之間的關(guān)系,能不能通過特征之間的融合增加一些特征信息
      • -3. 根據(jù)算法的目標(biāo)屬性的特征,可以考慮換一些算法模型
      • -4. 考慮模型的調(diào)參(超參數(shù)的優(yōu)化)
      • -5. 考慮一下集成算法(bagging、boosting、stacking)
    • i. 如果模型評估非常不錯,那么進(jìn)入模型的保存階段,主要保存方式如下:

      • 方式一:二進(jìn)制磁盤文件

        • 方式:通過sklearn中的joblib將模型保存為二進(jìn)制磁盤文件的形式
        • 優(yōu)點:簡單、對于數(shù)據(jù)的預(yù)測可以實時的預(yù)測
        • 缺點:僅支持Python語言來加載機(jī)器學(xué)習(xí)模型
      • 方式二:預(yù)測結(jié)果直接保存

        • 方式:直接使用訓(xùn)練好的模型對所有數(shù)據(jù)做一個預(yù)測,直接將預(yù)測結(jié)果保存數(shù)據(jù)庫
        • 優(yōu)點:簡單、不受語言的限制
        • 缺點:對于新數(shù)據(jù)是沒有預(yù)測結(jié)果的,只有等到下一次的模型構(gòu)建&預(yù)測的時候,對于新數(shù)據(jù)才可以產(chǎn)生預(yù)測結(jié)果
      • 方式三:模型參數(shù)保存

        • 方式:對于某些可以獲取模型參數(shù)的模型,eg:線性回歸、Logistic回歸等算法;可以直接將模型參數(shù)保存數(shù)據(jù)庫,eg:將線性回歸的θ以及截距項直接保存數(shù)據(jù)庫
        • 優(yōu)點:簡單、不受語言的限制、對數(shù)據(jù)可以實時的預(yù)測
        • 缺點:很多模型是不存在模型參數(shù)的或者說沒法獲取模型參數(shù)
  • 模型的預(yù)測過程

    • 方式一:二進(jìn)制磁盤文件

        1. 直接使用sklearn的joblib中的API加載二進(jìn)制磁盤文件形成對應(yīng)的算法模型
        1. 使用加載好的算法模型直接對數(shù)據(jù)做一個預(yù)測,并將預(yù)測結(jié)果返回給調(diào)用方
    • 方式二:預(yù)測結(jié)果直接保存

        1. 預(yù)測模塊直接根據(jù)相關(guān)信息,從數(shù)據(jù)庫中獲取預(yù)測結(jié)果
    • 方式三:模型參數(shù)保存

        1. 從數(shù)據(jù)庫中讀取模型參數(shù),然后根據(jù)算法的執(zhí)行過程,將模型參數(shù)構(gòu)建成為一個執(zhí)行算法函數(shù)
        1. 使用構(gòu)建好的算法函數(shù)對數(shù)據(jù)做一個預(yù)測,并將預(yù)測結(jié)果返回給調(diào)用方
  • 模型的更新

      1. 模型需要周期性的定時更新;因為數(shù)據(jù)會發(fā)現(xiàn)變化
      1. 模型更新后,需要考慮新模型和舊模型的效果比較

2. 算法模型的效果評估方式

  • 分類算法

    • 準(zhǔn)確率

      • 默認(rèn)的評估指標(biāo)
    • 精確率

    • 召回率

    • 混淆矩陣

    • F1值

    • ROC

    • AUC

  • 回歸算法

    • MSE

    • RMSE

    • MAE

    • R2

      • 默認(rèn)的評估指標(biāo)
  • 聚類算法

    • 輪廓系數(shù)
    • 其它衡量指標(biāo)類似分類算法的衡量指標(biāo)

3. 超參數(shù)給定的方式

    1. 根據(jù)經(jīng)驗給定
    1. 通過交叉驗證的方式給定
    1. 通過GridSearchCV網(wǎng)格參數(shù)交叉選擇驗證的方式給定

二、回歸算法

1. 線性回歸

  • a. 什么叫做線性回歸?

    • -1. 算法模型屬于回歸算法,也就是說目標(biāo)屬性y是連續(xù)值
    • -2. 如果特征屬性x和目標(biāo)屬性y之間的映射關(guān)系是一個線性關(guān)系,那么構(gòu)建的這樣的一個模型就叫做線性回歸
  • b. 線性回歸的損失函數(shù)是什么?

    • -1. 什么叫做損失函數(shù)?

      • 確定模型優(yōu)化方向的一個函數(shù),該函數(shù)體現(xiàn)的是預(yù)測值和實際值之間的差值信息;當(dāng)差值越小的時候,也就是損失函數(shù)越小的時候,模型最優(yōu);通過這種損失函數(shù)的定義可以將模型的優(yōu)化過程轉(zhuǎn)換為對損失函數(shù)最小值的求解過程。
    • -2. 常見的損失函數(shù)

      • 最小平方和損失函數(shù)(最小二乘的損失函數(shù))

        • 線性回歸算法中默認(rèn)
      • 交叉熵?fù)p失函數(shù)

    • -3. NOTE

      • 機(jī)器學(xué)習(xí)中損失函數(shù)是固定的,eg:線性回歸使用的就是最小平方和損失函數(shù)、Logistic回歸使用的交叉熵?fù)p失函數(shù)....

      • 深度學(xué)習(xí)中一般情況下:

        • 回歸的應(yīng)用

          • 最小平方和損失函數(shù)
        • 分類的應(yīng)用

          • 交叉熵?fù)p失函數(shù)
  • c. 線性回歸算法的求解方式是什么?

    • 直接對損失函數(shù)基于線性代數(shù)的方式計算最小值(最小二乘的解決)

    • 梯度下降

      • 批量的梯度下降

      • 隨機(jī)梯度下降

        • 在大規(guī)模數(shù)據(jù)集的訓(xùn)練過程中,建議使用該方式
      • 小批量的梯度下降

  • d. 線性回歸存在什么問題?

    • 因為在線性回歸中,是假定特征屬性x和目標(biāo)屬性y之間存在的映射關(guān)系是線性關(guān)系,但是在實際的業(yè)務(wù)數(shù)據(jù)上,x和y之間的關(guān)系有可能不是屬于線性關(guān)系的,所以直接使用線性回歸來做模型效果就不太好。解決方案:多項式線性回歸
  • e. 擴(kuò)展的其它的線性回歸算法

    • 多項式線性回歸
    • Lasso
    • Ridge
    • Elastic Net

2. 欠擬合

  • 問題描述:模型沒有提取出訓(xùn)練數(shù)據(jù)集上的數(shù)據(jù)特性,從而導(dǎo)致訓(xùn)練出來的模型在訓(xùn)練數(shù)據(jù)集上的效果都不佳。

  • 產(chǎn)生的原因:

    • 模型的學(xué)習(xí)能力太弱
    • 數(shù)據(jù)集不適合當(dāng)前模型
    • 數(shù)據(jù)集中的樣本數(shù)目太少
  • 解決方案:

    • 換一種強(qiáng)學(xué)習(xí)能力的模型
    • 使用集成學(xué)習(xí)的思想來訓(xùn)練模型
    • 進(jìn)行數(shù)據(jù)的特征工程,將數(shù)據(jù)變化為適合當(dāng)前模型的形式
    • 增加數(shù)據(jù)的特征屬性或者增加數(shù)據(jù)的樣本量
  • eg: 如何使用線性模型對非線性的數(shù)據(jù)做一個訓(xùn)練???

    • 多項式線性回歸:可以考慮先將低維空間上的數(shù)據(jù)映射到高維空間中,讓樣本數(shù)據(jù)變的更加的離散,從而讓數(shù)據(jù)變成線性數(shù)據(jù),然后再使用普通的線性回歸算法對擴(kuò)展之后的數(shù)據(jù)做一個模型訓(xùn)練(一般常見方式:多項式擴(kuò)展+線性回歸)

3. 過擬合

  • 問題描述:模型從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)了太多的訓(xùn)練數(shù)據(jù)特征信息,有可能將一些噪音的異常數(shù)據(jù)特征也學(xué)到了,從而導(dǎo)致模型在測試數(shù)據(jù)或者生產(chǎn)數(shù)據(jù)上效果不佳,但是在訓(xùn)練數(shù)據(jù)集上效果不錯。

  • 產(chǎn)生的原因:

    • 模型的學(xué)習(xí)能力太強(qiáng)
    • 數(shù)據(jù)集中的樣本數(shù)目太少
    • 數(shù)據(jù)中的噪音異常樣本比較多
  • 解決方案

    • 限制模型的學(xué)習(xí)能力(加入正則化項/加入懲罰項)

      • L1 norm

        • 在線性回歸中,也就是Lasso算法;比較容易導(dǎo)致模型參數(shù)稀疏化,比較適合特征選擇
      • L2 norm

        • 在線性回歸中,也就是Ridge算法;算法效果比較穩(wěn)定
    • 更改一下模型超參數(shù),降低一下學(xué)習(xí)能力

    • 更改模型,使用學(xué)習(xí)能力弱一點的模型

    • 使用集成算法

    • 增加樣本數(shù)據(jù)量

    • 刪除一些無用的特征屬性(降低一些噪音特征屬性的影響),同時增加一些有效特征屬性

4. 線性的分類算法

  • 思想:首先對線性回歸的算法(普通的線性回歸、Ridge等)對數(shù)據(jù)做一個線性擬合,讓其中一個類別的數(shù)據(jù),計算的函數(shù)值為正,而另外一個類別的數(shù)據(jù),計算的函數(shù)值為負(fù),從而實現(xiàn)分類的算法

  • Logistic回歸

    • 什么是logistic回歸???

      • Logistic回歸是一種二分類算法,是通過找出兩個類別之間的分割超平面,讓其中一個類別的數(shù)據(jù)位于平面的一側(cè),而另一個類別的數(shù)據(jù)位于平面的另一側(cè),從而實現(xiàn)數(shù)據(jù)的分類 ----> 首先對數(shù)據(jù)做一個線性回歸的算法,讓其中一個類別的數(shù)據(jù)為正,另外一個類別的數(shù)據(jù)為負(fù),然后使用sigmoid函數(shù)將線性回歸的函數(shù)值轉(zhuǎn)換為0~1之間的概率值,使用概率值體現(xiàn)樣本到底屬于哪個類別
    • 損失函數(shù)給定的過程(公式)

      • 思想:利用最大似然估計的方式給定損失函數(shù)

      • 步驟:

          1. 編寫樣本的聯(lián)合概率密度函數(shù)
          1. 求解對數(shù)似然函數(shù)
          1. 直接使用對數(shù)似然函數(shù)作為Logistic的損失函數(shù)
        • NOTE: 該損失函數(shù)就是交叉熵?fù)p失函數(shù)
  • softmax回歸

    • Softmax和Logistic回歸的區(qū)別?

      • Logistic回歸是一個二分類算法,是找兩個類別的線性分割平面
      • Softmax回歸是一個多分類算法,是找每個類別所服從的線性回歸模型

三、KNN

1. KNN的原理/思想:

  • 利用在樣本空間上,相似樣本是集中在同一個區(qū)域的,并且相似樣本具有相同的特征信息,也就是認(rèn)為相似樣本是具有相同的類別或者相同的預(yù)測值y;
    利用這種特性,從訓(xùn)練數(shù)據(jù)中找出和當(dāng)前待預(yù)測樣本比較相似的K個樣本,使用這K個樣本產(chǎn)生預(yù)測值;
    利用的其實是“近朱者赤近墨者黑”的思想。

2. KNN的執(zhí)行過程:

  • a. 從訓(xùn)練數(shù)據(jù)中找出和當(dāng)前待預(yù)測樣本最相似的K個樣本,將這k個樣本稱為鄰近樣本

    • -1. k如何確定?
    • -2. k個樣本如何從訓(xùn)練數(shù)據(jù)中找出?/ 如果從訓(xùn)練數(shù)據(jù)找找出最相似度的K個樣本?
  • b. 將這k個最相似的鄰近樣本的目標(biāo)屬性進(jìn)行融合得到當(dāng)前待預(yù)測樣本的預(yù)測值

    • -3. 目標(biāo)屬性如何融合?

3. KNN算法的問題:

  • -1. k如何確定?

    • k屬于超參數(shù),一般交叉驗證給定
    • k值過大或者k值過小會存在問題??? 自己補(bǔ)充
  • -2. k個樣本如何從訓(xùn)練數(shù)據(jù)中找出?/ 如果從訓(xùn)練數(shù)據(jù)找找出最相似度的K個樣本?

    • a. 最簡單的方式:遍歷所有訓(xùn)練數(shù)據(jù),計算所有訓(xùn)練數(shù)據(jù)和當(dāng)前待預(yù)測樣本的相似度,保存最相似的K個樣本即為鄰近樣本
    • NOTE: 最簡單的方式中是否存在問題?
  • -3. 如果訓(xùn)練數(shù)據(jù)的樣本量特別大,eg:1千萬樣本、1億樣本,那么在這個時候如何找最樣本的K個樣本?

    • note:KD-TREE的構(gòu)建過程,大家稍微的熟悉一下;; 自己補(bǔ)充
  • -4. 目標(biāo)屬性如何融合?

    • 分類算法

      • 默認(rèn)方式:在K個樣本中,出現(xiàn)次數(shù)最多的那個類別就是預(yù)測類別
      • 加權(quán)方式:在計算類別數(shù)目的時候,不是認(rèn)為所有樣本的權(quán)重都是一樣的,而是認(rèn)為越相似的樣本權(quán)重系數(shù)越大,那么對應(yīng)的類別權(quán)重系數(shù)也就越大,最終的預(yù)測類別是權(quán)重系數(shù)最大的那個類別
    • 回歸算法

      • 默認(rèn)方式:直接將K個樣本的目標(biāo)屬性的y值的均值作為待預(yù)測樣本的預(yù)測值
      • 加權(quán)方式:在計算類別數(shù)目的時候,不是認(rèn)為所有樣本的權(quán)重都是一樣的,而是認(rèn)為越相似的樣本權(quán)重系數(shù)越大,那么直接使用權(quán)重系數(shù)對目標(biāo)屬性y作為加權(quán)和的方式

4. KNN的優(yōu)化方式:

  • a. 在大規(guī)模數(shù)據(jù)情況下的,KNN的預(yù)測過程以及為什么需要使用KD-TREE來構(gòu)建算法---> KD-TREE
  • b. 算法模型的融合過程中為什么要使用加權(quán)的方式融合??

四、決策樹

1. 決策樹的構(gòu)建過程

  • a. 遍歷所有的特征的所有劃分方式,選擇出一個最優(yōu)劃分;那這個最優(yōu)劃分就是讓劃分之后的數(shù)據(jù)變的"更純"
  • b. 基于選擇出來的最優(yōu)劃分,將數(shù)據(jù)集分為多個子數(shù)據(jù)集
  • c. 對每個子數(shù)據(jù)集繼續(xù)采用相同的操作進(jìn)行數(shù)據(jù)的劃分,直到每個子數(shù)據(jù)集中只有一個類別的樣本數(shù)據(jù)或者樹的深度達(dá)到給定的限制條件的時候,結(jié)束構(gòu)建過程。
  • d. 對所有的子數(shù)據(jù)均進(jìn)行劃分,直到達(dá)到限制條件。

2. 決策樹構(gòu)建過程中的目的/方向:

  • 將數(shù)據(jù)劃分為不同的數(shù)據(jù)子集,劃分時候保證:每次的劃分,都是讓數(shù)據(jù)變的“更純”,也就是說讓一個子數(shù)據(jù)集中盡可能的只有一個類別的數(shù)據(jù)或者某個類別的數(shù)據(jù)出現(xiàn)的樣本占絕大多數(shù)。

  • 純度的度量

    • 分類:

      • 信息熵
      • Gini系數(shù)
      • 錯誤率
      • NOTE: 值越小越好
    • 回歸:

      • MAE
      • MSE
      • NOTE: 值越小越好

3. 決策樹的預(yù)測值如何產(chǎn)生?

  • 分類

    • a. 基于決策樹中的非葉子節(jié)點上的特征屬性的判斷條件,判斷樣本x屬于哪個葉子節(jié)點(樣本x落在那個葉子節(jié)點上)
    • b. 以樣本x所落的葉子節(jié)點中的所有訓(xùn)練數(shù)據(jù)中出現(xiàn)次數(shù)最多的那個類別作為當(dāng)前樣本x的預(yù)測值
  • 回歸

    • a. 基于決策樹中的非葉子節(jié)點上的特征屬性的判斷條件,判斷樣本x屬于哪個葉子節(jié)點(樣本x落在那個葉子節(jié)點上)
    • b. 以樣本x所落的葉子節(jié)點中的所有訓(xùn)練數(shù)據(jù)的目標(biāo)屬性y值的均值作為樣本x的預(yù)測值

4. 決策樹算法的類別

  • ID3

    • 分類決策樹、只能處理離散的特征數(shù)據(jù)、構(gòu)建的是多叉樹、特征屬性僅可以使用一次
  • C4.5

    • 分類決策樹、可以處理離散和連續(xù)的特征數(shù)據(jù)、構(gòu)建的是多叉樹、特征屬性僅可以使用一次
  • CART

    • 分類回歸決策樹、可以處理離散和連續(xù)特征數(shù)據(jù)、構(gòu)建的是二叉樹、特征屬性可以多次使用

5. 決策樹的欠擬合和過擬合

  • 欠擬合

      1. 利用增加樹深度來解決
      1. 利用集成算法Adaboost或者GBDT來解決
  • 過擬合

      1. 降低樹的復(fù)雜程度, 也就是限制一下樹的深度/規(guī)模 ---> 剪枝(大家自己擴(kuò)展整理一下)
      1. 利用集成學(xué)習(xí)中的隨機(jī)森林算法來解決

五、集成算法

1. 為什么需要使用集成算法?

  • 主要原因是單個模型存在一些問題,eg:效果不佳(欠擬合/模型的擬合能力不夠)、模型過擬合(在訓(xùn)練數(shù)據(jù)上的擬合能力太強(qiáng)/模型的學(xué)習(xí)能力太強(qiáng)),為了讓模型具有根據(jù)穩(wěn)定而且更佳效果的結(jié)果,采用使用多模型融合的一種策略,而這種策略就叫做集成算法

2. 集成算法的類別

  • a. Bagging

      1. 思想
      • 使用不同的數(shù)據(jù)集來分別訓(xùn)練模型,然后將多個不同模型的預(yù)測結(jié)果直接融合產(chǎn)生預(yù)測值
      • 產(chǎn)生數(shù)據(jù)集方式:采用有放回的重采樣的方式來產(chǎn)生不同的數(shù)據(jù)集;不同主要體現(xiàn)在兩個方面:數(shù)據(jù)的樣本數(shù)目不一樣、數(shù)據(jù)樣本不一樣
      • 多個模型的融合方式:如果是分類,那么采用多數(shù)投票;如果是回歸,那么采用均值法
      1. 效果/作用
      • 因為采用的是不同的數(shù)據(jù)集來訓(xùn)練模型的,所以每個模型考慮的樣本特征是不一樣的,所以有一些模型可能對于某些特殊特征(eg:噪音數(shù)據(jù)的特征)進(jìn)行了學(xué)習(xí),但是其它模型由于在訓(xùn)練中是不存在這些數(shù)據(jù)的,所以可能就不會學(xué)習(xí)這些特征;那么在將多個模型融合的過程中,這種比較少見的、比較特殊的特征信息在預(yù)測過程中就不會做過多的考慮;所以可以讓模型具有更高的魯棒性,從而可以緩解模型的過擬合的情況
      1. 經(jīng)典的算法
      • 隨機(jī)森林

        • 構(gòu)建的過程

            1. 從m條原始數(shù)據(jù)中使用有放回的重采樣抽取訓(xùn)練數(shù)據(jù)集m條,將抽取出來的m條數(shù)據(jù)進(jìn)行數(shù)據(jù)去重操作,得到真正用于訓(xùn)練的子數(shù)據(jù)集
            1. 利用抽取出來的子數(shù)據(jù)集來構(gòu)建決策樹模型,在決策樹的構(gòu)建過程中,在選擇劃分特征的時候,引入隨機(jī)特征劃分的策略:首先從原始特征中隨機(jī)選擇K個特征,然后從這K個特征中選擇最優(yōu)的劃分特征作為當(dāng)前節(jié)點的劃分;這種策略可以降低模型的過擬合(因為此時選擇的是局部最優(yōu)劃分)
            1. 使用上述兩個操作,迭代構(gòu)建N次,從而產(chǎn)生N個模型,這N個模型就是最終的隨機(jī)森林模型
            1. 使用構(gòu)建好的N個模型分別對待預(yù)測樣本進(jìn)行預(yù)測,然后將N個預(yù)測值做一個融合(分類:多數(shù)投票,回歸:均值)
  • b. Boosting

      1. 思想
      • 使用一種模型迭代的方式,讓每一步的模型構(gòu)建都是讓模型的最終預(yù)測變的更加的準(zhǔn)確;也就是說通過boosting這種方式,可以讓模型的預(yù)測誤差率越來越??;也就是每次模型的構(gòu)建都是需要基于之前模型的預(yù)測結(jié)果上的。
      1. 效果/作用
      • 可以提升模型的擬合能力,主要的作用就是解決模型的欠擬合
      1. 經(jīng)典的算法
      • Adaboost

        • 思想

          • 通過修改樣本的權(quán)重系數(shù),從而改變在模型構(gòu)建的時候,各個樣本預(yù)測失敗所帶來的損失函數(shù)值,讓模型在構(gòu)建的時候?qū)τ跈?quán)重系數(shù)比較大的樣本著重考慮,也就是盡可能的不要讓權(quán)重大的樣本預(yù)測失敗
          • 在模型融合的時候,對于預(yù)測比較準(zhǔn)確的基模型,給一個比較大的權(quán)重,相當(dāng)于對于預(yù)測準(zhǔn)確的模型可信度相對比較高(權(quán)重體現(xiàn)的是可信度)
        • 構(gòu)建過程

            1. 給定所有樣本初始權(quán)重一致
            1. 基于樣本以及樣本權(quán)重訓(xùn)練一個基模型,在這個基模型的構(gòu)建過程中,對于樣本權(quán)重大的樣本來講,在該基模型中,對于這些樣本預(yù)測比較準(zhǔn)確
            1. 當(dāng)當(dāng)前的基模型訓(xùn)練好后,計算出當(dāng)前基模型在訓(xùn)練數(shù)據(jù)集上的準(zhǔn)確率,基于這個準(zhǔn)確率計算當(dāng)前模型的可信度權(quán)重,準(zhǔn)確率越高,那么當(dāng)前基模型可信度權(quán)重越大,也就是表示該模型的預(yù)測結(jié)果越可靠
            1. 當(dāng)當(dāng)前的基模型訓(xùn)練好后,計算出每個訓(xùn)練樣本數(shù)據(jù)的預(yù)測情況(預(yù)測失敗or預(yù)測成功),然后根據(jù)預(yù)測情況修改樣本權(quán)重,如果預(yù)測失敗,那么樣本權(quán)重增大,讓該樣本在下一個模型構(gòu)建的時候具有更大的影響因子,如果預(yù)測成功,那么樣本權(quán)重減小。
            1. 當(dāng)錯誤率或者子模型的數(shù)目達(dá)到一定限制的時候,結(jié)束模型訓(xùn)練
        • 預(yù)測過程

          • 按照模型的訓(xùn)練過程,分別使用基礎(chǔ)模型對輸入數(shù)據(jù)進(jìn)行預(yù)測,并將預(yù)測結(jié)果進(jìn)行融合(加權(quán)和)
      • GBDT

        • 思想

          • 通過修改標(biāo)簽y值,讓每次構(gòu)建的模型的誤差都足夠小,當(dāng)模型誤差值最小時候,所對應(yīng)的標(biāo)簽值就是最優(yōu)值。所以在這個過程中,采用損失函數(shù)的梯度值作為下一個模型構(gòu)建時候的新的y值標(biāo)簽
        • 構(gòu)建過程

            1. 訓(xùn)練出基礎(chǔ)模型
            1. 基于當(dāng)前的基礎(chǔ)模型計算一下?lián)p失函數(shù)梯度值,然后更新訓(xùn)練數(shù)據(jù)中的標(biāo)簽值,使用梯度值作為標(biāo)簽值
            1. 基于標(biāo)簽值更新的數(shù)據(jù)繼續(xù)訓(xùn)練下一個模型
            1. 當(dāng)損失函數(shù)值或者子模型的數(shù)目達(dá)到一定限制的時候,結(jié)束模型訓(xùn)練
        • 預(yù)測過程

          • 所有子模型的累加值就是最終的預(yù)測值
      • XGBoost

        • 和GBDT的區(qū)別

            1. 加入模型復(fù)雜度的考慮,防止模型存在過擬合
            1. 底層構(gòu)建的時候,GBDT是串行構(gòu)建,XGBoost在選擇劃分特征的時候是并行構(gòu)建
            1. gbdt底層模型只支持決策樹,xgboost支持決策樹、線性回歸等模型
  • c. Stacking

    • 結(jié)構(gòu)

      • 使用原始數(shù)據(jù)訓(xùn)練第一層模型,然后使用第一層模型的預(yù)測值作為第二層模型的訓(xùn)練數(shù)據(jù);這里的第一層模型相當(dāng)于實現(xiàn)了數(shù)據(jù)特征提取的功能
    • 結(jié)合后面深度學(xué)習(xí)的能力來了解

3. 各中集成算法的區(qū)別

  • a. boosting和bagging有什么區(qū)別?
  • b. 隨機(jī)森林和GBDT有什么區(qū)別?
  • c. AdaBoost和GBDT有什么區(qū)別?

六、聚類算法

1. 什么叫做聚類算法? / 對于聚類算法的理解?

  • 如果我們的訓(xùn)練數(shù)據(jù)中是不存在類別標(biāo)簽信息,而且我們又需要根據(jù)數(shù)據(jù)的特征將這些數(shù)據(jù)劃分成為不同的類別,那就需要使用聚類算法

2. 經(jīng)典的聚類算法

  • KMeans算法

    • 思想

      • 通過迭代的方式,讓每次簇中心的選擇都是讓樣本數(shù)據(jù)到簇中心點的距離最小化的一個過程
    • 構(gòu)建過程

        1. 隨機(jī)初始化給定K個簇中心點
        1. 基于當(dāng)前簇中心點信息,對于所有樣本數(shù)據(jù)做一個簇的劃分;根據(jù)每個樣本到各個簇中心點的距離,選擇距離最近的簇,將當(dāng)前樣本認(rèn)為屬于該簇
        1. 基于當(dāng)前的簇劃分方式,更新簇中心點;選擇當(dāng)前簇中所有樣本的均值中心點作為新的簇中心點
        1. 繼續(xù)迭代上述2和3兩個步驟,直到迭代次數(shù)達(dá)到限制或者簇中心不再發(fā)生變化,結(jié)束模型的構(gòu)建;從而得到最終的簇中心點坐標(biāo)。
    • 預(yù)測過程

      • 分別計算待預(yù)測樣本到所有簇中心點的距離/相似度
      • 認(rèn)為待預(yù)測樣本的所屬簇當(dāng)距離最近或者相似度最高的那個簇中心
    • 偽代碼

      • TODO: 自己加
    • 存在什么問題以及解決方案

        1. 對異常點比較敏感
        • 解決方案

          • K中值聚類
        1. 對簇中心數(shù)目K值比較敏感
        • 解決方案

          • 因為K是簇的數(shù)目,也就是一般是類別數(shù)目,在實際工作中的時候,這個類別數(shù)目一般是可以確定的,所以在實際工作中一般采用直接給定的方式
          • 可以采用一些不需要給定K值的聚類算法來做一個前置的計算, eg: BIRCH算法
        1. 對初始的簇中心點坐標(biāo)比較敏感
        • 解決方案

          • a. 二分kmeans
          • b. kmeans++
          • c. kmeans||
        1. 大規(guī)模數(shù)據(jù)的處理
        • 解決方案

          • Mini Batch KMeans
  • Mini Batch KMeans算法

    • 和KMeans算法的區(qū)別

      • KMeans算法在更新簇的時候會采用所有樣本,這樣在大規(guī)模數(shù)據(jù)的時候?qū)τ趦?nèi)存的壓力是比較大的;而Mini Batch KMeans算法在更新簇的時候,只需要采用部分樣本數(shù)據(jù)來更新,內(nèi)存的壓力是比較小的,所以比較時候大規(guī)模數(shù)據(jù)的聚類操作
      • 效果:Mini Batch KMeans算法比KMeans算法,在訓(xùn)練效率上來講,要快,但是在效果上來講,比KMeans算法要稍微的差一點。

3. 擴(kuò)展的聚類算法(了解)

  • 層次聚類
  • 密度聚類
  • 譜聚類

七、SVM算法

1. SVM算法的構(gòu)建原理/構(gòu)建思想

  • SVM是一種二分類的算法,算法的執(zhí)行目的是盡可能的讓兩個類別的數(shù)據(jù)分割開;也就是在兩個類別中找到一個最優(yōu)的數(shù)據(jù)劃分平面,而這個平面是讓兩個類別的數(shù)據(jù)分割的足夠開的,也就是兩個類別的數(shù)據(jù)離這個平面的距離是足夠遠(yuǎn)的;那這個距離我們稱之為間隔,離這個平面最近的樣本點我們稱為支持向量;所以SVM求解的就是讓支持向量到分割平面最大化的這樣一個劃分平面

  • 為什么要找最大分割平面?

    • 因為如果這個分割平面足夠大,那么表示兩個類別的數(shù)據(jù)特征上區(qū)分特別明顯,也就是說模型的區(qū)分能力足夠強(qiáng),也就是模型的魯棒性足夠的好。

2. SVM的公式推導(dǎo)

  • 從最初的最大間隔優(yōu)化函數(shù)開始一致到SMO算法之前的最終優(yōu)化函數(shù)結(jié)束,這個過程需要自己能夠默寫出來、并且各個過程能夠理解(建議大家選擇線性可分SVM算法的過程)

3. SVM算法對于非線性可分?jǐn)?shù)據(jù)的解決方案

  • 針對于數(shù)據(jù)本身是線性可分的,但是由于訓(xùn)練數(shù)據(jù)中存在異常數(shù)據(jù)點導(dǎo)致數(shù)據(jù)線性不可分的情況下,解決方案為:軟間隔

    • 含義:在模型構(gòu)建過程中(找最優(yōu)分割平面的過程中),允許存在部分樣本分錯的情況,因為允許部分樣本分錯,所以找到的分隔平面會比不允許分錯情況下的大。
  • 針對于數(shù)據(jù)本身就是非線性可分的情況下,解決方案為:核函數(shù)

    • 含義:為了解決數(shù)據(jù)線性不可分的情況,一般采用的方式是將數(shù)據(jù)映射到高維空間中,讓數(shù)據(jù)變的線性可分,但是將數(shù)據(jù)映射到高維空間后,使用svm的求解過程中,存在向量的內(nèi)積計算,這個內(nèi)積計算對于高維空間的向量而言,計算量會非常大,所以直接映射的方式不可取,所以采用一種用低維度上的向量的運算來近似高維空間中的向量內(nèi)積,而這種方式就叫做核函數(shù)

    • 類別:

      • 線性核函數(shù)

        • 這個時候相當(dāng)于沒有做非線性變換,也就是等價于線性可分SVM算法
      • 多項式核函數(shù)

        • 相當(dāng)于先對數(shù)據(jù)做一個多項式擴(kuò)展,然后再做線性可分SVM算法
      • 高斯核函數(shù)

        • 一般情況下,選擇該方式的效果最優(yōu)
        • 相當(dāng)于將數(shù)據(jù)映射到無窮維空間上,所以效果一般不錯

4. SMO算法過程(可選,了解)

5. SVR算法原理過程(可選,了解)

  • 從和SVC之間的區(qū)別來了解一下理念

    • 在允許的誤差范圍內(nèi),找到一個最大的超平面,讓所有的樣本的預(yù)測值和實際值之間的差值小于給定的誤差

6. 噪音/異常數(shù)據(jù)攔截的解決方案

  • 解決方案的思路:

    • 學(xué)習(xí)正常數(shù)據(jù)的數(shù)據(jù)特征,對于待預(yù)測數(shù)據(jù)而言,如果待預(yù)測數(shù)據(jù)的數(shù)據(jù)特征不符合正常數(shù)據(jù)特征的話,那么就認(rèn)為是屬于異常數(shù)據(jù)
  • 方式:

    • OneClassSVM
    • IsolationForest

八、二分類和多分類

1. 有哪些算法屬于二分類、有哪些算法屬于多分類

  • 二分類

    • Logistic回歸
    • SVM算法
  • 多分類

    • Softmax回歸
    • KNN
    • 決策樹

2. 對于原本是二分類的算法,如果應(yīng)用到多分類的需求中

  • ovo

    • 假定數(shù)據(jù)中存在K個類別,將兩兩類別的數(shù)據(jù)進(jìn)行組合成為一個新的數(shù)據(jù)集,使用新的數(shù)據(jù)集來訓(xùn)練模型,總共可以得到K(K-1)/2個模型,最終將這些模型做一個融合。融合方式選擇:多數(shù)投票(在所有基模型的預(yù)測結(jié)果中,出現(xiàn)次數(shù)最多的那個類別作為最終模型的預(yù)測結(jié)果)
    • NOTE: 每個基模型都是一個二分類的模型
  • ovr

    • 假定數(shù)據(jù)中存在K個類別,將其中一個類別作為正例(1),其它K-1個類別的數(shù)據(jù)作為負(fù)例(-1),使用這樣的子數(shù)據(jù)集來訓(xùn)練一個模型;通過改變正例的類別,分別訓(xùn)練K個模型,最終將這K個基模型做一個融合即可得到最終的預(yù)測結(jié)果。對于每個基模型而言,如果預(yù)測值大于0,那么認(rèn)為屬于正例,如果預(yù)測值小于0,那么認(rèn)為屬于負(fù)例;所以在K個基模型融合的時候,選擇預(yù)測值最大的那個模型所對應(yīng)的正例作為最終的預(yù)測結(jié)果。
    • NOTE:每個基模型都是一個二分類的模型
  • 糾錯碼機(jī)制

九、多標(biāo)簽算法(可選、了解)

1. 什么叫做多標(biāo)簽算法?

  • 在模型中,同時存在多個需要預(yù)測的目標(biāo)屬性y值

2. 多標(biāo)簽應(yīng)用的解決方案

  • a. 將多標(biāo)簽轉(zhuǎn)換為多分類的算法,認(rèn)為每個標(biāo)簽相當(dāng)于多分類中的一個取值;然后使用ovo的方式,進(jìn)行模型構(gòu)建
  • b. Chains:認(rèn)為目標(biāo)屬性y值之間是存在依賴關(guān)系的,所以在模型構(gòu)建的時候,直接將所依賴的其它y值作為特征屬性存在,來預(yù)測當(dāng)前的y值。
  • c. Calibrated Label Ranking

十、貝葉斯算法

1. 理解樸素貝葉斯算法的原理

  • 之所以叫做樸素的原因:

    • 假設(shè)樣本的特征屬性之間是獨立互不相干的
    • 樣本的所屬類別是受特征屬性取值影響的
  • 直接利用貝葉斯公式,來計算當(dāng)x給定的時候,y取值的概率值;選擇概率最大的取值作為最終的預(yù)測類別

2. 貝葉斯算法的訓(xùn)練過程

    1. 在訓(xùn)練數(shù)據(jù)中計算各個類別的先驗概率p(y=k)
    1. 計算各個類別中,各個特征屬性的取值的概率,也就是當(dāng)類別給定的時候,x取值的條件概率:p(x=i|y=k)

3. 貝葉斯算法的預(yù)測過程

  • 直接把類別的先驗概率以及屬性的條件概率做一個累乘,選擇累乘結(jié)果最大的類別作為最終的輸出預(yù)測類別

4. 樸素貝葉斯算法的類別

  • 高斯樸素貝葉斯

    • 假定特征屬性的取值是服從高斯分布的,所以該模型比較適合連續(xù)的特征屬性
    • 模型在訓(xùn)練條件概率的時候:會對每個類別的每個特征屬性都分別對應(yīng)的均值和方差,得到該類別該特征屬性所滿足的高斯概率密度函數(shù)。
  • 伯努利樸素貝葉斯

    • 假定特征屬性的取值是稀疏的,也就是將有值的情況認(rèn)為是屬于1,沒有值的情況認(rèn)為是屬于0的,所以認(rèn)為特征屬性是服從伯努利分布的,那在訓(xùn)練條件的時候,也就是計算的是伯努利的概率密度函數(shù);該算法比較適合高度稀疏的特征矩陣
  • 多項式樸素貝葉斯

    • 假定特征屬性的取值是服從多項式分布的,所以該模型比較適合離散的特征屬性
    • 模型在訓(xùn)練條件概率的時候:直接計算每個類別的每個特征屬性的取值的樣本數(shù)目占當(dāng)前類別總樣本數(shù)目的概率作為條件概率
    • NOTE: 為了防止出現(xiàn)條件概率為0的情況,做一個平滑轉(zhuǎn)換,一般為拉普拉斯變換

十一、EM算法

1. 理解EM算法的過程

2. 理解EM算法的應(yīng)用場景

  • 如果在求解模型參數(shù)的同時,存在一些未知的隱變量也需要求解的,那么這個時候就比較合適使用EM算法思想來求解

3. 理解GMM高斯混合聚類

十二、隱馬爾科夫

1. 馬爾科夫性質(zhì)

  • 在一個序列中,如果當(dāng)前時刻的狀態(tài)只和上一個時刻的狀態(tài)有關(guān),而和之前時刻(除了上一個時刻)的狀態(tài)沒有關(guān)系,那么認(rèn)為這樣的序列滿足馬爾科夫性質(zhì)

2. 隱馬爾科夫

  • 在一個觀測序列中,值與值之間是存在關(guān)系的,并且這個關(guān)系是根據(jù)內(nèi)部的某種狀態(tài)來產(chǎn)生的,而這些未知的狀態(tài)(隱狀態(tài))之間是滿足馬爾科夫性質(zhì)的時候,我們就認(rèn)為當(dāng)前的序列的隱狀態(tài)的求解是隱馬爾科夫模型

  • HMM的三個主要元素

    • 序列的初始狀態(tài)概率向量π
    • 隱狀態(tài)之間的狀態(tài)轉(zhuǎn)移概率矩陣A
    • 隱狀態(tài)和觀測值之間的轉(zhuǎn)移概率矩陣B

3. HMM的三個方面的問題

  • NOTE: 理解一下HMM算法到底可以干嘛 --> 理解一下Viterbi算法

  • a. 觀測序列的概率計算問題

    • 前向算法
    • 后向算法
  • b. 模型參數(shù)的求解問題

    • 有監(jiān)督

      • 直接統(tǒng)計、大數(shù)定理
    • 無監(jiān)督

      • EM算法
  • c. 隱狀態(tài)的預(yù)測問題

    • Viterbi算法

十三、主題模型

1. 為什么需要主題模型?

  • 因為如果數(shù)據(jù)中存在某種隱含的特征信息,eg:文本的主題信息,但是在其它的算法模型中,對于這個隱含的特征信息是不會考慮的,比如:在聚類算法中對文本數(shù)據(jù)做聚類,這個時候只會考慮單詞角度的相似度,不會考慮文本內(nèi)部主題內(nèi)容上的相似度。

2. 主題模型有什么作用?

  • 提取原始數(shù)據(jù)中的隱含的特征信息,然后基于提取出來的特征信息再訓(xùn)練后續(xù)的模型,模型效果可能會更好,eg: 提取文本的主題內(nèi)容,然后基于文本的主題內(nèi)容信息來做一個聚類操作,那這個時候聚類考慮的就是文本與文本之間主題是否相似

3. 主題模型的應(yīng)用場景有哪些?

  • 聚類前的數(shù)據(jù)預(yù)處理
  • 特征提取/特征降維
  • 推薦系統(tǒng)

4. 常見的主題模型

  • LSA
  • NMF
  • LDA

十四、特征工程(重要)

特征使用方案

  • 要實現(xiàn)業(yè)務(wù)需求目標(biāo)需要哪些數(shù)據(jù)?

    • 基于業(yè)務(wù)理解,盡可能多的找出對因變量影響的所有自變量
  • 可用性評估

    • 獲取難度
    • 覆蓋率
    • 準(zhǔn)確率

特征獲取方案

  • 如何獲取這些特征?

    • 用戶行為數(shù)據(jù)
    • 業(yè)務(wù)數(shù)據(jù)
    • 第三方數(shù)據(jù)
  • 如何存儲?

    • 本地磁盤
    • 數(shù)據(jù)庫
    • 大數(shù)據(jù)平臺

數(shù)據(jù)清洗&特征處理

  • 特征清洗

    • 清洗異常樣本數(shù)據(jù)

    • 采樣

      • 數(shù)據(jù)不均衡

        • 權(quán)重
        • 上采樣
        • 下采樣
        • SMOTE算法
      • 樣本權(quán)重

  • 特征工程

    • 單個特征

      • 歸一化、標(biāo)準(zhǔn)化、區(qū)間縮放法

      • 離散化/二值化/區(qū)間化

      • 啞編碼/Dummy Coding

      • 缺失值處理

      • 數(shù)據(jù)變換

        • log
        • 指數(shù)
    • 多個特征

      • 增維

        • 多項式擴(kuò)展
        • 核函數(shù)
        • GBDT+LR
      • 降維

        • PCA
        • LDA
      • 特征選擇

        • Filter

          • 思路:自變量和因變量之間的關(guān)聯(lián)
          • 相關(guān)系數(shù)
          • 卡方檢驗
          • 信息增益、互信息
        • Wrapper

          • 思路:通過目標(biāo)函數(shù)(AUC/MSE)來決定是否加入一個變量

          • 迭代:產(chǎn)生特征子集,評價

            • 完全搜索

            • 啟發(fā)式搜索

            • 隨機(jī)搜索

              • GA
              • SA
        • Embedded

          • 思路:學(xué)習(xí)器自身自動選擇特征

          • 正則化:

            • L1--Lasso
            • L2--Ridge
          • 決策樹

            • 熵、信息增益
    • 衍生變量

      • 對原始數(shù)據(jù)根據(jù)業(yè)務(wù)進(jìn)行加工,生成的具有商業(yè)意義的變量

特征監(jiān)控

  • 特征有效性分析

    • 分析特征的重要性、權(quán)重
  • 特征監(jiān)控

    • 監(jiān)控重要特征,防止特征質(zhì)量下降,影響模型效果

經(jīng)典算法參考:

https://mp.weixin.qq.com/s?__biz=MzIyMzk1MDE3Nw==&mid=2247496852&idx=1&sn=c85184c60f12bd1735081bf26d612f7b&chksm=e814d09adf63598c1a3afc93871df596f108a2cc8041cca0d0a1a4cc52492f7aa81b75d19db3&mpshare=1&scene=23&srcid=10060l4GcAQ0jlbZvMHVmBdR#rd

聚類算法的效果就是根據(jù)所給定訓(xùn)練數(shù)據(jù)的數(shù)據(jù)特征,基于數(shù)據(jù)的特征信息,將具有相同特征信息的樣本數(shù)據(jù)認(rèn)為屬于同一個類別/簇,從而實現(xiàn)數(shù)據(jù)劃分的需求

XMind: ZEN - Trial Version

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容