入數(shù)據(jù)科學(xué)大坑,我需要什么樣的數(shù)學(xué)水平?
作為一門基礎(chǔ)性學(xué)科,數(shù)學(xué)在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域都發(fā)揮著不可或缺的作用。數(shù)學(xué)基礎(chǔ)是理解各種算法的先決條件,也將幫助我們更深入透徹地了解算法的內(nèi)在原理。所以,本文作者闡釋了數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)為何離不開(kāi)數(shù)學(xué),并提供了統(tǒng)計(jì)學(xué)與概率論、多變量微積分、線性代數(shù)以及優(yōu)化方法四個(gè)數(shù)學(xué)分支中需要熟悉的一些數(shù)學(xué)概念。
本文的作者是物理學(xué)家、數(shù)據(jù)科學(xué)教育者和作家 Benjamin Obi Tayo 博士,他的研究興趣在于數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、AI、Python 和 R 語(yǔ)言、預(yù)測(cè)分析、材料科學(xué)和生物物理學(xué)。
本文作者 Benjamin Obi Tayo。
數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)離不開(kāi)數(shù)學(xué)
如果你是一個(gè)數(shù)據(jù)科學(xué)愛(ài)好者,則大概會(huì)產(chǎn)生以下兩個(gè)疑問(wèn):
- 我?guī)缀鯖](méi)有數(shù)學(xué)背景,那么能成為數(shù)據(jù)科學(xué)家嗎?
- 哪些基本的數(shù)學(xué)技能在數(shù)據(jù)科學(xué)中非常重要呢?
我們都知道,數(shù)據(jù)科學(xué)離不開(kāi)各式各樣的擴(kuò)展包。并且,現(xiàn)在有很多性能強(qiáng)大的包可以用來(lái)構(gòu)建預(yù)測(cè)模型或者用來(lái)生成可視化數(shù)據(jù)。如下列舉了用于描述性和預(yù)測(cè)性分析的一些最常見(jiàn)包:
- Ggplot2
- Matplotlib
- Seaborn
- Scikit-learn
- Caret
- TensorFlow
- PyTorch
- Keras
得益于以上這些擴(kuò)展包,任何人都可以構(gòu)建模型或者生成可視化數(shù)據(jù)。但與此同時(shí),要優(yōu)化模型進(jìn)而生成性能最佳的可靠模型,擁有強(qiáng)大的數(shù)學(xué)背景也是很有必要的。
也就是說(shuō),構(gòu)建模型只是一方面,另一方面還需要對(duì)模型進(jìn)行解釋,得出有意義的結(jié)論,這樣才能更好地做出數(shù)據(jù)驅(qū)動(dòng)的決策。
最后,在使用這些包之前,你需要理解每個(gè)包中蘊(yùn)含的數(shù)學(xué)基礎(chǔ),這樣才不會(huì)只把這些包當(dāng)作黑盒工具(black-box tool)。
案例分析:構(gòu)建一個(gè)多元回歸模型
假設(shè)我們要構(gòu)建一個(gè)多元回歸模型,那么需要事先問(wèn)自己幾個(gè)問(wèn)題:
- 數(shù)據(jù)集有多大?
- 特征變量和目標(biāo)變量是什么?
- 哪些預(yù)測(cè)特征與目標(biāo)變量關(guān)聯(lián)最大?
- 哪些特征比較重要?
- 是否應(yīng)該擴(kuò)展特征?
- 數(shù)據(jù)集應(yīng)該如何劃分成訓(xùn)練集和測(cè)試集?
- 主成分分析(principal component analysis, PCA)是什么?
- 是否應(yīng)該使用 PCA 刪除多余特征?
- 如何評(píng)估模型?用 R2 值、MSE 還是 MAE?
- 如何提升模型的預(yù)測(cè)能力?
- 是否使用正則化回歸模型(regularized regression model)?
- 回歸系數(shù)是多少?
- 截距是多少(intercept)?
- 是否使用像 K 近鄰回歸(KNeighbors regression)或者支持向量回歸(support vector regression)這樣的無(wú)參數(shù)回歸模型?
- 模型中的超參數(shù)是多少?如何調(diào)整超參數(shù)使模型性能達(dá)到最佳?
很明顯,如果沒(méi)有良好的數(shù)學(xué)背景,你將無(wú)法解決上述問(wèn)題。因此,在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中,數(shù)學(xué)技能和編程技能一樣重要,這很關(guān)鍵。
作為一個(gè)數(shù)據(jù)科學(xué)的推崇者,投入時(shí)間來(lái)學(xué)習(xí)數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中的理論基礎(chǔ)和數(shù)學(xué)基礎(chǔ)很有必要。毫不夸張地說(shuō),你所構(gòu)建的可靠有效模型能否用于解決現(xiàn)實(shí)世界的問(wèn)題,這也將取決于你的數(shù)學(xué)技能有多好。
接下來(lái)討論一下數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中一些必要的數(shù)學(xué)技能。
數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中必要的數(shù)學(xué)技能
數(shù)學(xué)包羅萬(wàn)象,任何人都不可能門門精通。所以,在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)研究中,我們可以根據(jù)自身所在的具體領(lǐng)域、手頭的具體工作或者使用的具體算法來(lái)有側(cè)重地學(xué)習(xí)對(duì)應(yīng)的數(shù)學(xué)技能。
1. 統(tǒng)計(jì)學(xué)與概率論
統(tǒng)計(jì)學(xué)和概率論可用于可視化變量、數(shù)據(jù)預(yù)處理、特征變換、數(shù)據(jù)插補(bǔ)、降維、特征工程和模型評(píng)估等等。
以下是需要熟悉的一些統(tǒng)計(jì)學(xué)與概率論概念:
- 平均數(shù)、中位數(shù)、眾數(shù)、標(biāo)準(zhǔn)差 / 方差;
- 相關(guān)系數(shù)和協(xié)方差矩陣、概率分布(二項(xiàng)分布、泊松分布和正態(tài)分布);
- p 值、貝葉斯定理(精度、召回率、正預(yù)測(cè)值、負(fù)預(yù)測(cè)值、混淆矩陣和 ROC 曲線)、中心極限定理
- ;R_2 值、均方誤差(MSE)、A/B 測(cè)試、蒙特卡羅模擬。
2. 多變量微積分(Multivariable Calculus)
大多數(shù)機(jī)器學(xué)習(xí)模型是使用包含幾種特征或預(yù)測(cè)變量的數(shù)據(jù)集來(lái)構(gòu)建的。因此,熟悉多變量微積分對(duì)于構(gòu)建機(jī)器學(xué)習(xí)模型非常重要。
以下是你需要熟悉的多變量微積分?jǐn)?shù)學(xué)概念:
- 多元函數(shù)、導(dǎo)數(shù)和梯度、階躍函數(shù);
- Sigmoid 函數(shù)、Logit 函數(shù)、ReLU 函數(shù)、損失函數(shù);
- Plot 函數(shù)繪制、函數(shù)最小值和最大值。
3. 線性代數(shù)
線性代數(shù)是機(jī)器學(xué)習(xí)中最重要的數(shù)學(xué)技能,一個(gè)數(shù)據(jù)集可以被表示為一個(gè)矩陣。線性代數(shù)可用于數(shù)據(jù)預(yù)處理、數(shù)據(jù)轉(zhuǎn)換以及降維和模型評(píng)估。
以下是你需要熟悉的線性代數(shù)概念:
- 向量、向量范數(shù);
- 矩陣、矩陣的轉(zhuǎn)置、矩陣的逆、矩陣的行列式、矩陣的跡、點(diǎn)積、特征值、特征向量。
4. 優(yōu)化方法
大多數(shù)機(jī)器學(xué)習(xí)算法通過(guò)最小化目標(biāo)函數(shù)的方法來(lái)執(zhí)行預(yù)測(cè)建模。
以下是你需要熟悉的優(yōu)化數(shù)學(xué)概念:
- 損失函數(shù) / 目標(biāo)函數(shù)、似然函數(shù)、誤差函數(shù)、梯度下降算法及其變體。
總之,作為一個(gè)數(shù)據(jù)科學(xué)的推崇者,應(yīng)該時(shí)刻謹(jǐn)記,理論基礎(chǔ)對(duì)構(gòu)建有效可靠的模型至關(guān)重要。因此,你應(yīng)該投入足夠的時(shí)間去研究每一種機(jī)器學(xué)習(xí)算法背后的數(shù)學(xué)理論。
原文鏈接:
https://medium.com/towards-artificial-intelligence/how-much-math-do-i-need-in-data-science-d05d83f8cb19
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】