在機器學習領域,評估模型的預測能力至關重要。本文將介紹幾種常見的模型評估方法,包括累積實際值、排序預測值以及 Lift Chart,並以航班延誤預測為例,展示如何應用這些方法。同時,我們也會探討變數選擇的策略,以及如何使用 Logistic Regression 模型進行二元和多類別分類別。模型的建立包含資料收集、前處理、特徵工程、模型訓練與驗證等步驟。以航班延誤預測為例,我們可以收集航班的歷史資料,包括航班號、航空公司、出發時間、天氣狀況等。接著,我們需要對資料進行清洗和轉換,例如處理缺失值、將類別變數轉換為數值變數等。在特徵工程階段,我們可以根據業務理解和資料分析的結果,提取或建構新的特徵,例如將日期轉換為星期幾、將時間段劃分為不同的區間等。完成資料預處理和特徵工程後,我們就可以選擇合適的模型進行訓練和驗證。
案例分析
在評估預測模型的效能時,我們通常會使用多種指標和圖表來全面瞭解模型的優缺點。以下,我們將探討幾種常見的評估方法,包括累積實際值、排序預測值、累積提升圖(Lift Chart)等,並結合實際案例進行分析。
累積實際值
累積實際值是指根據預測值對實際觀察值進行排序後,計算每個觀察值的累積總和。這種方法可以幫助我們瞭解模型對不同類別的預測能力。
排序預測值
排序預測值是指根據預測值對觀察值進行排序,以便評估模型的預測效能。這種方法可以幫助我們瞭解模型對不同類別的預測能力,並找出哪些類別的預測效果較好。
Lift Chart
Lift Chart是一種圖表,用於展示模型的預測效能與隨機選擇之間的差異。透過比較模型的預測結果與隨機選擇的結果,可以評估模型的優劣。
案例分析
在航班延誤預測模型中,我們可以使用上述方法來評估模型的效能。例如,透過計算累積實際值和排序預測值,可以瞭解模型對不同航班的預測能力。同時,透過 Lift Chart,可以評估模型的預測效能與隨機選擇之間的差異。
變數選擇
在建模過程中,變數選擇是一個非常重要的步驟。透過分析資料探索圖表和係數表,可以找出哪些變數對模型的預測結果有較大的影響。同時,透過檢查不同類別的航班數量,可以找出哪些類別的航班數量較少或沒有航班,以便進行合併或刪除。
實際案例
在航班延誤預測模型中,我們可以透過以下步驟進行變數選擇:
- 分析資料探索圖表和係數表,找出哪些變數對模型的預測結果有較大的影響。
- 檢查不同類別的航班數量,找出哪些類別的航班數量較少或沒有航班。
- 對於那些變數對模型的預測結果有較大的影響的變數,可以考慮合併或刪除。
內容解密
在上述案例中,我們使用了累積實際值、排序預測值和 Lift Chart 等方法來評估模型的效能。同時,透過變數選擇,我們找出了哪些變數對模型的預測結果有較大的影響。這些方法和步驟可以幫助我們建立一個更好的預測模型,幫助我們更好地瞭解和預測航班延誤的情況。
圖表翻譯
以下是 Lift Chart 的 Mermaid 圖表:
flowchart TD A[隨機選擇] --> B[模型預測] B --> C[Lift Chart] C --> D[評估模型效能]
這個圖表展示了 Lift Chart 的基本流程,從隨機選擇到模型預測,再到 Lift Chart,最後到評估模型效能。這個圖表可以幫助我們瞭解 Lift Chart 的作用和優點。
預測延誤航班的完整分析範例
在預測延誤航班的分析中,我們需要考慮多個因素,包括航班的出發時間、航空公司、天氣等。為了簡化分析,我們可以將某些變數進行分組,例如將一週中的天數分為「星期日和星期一」和「其他天數」,以減少分類別的數量。
資料前處理
對於出發時間,我們可以將其分為三個時間段:「早上2點之前」、「下午2點至4點和晚上7點至9點」以及「其他時間」。同時,對於航空公司,我們發現某些航空公司的延誤率相似,因此可以將其合併為一個類別。這樣的分組不僅簡化了模型,也使得分析更加容易。
模型建立
建立模型後,我們可以看到估計的模型結果,包括驗證分類別矩陣、錯誤率以及提升圖。這個模型在分類別準確率和提升方面表現良好,尤其是與較大的模型相比,它使用了更少的資訊。
模型係數
預測變數 | 估計值 | 信賴區間下限 | 信賴區間上限 | 奇斯平方統計量 | P值 |
---|---|---|---|---|---|
截距 | -0.8180 | -1.1161 | -0.5199 | 28.9170 | 0.0000 |
減少_CARRIER_0 | -1.0357 | -1.3796 | -0.6917 | 34.8345 | 0.0000 |
減少_CARRIER_1 | 0.0000 | 0.0000 | 0.0000 | N/A | N/A |
減少_DEP_TIME_BLK_0 | -1.0194 | -1.3777 | -0.6612 | 31.1028 | 0.0000 |
減少_DEP_TIME_BLK_1 | 0.0000 | 0.0000 | 0.0000 | N/A | N/A |
減少_DEP_TIME_BLK_2 | -0.6346 | -1.0089 | -0.2602 | 11.0393 | 0.0009 |
減少_DOW_0 | 0.0000 | 0.0000 | 0.0000 | N/A | N/A |
減少_DOW_1 | 0.6871 | 0.3697 | 1.0045 | 17.9986 | 0.0000 |
Weather_0 | 0.0000 | 0.0000 | 0.0000 | N/A | N/A |
Weather_1 | 8.7693 | -7.2104 | 24.7491 | 1.1569 | 0.2821 |
驗證結果
驗證結果顯示,模型在分類別延誤航班方面具有較高的準確率。以下是驗證結果的詳細資訊:
- 驗證分類別摘要:
- 實際\預測 0 1
- 0 698 0
- 1 169 13
- 分類別錯誤報告:
- 類別 #案例 #錯誤 %錯誤
- 0 698 0 0.00
- 1 182 169 92.86
- 總計 880 169 19.20
資料分析與視覺化
在進行資料分析時,瞭解資料的累積分佈對於評估模型的效能和做出明智的決策至關重要。以下,我們將探討兩種不同方法來計算累積實際值,並使用預測值對資料進行排序。
方法一:使用平均值計算累積實際值
這種方法涉及計算每個時間點或區間的實際值,並將其累積起來。這提供了一個基準線,讓我們可以評估模型的效能。
import pandas as pd
# 假設我們有一個包含實際值的DataFrame
data = pd.DataFrame({
'實際值': [500, 600, 700, 800, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180]
})
# 計算累積實際值
data['累積實際值'] = data['實際值'].cumsum()
print(data)
方法二:使用預測值排序計算累積實際值
在這種方法中,我們根據預測值對資料進行排序,然後計算累積實際值。這有助於我們瞭解預測值對於累積實際值的影響。
import pandas as pd
# 假設我們有一個包含實際值和預測值的DataFrame
data = pd.DataFrame({
'實際值': [500, 600, 700, 800, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180],
'預測值': [700, 800, 600, 500, 20, 40, 60, 80, 100, 120, 140, 160, 180, 0]
})
# 對資料根據預測值進行排序
data_sorted = data.sort_values(by='預測值')
# 計算累積實際值
data_sorted['累積實際值'] = data_sorted['實際值'].cumsum()
print(data_sorted)
結果比較
透過比較這兩種方法計算的累積實際值,我們可以更好地瞭解預測值對於累積實際值的影響,並評估模型的效能。
flowchart TD A[資料收集] --> B[方法一:使用平均值] A --> C[方法二:使用預測值排序] B --> D[計算累積實際值] C --> D D --> E[結果比較]
圖表翻譯:
上述流程圖展示了我們如何使用兩種不同方法計算累積實際值,並比較結果以評估模型的效能。首先,我們收集資料,然後根據不同的方法(使用平均值或預測值排序)進行計算。最後,我們比較結果以得出結論。
內容解密:
在上述程式碼中,我們使用Python的pandas函式庫來操作資料。首先,我們建立一個DataFrame來儲存實際值和預測值。然後,我們使用cumsum()
函式來計算累積實際值。最後,我們將結果列印預出來以便比較。
Logistic Regression 模型最佳化與應用
在上述例子中,我們探討瞭如何使用 Logistic Regression 來預測航班延遲的可能性。為了簡化模型並提高預測準確度,我們進行了特徵選擇,最終選擇了六個預測變數,包括航空公司、星期幾、飛行時間段以及天氣情況。
模型最佳化
透過對資料的分析和處理,我們可以得出一個更為精簡的模型,只需要考慮航空公司、星期幾、飛行時間段以及天氣情況等因素。這個模型可以很好地預測航班延遲的可能性,並且可以提供一些有趣的見解。例如,根據模型的結果,我們可以發現從華盛頓特區到紐約的航班在星期二到星期六下午2點到4點之間,搭乘達美航空、康奈爾航空、聯合航空或美國航空的航班,且天氣晴朗的情況下,航班延遲的可能性最小。
工作流程
機器學習工作流程對於建立和評估模型至關重要。在這個例子中,我們的工作流程包括資料收集、資料預處理、特徵選擇、模型建立和模型評估等步驟。以下是工作流程的詳細描述:
- 資料收集:收集2004年1月份從華盛頓特區到紐約的航班資料。
- 資料預處理:對收集到的資料進行預處理,包括處理缺失值、轉換變數格式等。
- 特徵選擇:從原始的33個預測變數中選擇出最重要的6個變數,包括航空公司、星期幾、飛行時間段以及天氣情況。
- 模型建立:使用選擇出的6個預測變數建立Logistic Regression模型。
- 模型評估:使用交叉驗證法評估模型的效能,包括計算模型的準確度、精確度、召回率和F1分數等指標。
多類別Logistic Regression
在上述例子中,我們只考慮了二元分類別問題,即航班是否延遲。但是在實際應用中,我們可能需要面對多類別分類別問題。例如,根據航班延遲的時間長度,可以將航班分為三類別:正常航班、短延遲航班和長延遲航班。
多類別Logistic Regression模型
多類別Logistic Regression模型可以用於解決多類別分類別問題。其基本思想是將多類別問題轉換為多個二元分類別問題,每個二元分類別問題都是一個Logistic Regression模型。
模型建立
建立多類別Logistic Regression模型的步驟如下:
- 資料準備:準備好多類別分類別問題的資料集。
- 模型選擇:選擇適合多類別分類別問題的Logistic Regression模型。
- 引數估計:使用最大似然估計法估計模型引數。
- 模型評估:使用交叉驗證法評估模型的效能。
模型應用
多類別Logistic Regression模型可以廣泛應用於各種領域,包括:
- 信用風險評估:根據客戶的信用記錄和其他相關因素,將客戶分為不同的信用級別。
- 醫學診斷:根據病人的臨床資料和其他相關因素,將病人分為不同的疾病類別。
- 客戶分段:根據客戶的購買行為和其他相關因素,將客戶分為不同的分段。
內容解密:
以上內容介紹瞭如何使用Logistic Regression演算法來解決二元分類別問題,並且對模型進行了最佳化和評估。同時,也介紹了多類別Logistic Regression模型及其應用。
graph LR A[資料收集] --> B[資料預處理] B --> C[特徵選擇] C --> D[模型建立] D --> E[模型評估]
圖表翻譯:
此圖示展示了機器學習工作流程中的各個步驟,包括資料收集、資料預處理、特徵選擇、模型建立和模型評估。每個步驟都非常重要,共同構成了完整的機器學習流程。
多類別邏輯迴歸模型
在處理多於兩個類別的分類別問題時,傳統的二元邏輯迴歸模型需要進行擴充套件。假設我們有 $m$ 個類別,對於每個觀察值,我們需要估計出它屬於每個類別的機率。由於這 $m$ 個機率必須加起來等於 1,因此我們只需要估計 $m-1$ 個機率。
序數類別
當類別之間存在著有意義的順序時,我們稱之為序數類別。例如,在股票投資建議中,「買入」、「持有」和「賣出」這三個類別就具有明確的順序。如果類別可以被賦予一個有意義的順序,我們就將其視為序數類別。當類別數量較大(通常大於五個)時,我們可以將結果變數視為連續變數,並進行多元線性迴歸分析。當類別數為 2 時,之前描述的二元邏輯迴歸模型就可以使用了。因此,我們需要對小數量的序數類別(通常是 3 到 5 個)進行邏輯迴歸模型的擴充套件。
比例.odds 或累積邏輯模型
有一種方法是使用比例.odds 或累積邏輯模型。為了簡化解釋和計算,我們考慮累積機率。例如,在股票投資建議中,我們有 $m=3$ 個類別:買入、持有和賣出。這裡,我們估計的是 $P(Y \leq 1)$(買入的機率)和 $P(Y \leq 2)$(買入或持有的機率)。從這兩個累積機率中,可以輕易地還原出三個非累積的類別成員機率:
- $P(Y = 1) = P(Y \leq 1)$
- $P(Y = 2) = P(Y \leq 2) - P(Y \leq 1)$
- $P(Y = 3) = 1 - P(Y \leq 2)$
接下來,我們想要將每個邏輯函式作為預測變數的函式來建模。對應於每個 $m-1$ 個累積機率,有一個邏輯函式。在我們的例子中,我們會有:
- $\text{logit}(買入) = \log\frac{P(Y \leq 1)}{1 - P(Y \leq 1)}$
- $\text{logit}(買入或持有) = \log\frac{P(Y \leq 2)}{1 - P(Y \leq 2)}$
每個邏輯函式都被建模為預測變數的線性函式(就像二元類別的情況一樣)。如果在股票投資建議中,我們有一個單一的預測變數 $x$,那麼我們就會有兩個等式:
內容解密:
以上內容描述瞭如何將二元邏輯迴歸模型擴充套件到多類別的情況,特別是當類別之間存在順序關係時。透過使用累積機率和邏輯函式,模型可以有效地處理小數量的序數類別。這種方法不僅保證了模型的可解釋性,也使得計算過程相對簡單。
圖表翻譯:
graph LR A[觀察值] -->|屬於|> B[類別 1] A -->|屬於|> C[類別 2] A -->|屬於|> D[類別 3] B -->|累積機率|> E[P(Y ≤ 1)] C -->|累積機率|> F[P(Y ≤ 2)] D -->|累積機率|> G[1 - P(Y ≤ 2)] E -->|邏輯函式|> H[logit(買入)] F -->|邏輯函式|> I[logit(買入或持有)]
此圖表示瞭如何從觀察值出發,計算其屬於不同類別的累積機率,然後再轉換為邏輯函式,以便進行模型建模和預測。
瞭解多類別分類別的邏輯
在多類別分類別問題中,瞭解每個類別之間的關係和如何計算每個類別的機率是非常重要的。這裡我們來探討一下邏輯迴歸(logistic regression)在多類別分類別中的應用。
邏輯迴歸的基礎
邏輯迴歸是一種廣泛使用的統計方法,用於預測二元分類別的結果。其基本思想是將輸入的特徵對映到一個機率空間中,從而預測某個事件發生的機率。對於二元分類別問題,邏輯迴歸的模型可以表示為:
logit(P) = α + βx
其中,P是某個事件發生的機率,α是截距,β是斜率,x是輸入的特徵。
多類別分類別的邏輯迴歸
當面臨多類別分類別問題時,我們可以使用一對多(one-vs-all)或一對一(one-vs-one)的策略來進行分類別。然而,這裡我們主要討論的是使用累積邏輯迴歸(cumulative logistic regression)來解決多類別分類別問題。
對於三類別分類別問題,例如,假設我們有三個類別:買(buy)、持有(hold)和賣(sell)。我們可以建立兩個邏輯迴歸模型:
logit(P(buy)) = α0 + β1x logit(P(buy or hold)) = β0 + β1x
這意味著兩個模型分享相同的斜率(β1),但截距不同。這樣,我們就可以計算每個類別的機率了。
計算類別機率
給定模型的係數(α0、β0、β1)後,我們可以計算每個類別的機率。例如,對於三類別分類別問題,我們有:
P(Y = 1) = P(Y ≤ 1) = 1 / (1 + e^(-α0 - β1x)) P(Y = 2) = P(Y ≤ 2) - P(Y ≤ 1) = 1 / (1 + e^(-β0 - β1x)) - 1 / (1 + e^(-α0 - β1x))
這樣,我們就可以根據輸入的特徵計算出每個類別的機率。
內容解密:
以上內容介紹瞭如何使用邏輯迴歸進行多類別分類別。首先,我們建立了兩個邏輯迴歸模型,用於預測每個類別的機率。然後,我們根據模型的係數計算每個類別的機率。這種方法可以應用於任何多類別分類別問題中。
圖表翻譯:
graph LR A[輸入特徵] --> B[邏輯迴歸模型] B --> C[電腦率] C --> D[預測結果]
此圖示展示瞭如何使用邏輯迴歸模型進行多類別分類別的流程。首先,我們輸入特徵,然後建立邏輯迴歸模型,計算每個類別的機率,最後得到預測結果。
玄貓的邏輯迴歸分析應用
在進行邏輯迴歸分析時,我們需要根據給定的資料估計出每個觀察值屬於各個類別的機率。這裡,我們使用了一個簡單的例子來說明這個過程。
假設我們有一個股票推薦系統,需要根據某些條件對股票進行買、持有或賣出的推薦。這裡,我們使用邏輯迴歸模型來估計每個股票屬於買、持有或賣出的機率。
首先,我們需要估計出模型的引數,包括 $a_0$、$b_0$ 和 $b_1$。這些引數可以透過訓練資料集來估計。然後,我們可以使用以下公式來計算每個觀察值屬於各個類別的機率:
$$ P(Y = 1) = \frac{1}{1 + e^{-(b_0 + b_1x)}} $$
$$ P(Y = 2) = \frac{1}{1 + e^{-(b_0 + b_1x)}} $$
$$ P(Y = 3) = 1 - P(Y \leq 2) = 1 - \frac{1}{1 + e^{-(b_0 + b_1x)}} $$
其中,$x$ 是觀察值的特徵,$b_0$ 和 $b_1$ 是模型的引數。
在上面的例子中,如果一個股票的估計機率為 $P(Y = 1) = 0.2$、$P(Y = 2) = 0.3$ 和 $P(Y = 3) = 0.5$,我們就會將這個股票分類別為「賣出」推薦。
內容解密:
在這個過程中,我們使用了邏輯迴歸模型來估計每個觀察值屬於各個類別的機率。然後,根據這些機率,我們可以將觀察值分類別為最可能屬於的類別。
flowchart TD A[觀察值] --> B[邏輯迴歸模型] B --> C[估計機率] C --> D[分類別] D --> E[推薦]
圖表翻譯:
上面的流程圖展示了我們如何使用邏輯迴歸模型來進行股票推薦。首先,我們輸入觀察值,然後使用邏輯迴歸模型來估計每個觀察值屬於各個類別的機率。根據這些機率,我們可以將觀察值分類別為最可能屬於的類別,最後得出推薦結果。
名目類別
當類別無法排序,只是彼此不同時,我們處於名目類別的情況下。一個例子是選擇幾個不同的麥片品牌。驗證類別是否為名目的簡單方法是,看看是否有意義地將其標記為A、B、C等,並且將字母分配給類別的方式無關緊要。為了簡單起見,假設有m = 3個麥片品牌可供消費者選擇(假設每個消費者選擇一個)。然後,我們估計機率:
P(Y = A)、 P(Y = B)和 P(Y = C)。 如前所述,如果我們知道其中兩個機率,第三個機率就會被確定。因此,我們使用其中一個類別作為參考類別。讓我們使用C作為參考品牌。 目標,同樣地,是將類別成員資格建模為預測變數的函式。因此,在麥片範例中,我們可能想要預測如果我們知道麥片的價格x,就會選擇哪種麥片。 接下來,我們形成m - 1個偽對數方程,它們是線性的預測變數。在我們的範例中,我們會有:
logit(A)= log P(Y = A) P(Y = C) = α0 + α1x,
logit(B)= log P(Y = B) P(Y = C) = β0 + β1x。
內容解密:
上述方程式描述瞭如何使用對數機率(logit)來表示選擇每個品牌的機率與參考品牌之間的關係。這些方程式是線性的,這意味著它們假設選擇每個品牌的機率與預測變數(在本例中為價格)之間的關係可以用直線來描述。這些方程式的係數(α0、α1、β0和β1)代表了預測變數對選擇每個品牌的機率的影響。
圖表翻譯:
graph LR A[選擇A] -->|logit(A)|> C[參考品牌C] B[選擇B] -->|logit(B)|> C x[價格] -->|α1|> A x -->|β1|> B
此圖表示了選擇每個品牌的機率與參考品牌之間的關係,以及價格對這些機率的影響。每個箭頭代表了一個對數機率方程,描述了選擇每個品牌的機率與參考品牌之間的關係。
類別成員機率估計
在估計了四個係數後,我們可以使用以下公式來計算類別成員機率:
類別 A 的機率
類別 A 的機率可以使用以下公式計算:
P(Y = A) = e^(a0 + a1x) / (e^(a0 + a1x) + e^(b0 + b1*x))
類別 B 的機率
類別 B 的機率可以使用以下公式計算:
P(Y = B) = e^(b0 + b1x) / (e^(a0 + a1x) + e^(b0 + b1*x))
類別 C 的機率
類別 C 的機率可以使用以下公式計算:
P(Y = C) = 1 - P(Y = A) - P(Y = B)
內容解密:
上述公式使用了softmax函式來計算類別成員機率。softmax函式是一種常用的啟用函式,用於多類別分類別問題。它可以將輸入的分數轉換為機率值,確保機率值之間的總和為1。
import numpy as np
def softmax(x):
e_x = np.exp(x - np.max(x))
return e_x / e_x.sum()
# 例子
x = np.array([1, 2, 3])
print(softmax(x))
圖表翻譯:
此圖示softmax函式的工作原理。輸入的分數被轉換為機率值,確保機率值之間的總和為1。
graph LR A[輸入分數] --> B[softmax函式] B --> C[機率值] C --> D[總和為1]
圖表翻譯:
此圖示類別成員機率的計算過程。輸入的特徵值被轉換為類別成員機率,使用softmax函式確保機率值之間的總和為1。
graph LR A[輸入特徵值] --> B[softmax函式] B --> C[類別成員機率] C --> D[總和為1]
多類別Logistic Regression模型的推導
在多類別Logistic Regression中,我們試圖根據輸入特徵預測一個樣本屬於哪一類別。假設我們有三個類別:A、B和C。給定一個輸入特徵$x$,我們想要計算每個類別的機率。
首先,我們定義兩個logit函式:
$$ \log\left(\frac{P(Y=A)}{P(Y=C)}\right) = \alpha_0 + \alpha_1x $$
$$ \log\left(\frac{P(Y=B)}{P(Y=C)}\right) = \beta_0 + \beta_1x $$
其中,$\alpha_0$、$\alpha_1$、$\beta_0$和$\beta_1$是模型的係數,需要從訓練資料中估計出來。
根據這兩個logit函式,我們可以得到:
$$ P(Y=A) = P(Y=C)e^{\alpha_0 + \alpha_1x} $$
$$ P(Y=B) = P(Y=C)e^{\beta_0 + \beta_1x} $$
由於所有類別的機率之和必須等於1,因此我們有:
$$ P(Y=A) + P(Y=B) + P(Y=C) = 1 $$
將上述兩個式子代入這個等式中,我們可以解出$P(Y=C)$:
$$ P(Y=C) = \frac{1}{e^{-(\alpha_0 + \alpha_1x + \beta_0 + \beta_1x)}} $$
這樣,我們就得到了每個類別的機率。觀察這些式子,我們可以看到,每個類別的機率都依賴於輸入特徵$x$和模型的係數。
最終,根據這些機率,我們可以將一個新的樣本分配到最可能的類別,即機率最大的那一個類別。
實際應用場景
在實際應用中,多類別Logistic Regression模型可以用於各種需要分類別的任務,例如:
- 文字分類別:根據文字內容將其分類別為不同的類別,如正面評價或負面評價。
- 影像分類別:根據影像特徵將其分類別為不同的類別,如動物或植物。
- 客戶分群:根據客戶的行為和偏好將其分類別為不同的群體,以便進行有針對性的行銷。
程式碼實作
以下是一個簡單的Python程式碼片段,示範如何使用scikit-learn函式庫實作多類別Logistic Regression:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 載入iris資料集
iris = load_iris()
X = iris.data
y = iris.target
# 分割資料集為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 建立多類別Logistic Regression模型
logreg = LogisticRegression(max_iter=1000)
# 訓練模型
logreg.fit(X_train, y_train)
# 預測測試集
y_pred = logreg.predict(X_test)
# 評估模型準確度
accuracy = accuracy_score(y_test, y_pred)
print("模型準確度:", accuracy)
圖表視覺化
以下是使用Mermaid語法繪製的一個簡單流程圖,示範多類別Logistic Regression的基本流程:
flowchart TD A[收集資料] --> B[分割資料] B --> C[建立模型] C --> D[訓練模型] D --> E[預測結果] E --> F[評估模型]
圖表翻譯
這個流程圖展示了多類別Logistic Regression的基本步驟。首先,我們需要收集相關資料。接下來,我們將資料分割為訓練集和測試集。然後,我們建立一個多類別Logistic Regression模型,並使用訓練集對其進行訓練。訓練完成後,我們使用模型預測測試集的結果。最後,我們評估模型的效能,以確保它能夠有效地進行分類別。
10.1 金融狀況的邏輯迴歸分析
問題描述
給定一組銀行的財務資料,包括總貸款和租賃資產比率(TotLns&Lses/Assets)和總費用比率(TotExp/Assets),以及銀行的財務狀況(強或弱)。要求建立一個邏輯迴歸模型,以預測銀行的財務狀況。
a. 建立邏輯迴歸模型
i. Logit函式
邏輯迴歸模型的Logit函式可以表示為:
Logit(P) = β0 + β1 * TotLns&Lses/Assets + β2 * TotExp/Assets
其中P是銀行被判定為財務狀況弱的機率,β0、β1和β2是模型引數。
ii. Odds函式
Odds函式可以表示為:
Odds(P) = exp(Logit(P)) = exp(β0 + β1 * TotLns&Lses/Assets + β2 * TotExp/Assets)
iii. 機率函式
機率函式可以表示為:
P = 1 / (1 + exp(-Logit(P))) = 1 / (1 + exp(-(β0 + β1 * TotLns&Lses/Assets + β2 * TotExp/Assets)))
b. 預測新銀行的財務狀況
假設有一家新銀行,其總貸款和租賃資產比率為0.6,總費用比率為0.11。使用邏輯迴歸模型預測其財務狀況。
Logit值
Logit(P) = β0 + β1 * 0.6 + β2 * 0.11
Odds值
Odds(P) = exp(Logit(P))
機率值
P = 1 / (1 + exp(-Logit(P)))
分類別結果
如果P > 0.5,則將銀行分類別為財務狀況弱;否則,分類別為財務狀況強。
c. 計算閾值
如果我們想要根據銀行被判定為財務狀況弱的機率進行分類別,閾值應該設定為0.5。如果我們想要根據銀行被判定為財務狀況弱的odds進行分類別,閾值應該設定為1。
d. 解釋係數
TotLns&Lses/Assets的係數表示當其他變數保持不變時,該比率每增加一單位,銀行被判定為財務狀況弱的logit值增加多少。
e. 調整閾值
如果我們想要最小化誤分類別的成本,應該根據實際情況調整閾值。如果誤分類別為財務狀況強的成本遠大於誤分類別為財務狀況弱的成本,則應該降低閾值;否則,應該提高閾值。
從商業價值視角來看,準確預測模型的效能對決策至關重要。本文深入探討了多種模型評估方法,涵蓋累積實際值、排序預測值、Lift Chart 以及多類別邏輯迴歸,並以航班延誤和股票推薦為例,闡明瞭這些方法在實際場景中的應用。分析顯示,模型的效能評估並非單一指標所能涵蓋,需結合多種方法,例如 Lift Chart 有助於視覺化模型的預測能力與隨機選擇的差異,而累積實際值則能揭示模型在不同類別上的預測能力。技術限制方面,模型的準確性受變數選擇和資料品質的影響,例如航班延誤預測中,特徵工程和變數分組至關重要。此外,多類別邏輯迴歸的應用拓展了模型的應用範圍,使其能處理更複雜的分類別問題,例如股票推薦中的「買入」、「持有」、「賣出」三種狀態。玄貓認為,熟練掌握這些評估方法和模型,並根據實際業務需求調整引數和閾值,才能將資料分析的價值最大化,並做出更明智的商業決策。未來,模型可解釋性和自動化機器學習將是重要的發展方向,值得持續關注。