# 經驗概率分布的近似
> 原文:[https://www.textbook.ds100.org/ch/17/classification_cost_justification.html](https://www.textbook.ds100.org/ch/17/classification_cost_justification.html)
```
# HIDDEN
# Clear previously defined variables
%reset -f
# Set directory for data loading to work properly
import os
os.chdir(os.path.expanduser('~/notebooks/17'))
```
```
# HIDDEN
import warnings
# Ignore numpy dtype warnings. These warnings are caused by an interaction
# between numpy and Cython and can be safely ignored.
# Reference: https://stackoverflow.com/a/40846742
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
warnings.filterwarnings("ignore", message="numpy.ufunc size changed")
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
%matplotlib inline
import ipywidgets as widgets
from ipywidgets import interact, interactive, fixed, interact_manual
import nbinteract as nbi
sns.set()
sns.set_context('talk')
np.set_printoptions(threshold=20, precision=2, suppress=True)
pd.options.display.max_rows = 7
pd.options.display.max_columns = 8
pd.set_option('precision', 2)
# This option stops scientific notation for pandas
# pd.set_option('display.float_format', '{:.2f}'.format)
```
在本節中,我們介紹了**kl 散度**,并演示了如何將二進制分類中的平均 kl 散度最小化等同于將平均交叉熵損失最小化。
由于邏輯回歸輸出概率,邏輯模型產生一定類型的概率分布。具體地說,基于最優參數$\hat \boldSymbol \theta$,它估計標簽$y$對于示例輸入$\textbf x 為$1$的可能性。
例如,假設$X$是一個標量,記錄了一天的預測下雨機會,$Y=1$意味著 DOE 先生帶著雨傘去工作。一個帶有標量參數$\hat \theta$的邏輯模型預測,在預測下雨的可能性下,doe 先生帶傘的概率為:$\hat p \theta(y=1 x)$。
收集有關 doe 先生傘式使用的數據為我們提供了一種構建經驗概率分布$p(y=1_x)$的方法。例如,如果有五天下雨的可能性是$X=0.60 美元,而 DOE 先生只帶了一把雨傘去上班,$P(Y=1_X=0.60)=0.20 美元。我們可以為數據中出現的每個$x$值計算類似的概率分布。當然,在擬合邏輯模型后,我們希望模型預測的分布盡可能接近數據集的經驗分布。也就是說,對于我們數據中出現的所有$x$值,我們需要:
$$ \hat{P_\theta}(y = 1 | x) \approx P(y = 1 | x) $$
確定兩個概率分布的“緊密性”的一個常用度量是 Kullback——Leibler 散度,或稱 kl 散度,其根源在于信息論。
## 定義平均 kl 發散度[?](#Defining-Average-KL-Divergence)
KL 散度量化了由我們的 Logistic 模型計算的概率分布$\Hat P BoldSymbol \Theta$與基于數據集的實際分布$P$之間的差異。直觀地,它計算邏輯模型如何不精確地估計標簽在數據中的分布。
對于單個數據點$(\textbf x,y)$的兩個分布$p$和$\hat p boldsymbol \theta$之間的二進制分類的 kl 差異由以下公式給出:
$$D(P || \hat{P_\boldsymbol{\theta}}) = P(y = 0 | \textbf{x}) \ln \left(\frac{P(y = 0 | \textbf{x})}{\hat{P_\boldsymbol{\theta}}(y = 0 | \textbf{x})}\right) + P(y = 1 | \textbf{x}) \ln \left(\frac{P(y = 1 | \textbf{x})}{\hat{P_\boldsymbol{\theta}}(y = 1 | \textbf{x})}\right)$$
KL 散度不是對稱的,即$p$與$p$與$p$與$p$與$p$與$p$與$d(P 124 124 \\124 \124 \123 \ \ \ \\123 \\\ \\\\\\\\\(P)$$
由于我們的目標是使用$\hat p boldsymbol \theta 美元,因此我們關注的是$d(p \hat p \boldsymbol \theta 美元)。
最好的$\BoldSymbol \Theta$值,我們將其表示為$\Hat \BoldSymbol \Theta$將整個$n$點數據集的平均 kl 發散最小化:
$$ \text{Average KL Divergence} = \frac{1}{n} \sum_{i=1}^{n} \left(P(y_i = 0 | \textbf{X}_i) \ln \left(\frac{P(y_i = 0 | \textbf{X}_i)}{\hat{P_\boldsymbol{\theta}}(y_i = 0 | \textbf{X}_i)}\right) + P(y_i = 1 | \textbf{X}_i) \ln \left(\frac{P(y_i = 1 | \textbf{X}_i)}{\hat{P_\boldsymbol{\theta}}(y_i = 1 | \textbf{X}_i)}\right)\right)$$$$ \hat{\boldsymbol{\theta}} = \displaystyle\arg \min_{\substack{\boldsymbol{\theta}}} (\text{Average KL Divergence}) $$
在上面的公式中,數據點$i ^ \text th 表示為($\textbf x u i$,$y i$),其中,$\textbf x u i$是觀察到的結果。
KL 的差異并不影響與$P$相關的罕見事件的不匹配。如果模型預測實際罕見事件的高概率,那么$p(k)$和$\ln\left(\frac p(k)p boldsymbol \theta(k)right)$都很低,因此差異也很低。但是,如果模型預測實際常見事件的概率較低,則散度較高。我們可以推斷,與精確預測罕見事件但在常見事件上差異很大的模型相比,精確預測常見事件的邏輯模型與$P$的差異較小。
## 由 kl 發散推導交叉熵損失
上述平均 kl 散度方程的結構與交叉熵損失具有一些表面相似性。我們現在將用一些代數操作證明,最小化平均 kl 散度實際上等于最小化平均交叉熵損失。
Using properties of logarithms, we can rewrite the weighted log ratio: $$P(y_i = k | \textbf{X}_i) \ln \left(\frac{P(y_i = k | \textbf{X}_i)}{\hat{P_\boldsymbol{\theta}}(y_i = k | \textbf{X}_i)}\right) = P(y_i = k | \textbf{X}_i) \ln P(y_i = k | \textbf{X}_i) - P(y_i = k | \textbf{X}_i) \ln \hat{P_\粗體符號\ theta(y u i=k \ textbf x u i)$$
請注意,由于第一個術語不依賴于$\BoldSymbol \Theta$,因此它不會影響$\DisplayStyle\Arg\Min \Substack \BoldSymbol \Theta$并且可以從公式中刪除。由此得到的表達式是模型的交叉熵損失$\Hat P BoldSymbol \Theta$:
$$ \text{Average Cross-Entropy Loss} = \frac{1}{n} \sum_{i=1}^{n} - P(y_i = 0 | \textbf{X}_i) \ln \hat{P_\theta}(y_i = 0 | \textbf{X}_i) - P(y_i = 1 | \textbf{X}_i) \ln \hat{P_\theta}(y_i = 1 | \textbf{X}_i)$$$$ \hat{\boldsymbol{\theta}} = \displaystyle\arg \min_{\substack{\theta}} (\text{Average Cross-Entropy Loss}) $$
由于標簽$Y_I$是已知值,因此$Y_I=1$、$P(Y_I=1 textbf x u I)$等于$Y_I$和$P(Y_I=0 textbf x u I)$的概率等于$1-Y_I$。模型的概率分布$\hat p boldsymbol \theta 由前兩節討論的 sigmoid 函數的輸出給出。進行這些替換后,我們得出平均交叉熵損失方程:
$$ \text{Average Cross-Entropy Loss} = \frac{1}{n} \sum_i \left(- y_i \ln (f_\hat{\boldsymbol{\theta}}(\textbf{X}_i)) - (1 - y_i) \ln (1 - f_\hat{\boldsymbol{\theta}}(\textbf{X}_i) \right) $$$$ \hat{\boldsymbol{\theta}} = \displaystyle\arg \min_{\substack{\theta}} (\text{Average Cross-Entropy Loss}) $$
## 交叉熵損失的統計解釋
交叉熵損失在統計學上也有基礎。由于邏輯回歸模型預測概率,給定一個特定的邏輯模型,我們可以問,“這個模型產生一組觀察到的結果的概率是多少?”我們可以自然地調整模型的參數,直到從模型中提取數據集的概率盡可能高。盡管在本節中我們不會證明這一點,但該程序相當于最小化交叉熵損失,這是交叉熵損失的 _ 最大似然 _ 統計證明。
## 摘要[?](#Summary)
平均 kl 差異可以解釋為$p$和$hat p boldsymbol \theta$p$加權的兩個分布之間的平均對數差異。最小化平均 kl 發散也最小化平均交叉熵損失。我們可以通過選擇對常見數據進行精確分類的參數來減少邏輯回歸模型的分歧。
- 一、數據科學的生命周期
- 二、數據生成
- 三、處理表格數據
- 四、數據清理
- 五、探索性數據分析
- 六、數據可視化
- Web 技術
- 超文本傳輸協議
- 處理文本
- python 字符串方法
- 正則表達式
- regex 和 python
- 關系數據庫和 SQL
- 關系模型
- SQL
- SQL 連接
- 建模與估計
- 模型
- 損失函數
- 絕對損失和 Huber 損失
- 梯度下降與數值優化
- 使用程序最小化損失
- 梯度下降
- 凸性
- 隨機梯度下降法
- 概率與泛化
- 隨機變量
- 期望和方差
- 風險
- 線性模型
- 預測小費金額
- 用梯度下降擬合線性模型
- 多元線性回歸
- 最小二乘-幾何透視
- 線性回歸案例研究
- 特征工程
- 沃爾瑪數據集
- 預測冰淇淋評級
- 偏方差權衡
- 風險和損失最小化
- 模型偏差和方差
- 交叉驗證
- 正規化
- 正則化直覺
- L2 正則化:嶺回歸
- L1 正則化:LASSO 回歸
- 分類
- 概率回歸
- Logistic 模型
- Logistic 模型的損失函數
- 使用邏輯回歸
- 經驗概率分布的近似
- 擬合 Logistic 模型
- 評估 Logistic 模型
- 多類分類
- 統計推斷
- 假設檢驗和置信區間
- 置換檢驗
- 線性回歸的自舉(真系數的推斷)
- 學生化自舉
- P-HACKING
- 向量空間回顧
- 參考表
- Pandas
- Seaborn
- Matplotlib
- Scikit Learn