<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 風險和損失最小化 > 原文:[https://www.textbook.ds100.org/ch/15/bias_risk.html](https://www.textbook.ds100.org/ch/15/bias_risk.html) ``` # HIDDEN # Clear previously defined variables %reset -f # Set directory for data loading to work properly import os os.chdir(os.path.expanduser('~/notebooks/15')) ``` ``` # 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) ``` ``` # HIDDEN def df_interact(df, nrows=7, ncols=7): ''' Outputs sliders that show rows and columns of df ''' def peek(row=0, col=0): return df.iloc[row:row + nrows, col:col + ncols] if len(df.columns) <= ncols: interact(peek, row=(0, len(df) - nrows, nrows), col=fixed(0)) else: interact(peek, row=(0, len(df) - nrows, nrows), col=(0, len(df.columns) - ncols)) print('({} rows, {} columns) total'.format(df.shape[0], df.shape[1])) ``` 為了使用數據進行預測,我們定義了一個模型,在整個數據集中選擇一個損失函數,并通過最小化損失來擬合模型的參數。例如,為了進行最小二乘線性回歸,我們選擇模型: $$ \begin{aligned} f_\hat{\theta} (x) &= \hat{\theta} \cdot x \end{aligned} $$ 損失函數: $$ \begin{aligned} L(\hat{\theta}, X, y) &= \frac{1}{n} \sum_{i}(y_i - f_\hat{\theta} (X_i))^2\\ \end{aligned} $$ 和以前一樣,我們使用$\hat \theta$作為模型參數的向量,$x$作為包含一行數據矩陣的向量,$x$和$y$作為觀測值的向量進行預測。$X$I$是$X$的第$I$行,$Y$I$是 Y 的第$I$項。 注意,我們在數據集中丟失的函數是每行數據的丟失函數值的平均值。如果我們定義平方損失函數: $$ \begin{aligned} \ell(y_i, f_\hat{\theta} (x)) &= (y_i - f_\hat{\theta} (x))^2 \end{aligned} $$ 然后我們可以更簡單地重寫平均損失函數: $$ \begin{aligned} L(\hat{\theta}, X, y) &= \frac{1}{n} \sum_{i} \ell(y_i, f_\hat{\theta} (X_i)) \end{aligned} $$ 上面的表達式抽象了特定的損失函數;不管我們選擇什么損失函數,我們的整體損失都是平均損失。 通過最小化平均損失,我們選擇最適合我們觀測數據集的模型參數。到目前為止,我們已經避免對生成數據集的總體進行陳述。然而,在現實中,我們非常有興趣對整個人口做出良好的預測,而不僅僅是我們已經看到的數據。 ## 風險[?](#Risk) 如果我們的觀測數據集$X$和$Y$是從給定的人群中隨機抽取的,那么我們的觀測數據就是隨機變量。如果我們觀察到的數據是隨機變量,我們的模型參數也是隨機變量,每次我們收集一組新的數據并擬合一個模型時,模型$f_ \hat \theta(x)$的參數將略有不同。 假設我們從人群中隨機抽取一對輸入輸出對$Z、\gamma$。我們的模型在這個值上產生的損失是: $$ \begin{aligned} \ell(\gamma, f_\hat{\theta} (z)) \end{aligned} $$ 請注意,這個損失是一個隨機變量;不同的觀測數據集$X$和$Y$以及來自我們的人口的不同點$Z、\gamma$的損失都會發生變化。 模型$F \Theta 的**風險**是上述所有訓練數據$X$、$Y$和所有點$Z$、$Gamma$在人群中的預期損失值: $$ \begin{aligned} R(f_\hat{\theta}(x)) = \mathbb{E}[ \ell(\gamma, f_\hat{\theta} (z)) ] \end{aligned} $$ 請注意,風險是對隨機變量的期望,因此 _ 不是 _ 隨機本身。公平的六面模具輥的預期值為 3.5,即使輥本身是隨機的。 上面的風險有時被稱為**真正的風險**,因為它說明了一個模型在整個人群中的作用。如果我們能夠計算出所有模型的真實風險,我們就可以簡單地選擇風險最小的模型,并確定在我們選擇損失函數時,模型的長期性能將優于所有其他模型。 ## 經驗風險 然而,現實并非如此善良。如果我們將期望的定義代入真實風險的公式,我們得到: $$ \begin{aligned} R(f_\hat{\theta}) &= \mathbb{E}[ \ell(\gamma, f_\hat{\theta} (z)) ] \\ &= \sum_\gamma \sum_z \ell(\gamma, f_\hat{\theta} (z)) P(\gamma, z) \\ \end{aligned} $$ 為了進一步簡化這個表達式,我們需要知道$P(\gamma,z)$,觀察人口中任何點的全局概率分布。不幸的是,這并不容易。假設我們正試圖根據表的大小預測提示量。一張三人桌給 14.50 美元小費的概率是多少?如果我們準確地知道點的分布,我們就不必收集數據或擬合模型,我們就已經知道任何給定表的最大可能提示量。 雖然我們不知道人口的確切分布,但是我們可以使用觀測數據集$X$和$Y$來近似它。如果從我們的人口中隨機抽取$X$和$Y$點,則$X$和$Y$點的分布與人口分布類似。因此,我們將 x 美元和 y 美元視為我們的人口。然后,任何輸入輸出對$x_i$,$y_i$出現的概率是$\frac 1 n,因為每對輸入輸出對在$n$積分總數中出現一次。 這允許我們計算**經驗風險**,這是真實風險的近似值: $$ \begin{aligned} \hat R(f_\hat{\theta}) &= \mathbb{E}[ \ell(y_i, f_\hat{\theta} (X_i)) ] \\ &= \sum_{i=1}^n \ell(y_i, f_\hat{\theta} (X_i)) \frac{1}{n} \\ &= \frac{1}{n} \sum_{i=1}^n \ell(y_i, f_\hat{\theta} (X_i)) \end{aligned} $$ 如果我們的數據集很大,并且數據是隨機從人群中提取的,那么經驗風險$\hat R(f \theta)$接近真實風險$R(f \hat \theta)$。這使我們能夠選擇最小化經驗風險的模型。 請注意,此表達式是節開頭的平均損失函數!通過最小化平均損失,我們也可以最小化經驗風險。這解釋了為什么我們經常使用平均損失作為我們的整體損失函數,而不是最大損失,例如。 ## 摘要[?](#Summary) 預測模型的真實風險描述了模型將為人口帶來的總體長期損失。由于我們通常不能直接計算真實風險,因此我們計算的是經驗風險,并使用經驗風險找到一個合適的預測模型。由于經驗風險是觀測數據集上的平均損失,因此在擬合模型時,我們通常將平均損失最小化。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看