正態(tài)分布在機(jī)器學(xué)習(xí)中為何如此重要?
↑↑↑點(diǎn)擊上方藍(lán)字,回復(fù)資料,10個(gè)G的驚喜
從中心極限定理到正態(tài)分布
眾所周知 :一顆骰子每個(gè)面的概率相等
兩個(gè)骰子面值之和的概率,是兩個(gè)骰子獨(dú)立事件的概率的和。比如,得到點(diǎn)數(shù)3的概率為:一顆1、一顆2的概率 加上 一顆2、一顆1的概率 之和:
P(1)P(2)+P(2)P(1)=1/6×1/6+1/6×1/6=1/18?
對(duì)所擲的點(diǎn)數(shù)求和并將數(shù)值在坐標(biāo)軸上標(biāo)記出來,當(dāng)擲出次數(shù)增大到無限時(shí),坐標(biāo)軸上的散點(diǎn)就會(huì)呈現(xiàn)出“正態(tài)分布”的形式。
這就是概率統(tǒng)計(jì)中大名鼎鼎的中心極限定理:如果樣本量足夠大,則變量均值的采樣分布將近似于正態(tài)分布,而與該變量在總體中的分布無關(guān)。根據(jù)中心極限定理,如果一個(gè)事物受到多種因素的影響,不管每個(gè)因素本身是什么分布,它們加總后,結(jié)果的平均值就是正態(tài)分布。

from:高數(shù)叔(gaoshudashu666)
正態(tài)分布是一個(gè)在數(shù)學(xué)、物理及工程等領(lǐng)域都非常重要的概率分布,在統(tǒng)計(jì)學(xué)的許多方面有著重大的影響力。概率密度函數(shù)如下:
正態(tài)分布概率密度函數(shù)
正態(tài)分布只依賴于數(shù)據(jù)集的兩個(gè)特征:樣本的均值和方差,非常簡(jiǎn)單而又容易被解釋和理解。在大多數(shù)自然事件中,當(dāng)數(shù)據(jù)量大到一定程度時(shí),數(shù)據(jù)往往都近似服從于正態(tài)分布。比如:男女身高、壽命、血壓、考試成績(jī)、測(cè)量誤差等等。
在實(shí)際運(yùn)用中,我們更關(guān)注數(shù)據(jù)集的期望和方差這些特征量。當(dāng)我們求出了期望與方差,可以利用中心極限定理轉(zhuǎn)換為正態(tài)分布。
正態(tài)分布在機(jī)器學(xué)習(xí)中為何如此重要
在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中,我們經(jīng)常要對(duì)輸入的數(shù)據(jù)做歸一化或者在隱藏層使用Batch-Normlization(BN)操作,將數(shù)據(jù)范圍縮放到[0,1]或者[-1, 1]之間,主要作用:可以加快神經(jīng)網(wǎng)絡(luò)訓(xùn)練速度,防止過擬合。然而無論做歸一化還是BN處理,雖然將數(shù)據(jù)的均值變?yōu)?,方差變?yōu)?,但是數(shù)據(jù)的整體分布并不一定服從標(biāo)準(zhǔn)的正態(tài)分布(實(shí)際數(shù)據(jù)大部分時(shí)候都不會(huì)是),做歸一化和BN時(shí),我們求出來的均值和方差,并不能說明我們數(shù)據(jù)是服從正態(tài)分布的。
檢查特征是否滿足正態(tài)分布
判斷特征是否符合正態(tài)分布可以使用直方圖、KDE分布圖、Q-Q 圖等等。
直方圖和KDE分布圖可以比較直觀的看出數(shù)據(jù)樣本本身的分布特征,推薦seaborn中的distplot,它的主要功能是繪制單變量的直方圖,且還可以在直方圖的基礎(chǔ)上加入kdeplot和rugplot的部分內(nèi)容,是一個(gè)功能非常強(qiáng)大且實(shí)用的函數(shù)。
sns.distplot(a,?bins=None,?hist=True,?
kde=True,?rug=False,?fit=None,?hist_kws=None,?
kde_kws=None,?rug_kws=None,?fit_kws=None,?
color=None,?vertical=False,?norm_hist=False,?
axlabel=None,?label=None,?ax=None)
QQ-圖用于直觀驗(yàn)證一組數(shù)據(jù)是否來自某個(gè)分布,或者驗(yàn)證某兩組數(shù)據(jù)是否來自同一(族)分布。如果兩個(gè)分布相似,則該Q-Q圖趨近于落在y=x線上。如果兩分布線性相關(guān),則點(diǎn)在Q-Q圖上趨近于落在一條直線上,但不一定在y=x線上。
fig?=?plt.figure()
ax?=?fig.add_subplot(111)
x?=?stats.loggamma.rvs(c=2.5,?size=500)
stats.probplot(x,?dist=stats.loggamma,?sparams=(2.5,),?plot=ax)
ax.set_title("Probplot?for?loggamma?dist?with?shape?parameter?2.5")
數(shù)據(jù)變化方法:Box-Cox
Box-Cox變換是是統(tǒng)計(jì)建模中常用的一種數(shù)據(jù)變換,用于連續(xù)的響應(yīng)變量不滿足正態(tài)分布的情況。Box-Cox變換之后,可以一定程度上減小不可觀測(cè)的誤差和預(yù)測(cè)變量的相關(guān)性,可以明顯地改善數(shù)據(jù)的正態(tài)性、對(duì)稱性和方差相等性,對(duì)許多實(shí)際數(shù)據(jù)都行之有效。
from?scipy?import?stats
from?scipy.stats?import?norm,?skew?#for?some?statistics
#查看SalePrice的skewness
fig=plt.figure(figsize=(15,5))
#pic1
plt.subplot(1,2,1)
sns.distplot(trains['SalePrice'],fit=norm)
(mu,sigma)=norm.fit(trains['SalePrice'])
plt.legend(['$\mu=$?{:.2f}?and?$\sigma=$?{:.2f}'.format(mu,sigma)],loc='best')
plt.ylabel('Frequency')
plt.subplot(1,2,2)
res=stats.probplot(trains['SalePrice'],plot=plt)
plt.suptitle('Before')
#進(jìn)行Box-Cox變換
trains.SalePrice,lambda_=stats.boxcox(trains.SalePrice)
然后再看一下變換后的分布情況和QQ圖
參考
https://www.lfhacks.com/t/dice-normal https://blog.csdn.net/qq_36653505/article/details/86618648 https://blog.csdn.net/weixin_42743978/article/details/88758003 https://blog.csdn.net/jim_sun_jing/article/details/100665967
加老胡微信,圍觀朋友圈
推薦閱讀
機(jī)器學(xué)習(xí)避坑指南:訓(xùn)練集/測(cè)試集分布一致性檢查
機(jī)器學(xué)習(xí)深度研究:特征選擇中幾個(gè)重要的統(tǒng)計(jì)學(xué)概念








