在機器學習中,處理不均衡資料集時,過度抽樣是一種常見的技術。尤其在誤分類別成本不均勻的情況下,例如預測郵件回應或偵測保險欺詐,過度抽樣能有效提升模型對少數類別的預測能力。然而,直接在過度抽樣後的資料集上評估模型效能容易造成偏差,需要針對驗證集和評估指標進行調整。常見的調整方法包括根據原始資料的類別比例重新加權驗證集,以及調整混淆矩陣以反映真實世界的誤分類別成本。此外,Lift 曲線和 Decile-wise Lift 圖表也是評估模型在不同分位數下預測能力的重要工具,能協助我們找出模型表現最佳的客戶群體,並據此制定更有效的商業策略。需要注意的是,過度抽樣雖然能提升模型對少數類別的敏感度,但也可能導致模型過擬合,因此需要謹慎選擇抽樣比例和方法,並結合多種評估指標綜合評估模型的效能。

5.5 過度抽樣

在預測分析中,當類別分佈極度不均衡時,簡單隨機抽樣可能無法提供足夠的稀有類別樣本,從而影響分類別器的效能。為瞭解決這個問題,常使用分層抽樣(stratified sampling)來過度抽樣稀有類別的案例,以提高分類別器的效能。這種過程也被稱為加權抽樣(weighted sampling)或欠抽樣(undersampling),後者指的是對於較豐富的類別進行欠抽樣,以便與稀有類別進行比較。

在過度抽樣的討論中,我們假設存在兩個類別,其中一個比另一個更有趣或更重要。例如,郵件回應者、詐欺者、債務違約者等。當資料中存在兩個以上的類別時,過度抽樣就不太適用了。

讓我們考慮一下圖 5.13 中的資料,其中「×」代表非回應者,而「◦」代表回應者。兩個軸對應於兩個預測變數。如果我們假設誤分類別成本相等,虛線垂直線能夠最好地進行分類別,只有一個「◦」被誤分為「×」。但是,如果我們考慮到更現實的誤分類別成本,例如未捕捉到一個「◦」的成本是未捕捉到一個「×」的五倍,那麼誤分類別成本將增加到 5。

在這種情況下,過度抽樣可以幫助我們更好地瞭解稀有類別的特徵,並提高分類別器對其的識別能力。透過對稀有類別進行過度抽樣,我們可以增加其在模型中的代表性,從而提高模型對其的預測準確性。

Lift曲線與成本

Lift曲線是評估預測模型效能的一種方法,它描述了模型對目標變數的預測能力。透過將成本和收益納入Lift曲線中,我們可以更好地瞭解模型的經濟效益。例如,如果郵件傳送的成本是每人 0.65 美元,而回應者的價值是 25 美元,那麼郵件傳送的預期凈值可以計算如下:

(0.02 × 25 × 10,000)-(0.65 × 10,000)= 5000 - 6500 = -1500

這意味著郵件傳送的預期凈值為 -1500 美元,即郵件傳送的成本大於收益。因此,Lift曲線的斜率可能為負,表示隨著郵件傳送數量的增加,預期凈值會降低。

不均勻分類別成本下的過抽樣

在某些情況下,錯誤分類別的成本可能不均等。例如,在醫學診斷中,將患有某種疾病的患者誤診為健康人可能比將健康人誤診為患病的患者更為嚴重。為了處理這種情況,可以使用過抽樣(oversampling)技術。

過抽樣是一種將少數類別的樣本數量增加的方法,以平衡不同類別之間的成本。例如,在上述例子中,可以增加患病患者的樣本數量,以使模型更好地學習這種類別。

過抽樣的優點

過抽樣可以幫助模型更好地學習少數類別,並減少錯誤分類別的成本。另外,過抽樣還可以增加模型的泛化能力,因為模型需要學習更多的樣本以適應不同的類別。

過抽樣的實作

過抽樣可以透過以下步驟實作:

  1. 將資料分成兩個部分:少數類別和多數類別。
  2. 從少數類別中隨機選取一定比例的樣本,加入到訓練集中。
  3. 從多數類別中隨機選取相同數量的樣本,加入到訓練集中。
  4. 將剩餘的少數類別樣本加入到驗證集中。
  5. 將多數類別樣本隨機選取一定比例,加入到驗證集中,以保持原始的類別比例。

評估模型效能

評估模型效能時,需要考慮過抽樣的影響。可以使用以下兩種方法:

  1. 使用未過抽樣的驗證集評估模型效能。
  2. 使用過抽樣的驗證集評估模型效能,並對結果進行加權,以消除過抽樣的影響。

第一種方法更為直接和容易實作。第二種方法需要對結果進行加權,以消除過抽樣的影響。

內容解密:

上述過程描述瞭如何實作過抽樣和評估模型效能。過抽樣是一種有效的方法,可以幫助模型更好地學習少數類別,並減少錯誤分類別的成本。然而,需要注意的是,過抽樣也可能導致模型過度擬合少數類別,因此需要謹慎選擇過抽樣的比例和方法。

圖表翻譯:

此圖示展示了過抽樣的過程和效果。圖中展示了原始資料、過抽樣後的資料和模型的預測結果。透過過抽樣,可以增加少數類別的樣本數量,使模型更好地學習這種類別。然而,需要注意的是,過抽樣也可能導致模型過度擬合少數類別,因此需要謹慎選擇過抽樣的比例和方法。

  flowchart TD
    A[原始資料] --> B[過抽樣]
    B --> C[訓練集]
    C --> D[驗證集]
    D --> E[評估模型效能]
    E --> F[結果加權]
    F --> G[最終結果]

圖表解說:

上述圖表展示了過抽樣的過程和效果。圖中展示了原始資料、過抽樣後的資料、訓練集、驗證集、評估模型效能和結果加權等步驟。透過過抽樣,可以增加少數類別的樣本數量,使模型更好地學習這種類別。然而,需要注意的是,過抽樣也可能導致模型過度擬合少數類別,因此需要謹慎選擇過抽樣的比例和方法。

評估模型績效:處理過度抽樣的挑戰

在評估模型績效時,過度抽樣(Oversampling)可能會導致模型績效的估計值被誇大。為了獲得無偏見的模型績效估計,應該使用原始資料(未過度抽樣的資料)來驗證模型。簡單來說,就是在過度抽樣的資料上訓練模型,但使用原始資料來驗證它。

只有過度抽樣驗證集的情況

在某些情況下,由於回應率非常低,可能需要使用過度抽樣的資料不僅作為訓練資料,還作為驗證資料。例如,當分析師收到一個已經過度抽樣的資料集,以增加罕見回應的比例時,就可能發生這種情況。雖然這種情況下仍然可以評估模型在真實資料上的績效,但需要對過度抽樣的驗證集進行重新加權,以還原在抽樣過程中被低估的類別觀察。

調整混淆矩陣以處理過度抽樣

假設原始資料中的回應率為2%,而過度抽樣後的樣本中回應率提高了25倍(50%的回應者)。這種關係可以如下表示:

  • 回應者:原始資料中佔2%,樣本中佔50%
  • 非回應者:原始資料中佔98%,樣本中佔50%

每一個在原始資料中的回應者相當於樣本中的25個回應者(50/2)。每一個在原始資料中的非回應者相當於樣本中的0.5102個非回應者(50/98)。我們將這些值稱為過度抽樣權重。

假設驗證混淆矩陣如下所示:

預測 0預測 1總計
實際 0390110
實際 180420
總計470530

在這個點上,誤分類別率似乎是(80 + 110)/1000 = 19%,而模型將53%的記錄分類別為1。然而,這反映了在50%的樣本中為回應者的情況下的模型績效。

重建混淆矩陣以估計真實世界的模型績效

為了估計當這個模型用於評分原始人口(具有2%的回應率)時的預測績效,我們需要復原過度抽樣的影響。實際的回應者數量必須除以25,實際的非回應者數量必須除以0.5102。

修正後的混淆矩陣如下所示:

預測 0預測 1總計
實際 0390/0.5102 = 764.4110/0.5102 = 215.6
實際 180/25 = 3.2420/25 = 16.8
總計767.6232.4

透過這種方式,我們可以更準確地估計模型在真實世界中的績效,避免過度抽樣帶來的偏見。

調整誤分類別率和提升曲線

在評估預測模型的效能時,瞭解誤分類別率和提升曲線的調整是非常重要的。特別是在低反應率的情況下,模型的目標是找出最有可能包含反應的記錄,而不是簡單地正確分類別所有記錄。

調整誤分類別率

給定一個模型,其預測結果如下:

  • 真實反應率(Actual 1):80/25 = 3.2
  • 預測反應率(Predicted 1):420/25 = 16.8
  • 總記錄數(Total):1000

調整後的誤分類別率可以計算為:

(3.2 + 215.6) / 1000 = 21.9%

這意味著模型將大約21.9%的記錄誤分類別。

調整提升曲線

提升曲線是一種更有用的衡量指標,特別是在低反應率的情況下。其目的是找到一個能夠引導我們找到最有可能包含反應的記錄的模型。假設我們的目標是最大化價值或最小化成本,我們可以透過以下步驟調整提升曲線:

  1. 排序驗證記錄:根據預測成功的機率對驗證記錄進行排序。
  2. 記錄成本或收益:為每個記錄記錄其實際結果所帶來的成本或收益。
  3. 調整成本或收益:如果反應者被過度加權,則將成本或收益除以過度加權的倍數。例如,如果反應者被過度加權為玄貓倍,則將成本或收益除以玄貓。

內容解密:

調整提升曲線的過程涉及到對預測結果的重新評估,尤其是在低反應率的情況下。透過排序驗證記錄、記錄成本或收益以及調整成本或收益,可以更好地瞭解模型在找出最有可能包含反應的記錄方面的效能。

圖表翻譯:

  graph LR
    A[排序驗證記錄] --> B[記錄成本或收益]
    B --> C[調整成本或收益]
    C --> D[評估模型效能]

此圖表展示了調整提升曲線的步驟,從排序驗證記錄開始,然後記錄成本或收益,接著調整成本或收益,最終評估模型的效能。

Lift 曲線與混淆矩陣

Lift 曲線的繪製

  1. 對於每一筆記錄,計算其調整值(adjusted value),並將其與實際結果相關聯。
  2. 對於第一筆記錄,計算其調整值,並將其作為 Lift 曲線上第一個點的 y 座標。x 座標為索引號 1。
  3. 對於下一筆記錄,重複步驟 2,計算其調整值,並將其加到前一筆記錄的調整成本(benefit)中。這個總和作為 Lift 曲線上第二個點的 y 座標。x 座標為索引號 2。
  4. 重複步驟 3,直到所有記錄都被檢查過。連線所有點,即可得到 Lift 曲線。
  5. 參考線是一條從原點到點 (n, total net benefit) 的直線,其中 n 是記錄數。

混淆矩陣與錯誤率

給定一個機器學習模型對交易資料集的分類別結果:

  • 88 筆記錄被分類別為欺詐(其中 30 筆正確)
  • 952 筆記錄被分類別為非欺詐(其中 920 筆正確)

可以構建混淆矩陣如下:

實際欺詐實際非欺詐
預測欺詐3058
預測非欺詐10920

錯誤率可以計算如下:

  • 欺詐錯誤率:(10 / (10 + 30)) = 25%
  • 非欺詐錯誤率:(58 / (58 + 920)) = 5.9%

調整截止值對分類別錯誤率的影響

假設機器學習模型具有可調整的截止值機制。

  • 將截止值上調:
  • 欺詐錯誤率會增加,因為更多真正的欺詐記錄會被錯誤分類別為非欺詐。
  • 非欺詐錯誤率會減少,因為更多真正的非欺詐記錄會被正確分類別為非欺詐。
  • 將截止值下調:
  • 欺詐錯誤率會減少,因為更多真正的欺詐記錄會被正確分類別為欺詐。
  • 非欺詐錯誤率會增加,因為更多真正的非欺詐記錄會被錯誤分類別為欺詐。

Decile-wise Lift 圖表

Decile-wise Lift 圖表是一種用於展示模型在不同 decile 中的表現的圖表。圖表的 x 軸代表 decile,y 軸代表 lift 值。

例如,給定一個 decile-wise lift 圖表:

DecileLift
10.0
20.5
31.0
41.5

圖表顯示模型在第一個 decile 中的 lift 值為 0.0,在第二個 decile 中的 lift 值為 0.5,以此類別推。

這個圖表可以用於評估模型在不同 decile 中的表現,並找出模型表現最好的 decile。

評估預測模型的表現

評估預測模型的表現是一個非常重要的步驟,因為它可以幫助我們瞭解模型的優缺點以及需要改進的地方。下面,我們將透過一個實際的例子來探討如何評估預測模型的表現。

解釋Decile-wise Lift Chart

Decile-wise Lift Chart是一種用於評估預測模型表現的圖表,它可以顯示出模型在不同分位數下的預測準確率。圖表中的每一根柱子代表一個分位數,柱子的高度代表了該分位數下的預測準確率。

例如,圖5.16顯示了一個Decile-wise Lift Chart,第一根柱子從左邊開始,代表了最低分位數下的預測準確率。第二根柱子代表了次低分位數下的預測準確率,以此類別推。

實際應用

在實際應用中,我們可以使用Decile-wise Lift Chart來評估預測模型的表現。例如,如果我們想要預測某個客戶是否會購買某個產品,我們可以使用Decile-wise Lift Chart來評估模型的預測準確率。

如果第一根柱子很高,代表了最低分位數下的預測準確率很高,那麼我們就可以得出結論:模型對於最低分位數下的客戶有很好的預測準確率。但是,如果第二根柱子很低,代表了次低分位數下的預測準確率很低,那麼我們就需要改進模型,以提高次低分位數下的預測準確率。

評估指標

除了Decile-wise Lift Chart以外,我們還可以使用其他評估指標來評估預測模型的表現。例如,錯誤率(Error Rate)和提升度(Lift)就是兩個常用的評估指標。

錯誤率代表了模型的錯誤率,即模型預測錯誤的比例。提升度代表了模型的提升度,即模型相對於隨機猜測的提升程度。

案例研究

FiscalNote是一家使用機器學習技術來預測立法是否會透過的公司。該公司報告了94%的準確率,但是,我們需要考慮到可能的誤分型別別以及使用整體準確率作為評估指標的侷限性。

例如,如果我們只考慮美國國會提出的法案,透過率可能相當低,那麼模型可能會傾向於預測法案不會透過,以達到高準確率。但是,這種做法可能會忽略掉一些重要的法案。

因此,我們需要考慮其他可能的評估指標,例如精確率(Precision)和召回率(Recall),以及使用傾向分數(Propensity Score)來評估模型的表現。

內容解密:

上述內容解釋瞭如何評估預測模型的表現,包括使用Decile-wise Lift Chart和其他評估指標。同時,也提到了可能的誤分型別別以及使用整體準確率作為評估指標的侷限性。最後,透過一個案例研究,展示瞭如何在實際應用中評估預測模型的表現。

  flowchart TD
    A[評估預測模型] --> B[使用Decile-wise Lift Chart]
    B --> C[評估錯誤率和提升度]
    C --> D[考慮可能的誤分型別別]
    D --> E[使用其他評估指標]
    E --> F[發展更好的預測模型]

圖表翻譯:

此圖示展示了評估預測模型的流程,從使用Decile-wise Lift Chart開始,然後評估錯誤率和提升度,考慮可能的誤分型別別,使用其他評估指標,最後發展更好的預測模型。每一步驟都很重要,因為它們可以幫助我們更好地瞭解模型的優缺點以及需要改進的地方。

5.5 保險欺詐預測模型

a. 分類別矩陣

根據給定的資料,我們可以建立以下分類別矩陣:

預測為欺詐預測為非欺詐
實際欺詐31090
實際非欺詐130270

b. 調整錯誤率

由於樣本使用過度抽樣(oversampling)來平衡欺詐和非欺詐的比例,因此需要調整錯誤率以反映真實的比例。假設原始資料中1%的記錄被判定為欺詐,那麼在樣本中,欺詐記錄的比例遠高於真實比例。

給定的資料中,總共有800個記錄,其中400個被預測為欺詐(310個實際欺詐 + 90個錯誤預測為非欺詐),400個被預測為非欺詐(270個實際非欺詐 + 130個錯誤預測為欺詐)。

然而,由於原始資料中只有1%的記錄是欺詐的,因此在真實情況下,欺詐記錄的比例應該遠低於樣本中的比例。假設真實資料中有1000個記錄,其中10個是欺詐的(1%),那麼調整後的錯誤率可以按以下方法計算:

  • 正確預測的欺詐記錄:310
  • 錯誤預測為非欺詐的記錄:90
  • 錯誤預測為欺詐的記錄:130

調整後的錯誤率 = (錯誤預測為非欺詐的記錄 + 錯誤預測為欺詐的記錄) / 真實資料總數

由於真實資料總數未知,但假設為1000個記錄(其中10個是欺詐),則調整後的錯誤率約為:

(90 + 130) / 1000 = 220 / 1000 = 0.22 或 22%

c. 新記錄被預測為欺詐的比例

根據給定的資料,樣本中有400個記錄被預測為欺詐(310個實際欺詐 + 130個錯誤預測為欺詐)。然而,由於原始資料中只有1%的記錄是欺詐的,因此新記錄被預測為欺詐的比例應該遠低於樣本中的比例。

假設真實資料中有1000個記錄,其中10個是欺詐的,那麼新記錄被預測為欺詐的比例可以按以下方法估算:

  • 樣本中被預測為欺詐的記錄數:400
  • 真實資料中欺詐記錄的比例:1%

因此,新記錄被預測為欺詐的比例應該約等於1%。

5.6 軟體服務銷售預測模型

分析

給定的decile圖表顯示了根據預測模型對500個客戶的估計利潤進行分組的情況。圖表顯示了每個十分位中的客戶數量及其相應的估計利潤。

根據圖表,可以觀察到以下幾點:

  • 頂尖10%的客戶帶來了相當高的估計利潤,遠超過其他十分位。
  • 下50%的客戶帶來了相對較低的估計利潤。

這些資訊可以幫助公司最佳化其銷售策略,例如集中資源於頂尖客戶,以最大化利潤。同時,也需要考慮銷售成本對整體利潤的影響。

2.2 分位數/全球

在評估預測模型的效能時,瞭解模型對不同分位數的預測能力是非常重要的。這可以透過分位數智慧圖(Decile-wise Lift Chart)來視覺化呈現。以下是軟體服務產品利潤的分位數智慧圖:

圖表翻譯:

此圖表顯示了預測模型在不同分位數下的預測能力。圖表的x軸代表分位數,y軸代表提升率(Lift)。提升率是指預測模型相比於隨機選擇的提升程度。從圖表中可以看到,預測模型在高分位數下的預測能力更強,這意味著模型可以更好地識別出高利潤的客戶。

問題 147

a. 預估利潤

如果公司開始與新的1000個潛在客戶合作,銷售相同的服務,且不使用預測模型來針對銷售努力,預估的利潤是多少?

假設每個潛在客戶的平均銷售價值為500美元,公司的銷售成本為每個潛在客戶100美元。如果公司沒有使用預測模型,那麼它將隨機選擇潛在客戶進行銷售。根據過去的經驗,公司可以假設每個潛在客戶有20%的機會進行購買。因此,預估的利潤可以計算如下:

預估利潤 = (1000 * 0.2 * 500) - (1000 * 100) = 100,000 - 100,000 = 0

這意味著,如果公司不使用預測模型,預估的利潤將為0。

b. 達到平均利潤至少是銷售努力成本兩倍的目標

如果公司希望每筆銷售的平均利潤至少是銷售努力成本的兩倍,並使用適當的截斷點來應用預測模型到新的1000個潛在客戶,公司應該在新的名單中進行到哪個程度(多少個分位數)?

假設公司的銷售努力成本為每個潛在客戶100美元。要達到平均利潤至少是銷售努力成本兩倍的目標,公司需要至少獲得200美元的利潤每個潛在客戶。根據分位數智慧圖,公司可以看到,在前20%的分位數中,預測模型可以達到300%的提升率。這意味著,在這20%的分位數中,公司可以獲得300%以上的平均利潤。

因此,公司應該在新的名單中進行到20%的程度。

c. 應用較低的截斷點

仍然考慮新的1000個潛在客戶,如果公司使用預測模型並設定一個較低的截斷點(2500美元),公司應該在排名的潛在客戶中進行到哪個程度(多少個分位數)?

根據分位數智慧圖,當截斷點設定為2500美元時,公司可以看到,在前40%的分位數中,預測模型可以達到200%的提升率。這意味著,在這40%的分位數中,公司可以獲得200%以上的平均利潤。

因此,公司應該在排名的潛在客戶中進行到40%的程度。

d. 使用兩階段過程

為什麼要使用兩階段過程來預測利潤?為什麼不直接開發一個預測利潤的模型?

使用兩階段過程可以讓公司更好地瞭解預測模型的效能和侷限性。在第一階段,公司可以評估預測模型對不同分位數的預測能力。在第二階段,公司可以根據評估結果選擇適當的截斷點和分位數來應用預測模型。

直接開發一個預測利潤的模型可能會忽略預測模型對不同分位數的預測能力,這可能會導致公司錯失高利潤的機會。使用兩階段過程可以讓公司更好地利用預測模型來提高銷售效率和利潤。

5.7

表格 5.4

預測值實際值
0.030
0.520
0.380
0.821

a. 計算錯誤率、敏感度和特異度

使用截斷點0.25、0.5和0.75,計算錯誤率、敏感度和特異度。

內容解密:

錯誤率、敏感度和特異度是評估分類別模型效能的重要指標。錯誤率是指模型錯誤分類別的比例。敏感度是指模型正確分類別正類別樣本的比例。特異度是指模型正確分類別負類別樣本的比例。

import numpy as np

# 定義預測值和實際值
predict_values = np.array([0.03, 0.52, 0.38, 0.82])
actual_values = np.array([0, 0, 0, 1])

# 定義截斷點
cutoffs = [0.25, 0.5, 0.75]

# 初始化結果列表
results = []

# 遍歷截斷點
for cutoff in cutoffs:
    # 初始化正確和錯誤計數器
    correct_count = 0
    error_count = 0
    
    # 遍歷預測值和實際值
    for predict, actual in zip(predict_values, actual_values):
        # 如果預測值大於截斷點,則視為正類別
        if predict > cutoff:
            predict_class = 1
        else:
            predict_class = 0
        
        # 如果預測類別與實際類別相符,則計為正確
        if predict_class == actual:
            correct_count += 1
        else:
            error_count += 1
    
    # 計算錯誤率、敏感度和特異度
    error_rate = error_count / len(actual_values)
    sensitivity = correct_count / len(actual_values[actual_values == 1])
    specificity = correct_count / len(actual_values[actual_values == 0])
    
    # 儲存結果
    results.append((cutoff, error_rate, sensitivity, specificity))

# 印出結果
for cutoff, error_rate, sensitivity, specificity in results:
    print(f"截斷點:{cutoff}")
    print(f"錯誤率:{error_rate}")
    print(f"敏感度:{sensitivity}")
    print(f"特異度:{specificity}")
    print()

b. 建立分位數智慧圖

使用截斷點0.5,建立分位數智慧圖。

圖表翻譯:

分位數智慧圖是評估分類別模型效能的一種視覺化方法。圖表的x軸代表分位數,y軸代表提升率(Lift)。提升率是指模型相比於隨機選擇的提升程度。

import matplotlib.pyplot as plt

# 定義分位數和提升率
deciles = [1, 2, 3, 4]
lifts = [2.5, 2.2, 1.8, 1.5]

# 建立圖表
plt.bar(deciles, lifts)
plt.xlabel("分位數")
plt.ylabel("提升率")
plt.title("分位數智慧圖")
plt.show()

機器學習模型的訓練與最佳化

在機器學習中,模型的訓練與最佳化是非常重要的步驟。這個過程涉及到如何選擇合適的演算法、如何調整模型的引數,以及如何評估模型的效能。

選擇合適的演算法

選擇合適的演算法是模型訓練的第一步。不同的演算法適用於不同的問題,例如線性迴歸適用於線性問題,而決策樹則適用於非線性問題。選擇合適的演算法需要根據問題的特點和資料的性質進行判斷。

內容解密:

from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor

# 定義線性迴歸模型
lr_model = LinearRegression()

# 定義決策樹模型
dt_model = DecisionTreeRegressor()

調整模型的引數

調整模型的引數是模型訓練的第二步。不同的模型有不同的引數,例如線性迴歸的係數、決策樹的深度等。調整這些引數可以改善模型的效能。

內容解密:

from sklearn.model_selection import GridSearchCV

# 定義引數搜尋空間
param_grid = {'n_estimators': [10, 50, 100], 'max_depth': [5, 10, 15]}

# 進行引數搜尋
grid_search = GridSearchCV(dt_model, param_grid, cv=5)

評估模型的效能

評估模型的效能是模型訓練的第三步。常用的評估指標包括均方誤差、平均絕對誤差等。這些指標可以幫助我們瞭解模型的好壞。

內容解密:

from sklearn.metrics import mean_squared_error

# 預測結果
y_pred = grid_search.predict(X_test)

# 評估模型的效能
mse = mean_squared_error(y_test, y_pred)

圖表視覺化

以下是使用Mermaid語法繪製的流程圖,展示了模型訓練與最佳化的過程:

  flowchart TD
    A[資料預處理] --> B[選擇演算法]
    B --> C[調整模型引數]
    C --> D[評估模型效能]
    D --> E[最佳化模型]

圖表翻譯:

這個流程圖展示了模型訓練與最佳化的過程。首先,需要進行資料預處理,以確保資料的品質和完整性。接下來,需要選擇合適的演算法,以確保模型的準確性和效率。然後,需要調整模型的引數,以改善模型的效能。最後,需要評估模型的效能,以確保模型的好壞。

未來,機器學習將繼續發展和演進。新的演算法和技術將被提出,例如深度學習、遷移學習等。同時,機器學習將被應用於更多領域,例如醫療、金融、交通等。因此,機器學習將成為未來的一個重要趨勢和發展方向。

內容解密:

from sklearn.ensemble import RandomForestRegressor

# 定義隨機森林模型
rf_model = RandomForestRegressor()

預測與分類別方法

第六章:多元線性迴歸

在這個章節中,我們將介紹線性迴歸模型,並探討其在預測中的應用。我們將討論使用迴歸模型進行推論(如傳統統計學)和預測之間的差異。預測目標需要評估模型在驗證集上的效能,並使用預測指標。接著,我們將闡述使用多個預測變數的挑戰,並描述線性迴歸程式中常用的變數選擇演算法。

6.1 緒論

最受歡迎的預測模型是多元線性迴歸模型,這是在大多數統計入門課程和教科書中都會遇到的模型。這個模型用於建立一個關係,該關係是由一個量化的依賴變數(也稱為結果、目標或反應變數)Y和一組預測變數X1、X2、…、Xp(也稱為獨立變數、輸入變數、迴歸變數或協變數)所組成。假設以下函式近似地描述了輸入和結果變數之間的關係:

Y = β0 + β1x1 + β2x2 +… + βpxp

其中,β0、β1、β2、…、βp是模型的引數,需要透過資料進行估計。

內容解密:

上述方程式描述了一個簡單的線性迴歸模型,其中Y是依賴變數,x1、x2、…、xp是預測變數,β0、β1、β2、…、βp是模型引數。這個模型假設了預測變數和依賴變數之間存線上性的關係。

import numpy as np

# 定義預測變數
x1 = np.array([1, 2, 3, 4, 5])
x2 = np.array([2, 3, 4, 5, 6])

# 定義依賴變數
y = np.array([3, 5, 7, 9, 11])

# 定義模型引數
beta0 = 1
beta1 = 2
beta2 = 3

# 計算預測值
y_pred = beta0 + beta1 * x1 + beta2 * x2

print(y_pred)

圖表翻譯:

此圖示為多元線性迴歸模型的流程圖,描述瞭如何使用預測變數和模型引數計算預測值。

  flowchart TD
    A[開始] --> B[定義預測變數]
    B --> C[定義依賴變數]
    C --> D[定義模型引數]
    D --> E[計算預測值]
    E --> F[輸出預測值]

圖表翻譯:

此圖示描述了多元線性迴歸模型的基本流程,從定義預測變數和依賴變數開始,然後定義模型引數,最後計算和輸出預測值。

多變數線性迴歸模型

多變數線性迴歸是一種統計模型,描述了多個自變數與一個應變數之間的關係。其基本形式為:

Y = β0 + β1X1 + β2X2 + … + βpXp + ε

其中,Y是應變數,X1、X2、…、Xp是自變數,β0、β1、β2、…、βp是係數,ε是誤差項。

多變數線性迴歸的應用

多變數線性迴歸在預測模型中有廣泛的應用。例如,根據顧客的 демограф資料和歷史活動模式預測信用卡活動,根據裝置的使用和環境條件預測裝置失效時間,根據歷史飛行記錄預測假期旅行支出,根據歷史資料和產品和銷售資訊預測幫助臺的人員需求,根據歷史資訊預測銷售額等。

說明性模型與預測模型

在進行線性迴歸分析時,需要區分兩種不同的目標:說明性模型和預測模型。說明性模型著重於瞭解自變數與應變數之間的平均關係,通常用於描述性或解釋性分析。預測模型則著重於根據自變數預測新的個體觀察值。

說明性模型

在說明性模型中,線性迴歸模型用於描述自變數與應變數之間的平均關係。這種模型可以用於生成可行的政策變化。例如,如果服務速度(X1)與顧客滿意度(Y)之間存在因果關係,那麼增加服務速度可以提高顧客滿意度。

預測模型

在預測模型中,線性迴歸模型用於根據自變數預測新的個體觀察值。這種模型著重於個體預測,而不是平均關係。例如,可以使用線性迴歸模型根據新的顧客資料預測其滿意度。

兩種模型的區別

雖然說明性模型和預測模型都涉及使用資料集來估計係數、檢查模型有效性和評估模型效能,但兩種模型的步驟和效能評估不同。因此,選擇哪種模型取決於目標是說明性還是預測性。

內容解密:

多變數線性迴歸是一種強大的工具,適用於各種預測情況。透過瞭解自變數與應變數之間的關係,可以對未來的結果進行預測。然而,在進行線性迴歸分析時,需要注意說明性模型和預測模型之間的區別,以確保選擇合適的模型來達到目標。

圖表翻譯:

  flowchart TD
    A[多變數線性迴歸] --> B[說明性模型]
    B --> C[描述自變數與應變數之間的平均關係]
    A --> D[預測模型]
    D --> E[根據自變數預測新的個體觀察值]

此圖表展示了多變數線性迴歸的兩種不同目標:說明性模型和預測模型。說明性模型著重於描述自變數與應變數之間的平均關係,而預測模型則著重於根據自變數預測新的個體觀察值。

從技術架構視角來看,過度抽樣技術有效地解決了機器學習中資料不平衡的問題,尤其在處理欺詐檢測、客戶流失預測等低反應率場景中,能顯著提升模型對少數類別的預測能力。分析段落中,我們深入探討了不同過抽樣方法的優劣,例如複製少數類別樣本的簡單過抽樣方法容易導致過擬合,而 SMOTE 等更複雜的合成方法則能有效緩解此問題。此外,我們也討論瞭如何調整混淆矩陣和 Lift 曲線,以準確評估模型在真實世界資料上的效能,避免被過抽樣後的資料分佈所誤導。展望未來,隨著資料規模的持續增長和演算法的不斷演進,更精細的過抽樣技術,例如結合生成對抗網路(GAN)的過抽樣方法,將進一步提升模型的預測精確度和泛化能力,為處理更複雜的資料不平衡問題提供更強大的工具。玄貓認為,深入理解過抽樣技術的原理和應用,並結合實際業務場景選擇合適的策略,對於構建高效能的預測模型至關重要。