農林漁牧網

您現在的位置是:首頁 > 農業

高中就開始學的正態分佈,原來如此重要

2021-07-08由 機器之心Pro 發表于 農業

正態曲線的特點是什麼

選自Medium

作者:Farhad Malik

機器之心編譯

參與:李詩萌、張倩

我們從高中就開始學正態分佈,現在做資料分析、機器學習還是離不開它,那你有沒有想過正態分佈有什麼特別之處?為什麼那麼多關於資料科學和機器學習的文章都圍繞正態分佈展開?本文作者專門寫了一篇文章,試著用易於理解的方式闡明正態分佈的概念。

機器學習的世界是以機率分佈為中心的,而機率分佈的核心是正態分佈。本文說明了什麼是正態分佈,以及為什麼正態分佈的使用如此廣泛,尤其是對資料科學家和機器學習專家來說。

我會從最基礎的內容開始解釋,以便讀者們理解為什麼正態分佈如此重要。

文章結構如下:

什麼是機率分佈?

什麼是正態分佈?

為什麼變數如此青睞正態分佈

如何用 Python 檢視檢視特徵的分佈?

其它分佈變一變也能近似正態分佈

高中就開始學的正態分佈,原來如此重要

Unsplash,由 timJ 釋出。

先讓我們來看一點背景知識:

1。 首先,要注意的最重要的一點是,正態分佈也被稱為高斯分佈。

2。 它是以天才卡爾·弗里德里希·高斯(Carl Friedrich Gauss)的名字命名的。

3。 最後需要注意的是,簡單的預測模型一般都是最常用的模型,因為它們易於解釋,也易於理解。現在補充一點:正態分佈因為簡單而流行。

因此,正態機率分佈很值得我們去花時間瞭解。

什麼是機率分佈?

想象我們正在自己的資料科學專案中構建感興趣的預測模型:

如果我們想準確地預測變數,那麼首先我們要了解目標變數的基本行為。

我們先要確定目標變數可能輸出的結果,以及這個可能的輸出結果是離散值(孤立值)還是連續值(無限值)。簡單點解釋就是,如果我們要評估骰子的行為,那麼第一步是要知道它可以取 1 到 6 之間的任一整數值(離散值)。

然後下一步是開始為事件(值)分配機率。因此,如果一個值不會出現,則機率為 0%。

機率越高,事件發生的可能性就越大。

高中就開始學的正態分佈,原來如此重要

Unsplash,Brett Jordan 釋出

舉個例子,我們可以大量重複一個實驗,並記錄我們檢索到的變數值,這樣機率分佈就會慢慢展現在我們的面前。

每次實驗產生一個值,這些值可以分配到類別/桶中了。對每個桶來說,我們可以記錄變數值出現在桶裡的次數。例如,我們可以扔 10,000 次骰子,每次骰子會產生 6 個可能的值,我們可以建立 6 個桶。並記錄每個值出現的次數。

我們可以根據這些值作圖。所作曲線就是機率分佈曲線,目標變數得到一個值的機率就是該變數的機率分佈。

理解了值的分佈方式後,就可以開始估計事件的機率了,甚至可以使用公式(機率分佈函式)。因此,我們可以更好地理解它的行為。機率分佈依賴於樣本的矩,比如平均值、標準差、偏度及峰度。如果對所有機率求和,總和為 100%。

現實世界中存在很多機率分佈,最常用的是「正態分佈」。

什麼是正態機率分佈

如果對機率分佈作圖,得到一條倒鐘形曲線,樣本的平均值、眾數以及中位數是相等的,那麼該變數就是正態分佈的。

這是正態分佈鐘形曲線的示例:

高中就開始學的正態分佈,原來如此重要

上面是一個變數的高斯分佈圖形,像神經網路那樣上百萬的引數量,每個引數都有自己獨立的分佈形狀,還有極其恐怖的聯合分佈形狀。這種高維聯合分佈就主導了不同任務的表現,因此理解和估計目標變數的機率分佈是很重要的。

以下變數非常接近正態分佈:

1。 人群的身高

2。 成年人的血壓

3。 擴散後的粒子的位置

4。 測量誤差

5。 人群的鞋碼

6。 員工回家所需時間

此外,我們周圍的大部分變數都呈置信度為 x% 的正態分佈(x<100)。所以說,生活中經常出現的各種變數,差不多都能用高斯分佈描述。

好理解的正態分佈

正態分佈是隻依賴資料集中兩個引數的分佈,這兩個引數分別是:樣本的平均值和標準差。

平均值——樣本中所有點的平均值。

標準差——表示資料集與樣本均值的偏離程度。

分佈的這一特性讓統計人員省事不少,因此預測任何呈正態分佈的變數準確率通常都很高。值得注意的是,一旦你研究過自然界中大多數變數的機率分佈,你會發現它們都大致遵循正態分佈。

正態分佈很好解釋。因為:

1。 分佈的均值、眾數和中位數是相等的;

2。 我們只要用平均值和標準差就可以解釋整個分佈。

為什麼這麼多變數近似正態分佈?

為什麼樣本一多,那麼總會有一堆樣本都非常普通?這個想法背後有這樣一個定理:你在大量隨機變數上多次重複一個實驗時,它們的分佈總和將非常接近正態性(normality)。

人的身高是一個基於其他隨機變數(比如一個人所消耗的營養量、他們居住的環境以及他們的基因等)的隨機變數,這些隨機變數的分佈總和最終是非常接近正態的。這就是中心極限定理。

我們從前文了解到,正態分佈是許多隨機分佈的和。如果我們對正態分佈密度函式作圖,那所作曲線有如下特性:

高中就開始學的正態分佈,原來如此重要

這個鐘形曲線平均值為 100,標準差為 1。

平均值是曲線的中心。這是曲線的最高點,因為大多數點都在平均值附近;

曲線兩側點的數量是相等的。曲線中心的點數量最多;

曲線下的面積是變數能取的所有值的機率和;

因此曲線下面的總面積為 100%。

高中就開始學的正態分佈,原來如此重要

上圖介紹了非常出名的 3σ原則,即:

約有 68。2% 的點落在 ±1 個標準差的範圍內

約有 95。5% 的點落在 ±2 個標準差的範圍內

約有 99。7% 的點落在 ±3 個標準差的範圍內。

這樣我們就可以輕鬆地估計出變數的波動性,還可以給出一個置信水平,估計它可能取的值是多少。例如,在上面的灰色鍾型曲線中,變數值出現在 101~99 之間的機率約為 68。2%。想象一下,當你根據這樣的資訊做決定時,你的信心有多充足。

機率分佈函式

正態分佈的機率密度函式是:

高中就開始學的正態分佈,原來如此重要

機率密度函式本質上是連續隨機變數取某些值的機率。例如想知道變量出現在 0 到 1 之間,它的機率就能透過機率密度函式求出。

如果你用計算好的機率密度函式繪製機率分佈曲線,那麼給定範圍的曲線下的面積就描述了目標變數在該範圍內的機率。

機率分佈函式是根據多個引數(如變數的平均值或標準差)計算得到的。

我們可以用機率分佈函式求出隨機變數在一個範圍內取值的相對機率。舉個例子,我們可以記錄股票的日收益,把它們分到合適的桶中,然後找出未來收益機率在 20~40% 的股票。

標準差越大,樣本波動越大。

如何用 Python 找出特徵分佈?

我用過的最簡單的方法是在 Pandas 的 DataFrame 中載入所有特徵,然後直接呼叫它的方法找出特徵的機率分佈:

高中就開始學的正態分佈,原來如此重要

這裡的 bins 表示分佈的柱狀數量。當然上面並不是一個正態分佈,那麼當變數滿足正態分佈時,它意味著什麼?

這意味著,如果你把大量分佈不同的隨機變數加在一起,你的新變數最終也服從正態分佈,這就是中心極限定理的魅力。此外,服從正態分佈的變數會一直服從正態分佈。舉個例子,如果 A 和 B 是兩個服從正態分佈的變數,那麼:

AxB 服從正態分佈;

A+B 服從正態分佈。

變數還是乖乖地變成正態分佈吧

如果樣本滿足某個未知的分佈,那麼透過一系列操作,它總是能變成正態分佈。相反,標準正態分佈的疊加與轉換,也一定能變化為任意未知分佈。從標準正態轉換到未知分佈,就是很多機器學習模型希望做到的,不論是視覺中的 VAE 或 GAN,還是其它領域的模型。

但對於傳統統計學,我們更希望將特徵的分佈轉換成正態分佈,因為正態分佈簡單又好算呀。下面展示了幾種轉換為標準正態的方法,像相信變換什麼的,在高中都有學過。

1. 線性變換

我們收集到作為變數的樣本後,就可以用下面的公式對樣本做線性變換,從而計算出

Z 分數

計算平均值

計算標準差

用下式根據每一個值 x 計算出 Z

高中就開始學的正態分佈,原來如此重要

以前 x 可能服從某個未知分佈,但是歸一化後的 Z 是服從正態分佈的。嗯,這就是做批次歸一化或其它歸一化的好處吧。

2.Box-cox 變換

你可以用 Python 的 SciPy 包將資料轉換成正態分佈:

scipy。stats。boxcox(x, lmbda=None, alpha=None)

高中就開始學的正態分佈,原來如此重要

3.YEO-JOHBSON 變換

此外,也可以用強大的 yeo-johnson 變換。Python 的 sci-kit learn 提供了合適的函式:

sklearn。preprocessing。PowerTransformer(method=’yeo-johnson’, standardize=True, copy=True)

最後,非常重要的一點是,在沒有做任何分析的情況下假設變數服從正態分佈是很不明智的。

以遵循泊松分佈(Poisson distribution)、t 分佈(student-t 分佈)或二項分佈(Binomial distribution)的樣本為例,如果錯誤地假設變數服從正態分佈可能會得到錯誤的結果。

原文連結:https://medium。com/fintechexplained/ever-wondered-why-normal-distribution-is-so-important-110a482abee3