【寫在前面】:看了不少書,學(xué)了不少東西,希望寫一篇 “俗套” 的機(jī)器學(xué)習(xí)筆記...
?? 一、關(guān)于機(jī)器學(xué)習(xí)
【解釋】:機(jī)器學(xué)習(xí)是一門能夠使用編程,讓計(jì)算機(jī)從數(shù)據(jù)中學(xué)習(xí)的計(jì)算機(jī)科學(xué)技術(shù)(和藝術(shù))。
【特點(diǎn)】:機(jī)器學(xué)習(xí) 能夠自動(dòng)地從過往經(jīng)驗(yàn)中學(xué)習(xí)知識(shí)。
多種解讀方式
機(jī)器學(xué)習(xí)應(yīng)用在數(shù)據(jù)分析領(lǐng)域 = 數(shù)據(jù)挖掘
將機(jī)器學(xué)習(xí)應(yīng)用在圖像處理領(lǐng)域 = 計(jì)算機(jī)視覺
將機(jī)器學(xué)習(xí)應(yīng)用于人臉識(shí)別領(lǐng)域 = 生物特征識(shí)別
?? 二、機(jī)器學(xué)習(xí)的用途
- 有的任務(wù)只能由機(jī)器學(xué)習(xí)完成。
例如,垃圾郵件檢測。 - 提高工作效率。
例如:數(shù)據(jù)挖掘、計(jì)算機(jī)視覺、自然語言處理、生物特征識(shí)別、語音、手寫識(shí)別和機(jī)器人運(yùn)用等。

?? 三、功能強(qiáng)大的機(jī)器學(xué)習(xí)框架-sklearn
安裝 sklearn
pip install sklearn
【溫馨提示】:要是下載很慢的話,可以使用清華源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
【scikit-learn 介紹】:是基于 Python 語言的機(jī)器學(xué)習(xí)工具。是簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具。
python中的開源軟件庫
python有一些常用于執(zhí)行數(shù)據(jù)處理和機(jī)器學(xué)習(xí)的開源軟件庫??梢越柚@些第三方擴(kuò)展庫(如Numpy、Pandas、Matplotlib、Scikit-learn等)來實(shí)現(xiàn)數(shù)據(jù)分析和機(jī)器學(xué)習(xí)的功能。
具體的一些常用的庫和官網(wǎng)如下表所示:
| 功能描述 | 【機(jī)器學(xué)習(xí)】第三方庫 | 官網(wǎng) |
|---|---|---|
| 矩陣操作函數(shù)庫 | Numpy | https://www.numpy.org.cn/ |
| Python的繪圖庫 | Matplotlib | https://www.matplotlib.org.cn/ |
| 數(shù)據(jù)分析包 | Pandas | https://www.pypandas.cn/ |
| 科學(xué)計(jì)算的核心包 | Scipy | https://www.scipy.org/ |
| 機(jī)器學(xué)習(xí)函數(shù)庫 | Scikit-learn | https://sklearn.apachecn.org/ |
| 統(tǒng)計(jì)建模工具包 | StatsModels | https://pypi.org/project/statsmodels/0.4.3/ |
| 深度學(xué)習(xí)框架 | TensorFlow | https://tensorflow.google.cn/ |
【更多sklearn知識(shí)】:https://sklearn.apachecn.org/
?? 四、機(jī)器學(xué)習(xí)的種類
關(guān)于機(jī)器學(xué)習(xí)的分類方式,我接受以下三類分類方式:是否有人類監(jiān)督的角度劃分、從系統(tǒng)是否可以傳入數(shù)據(jù)流進(jìn)行增量學(xué)習(xí)的角度劃分、從是否泛化的角度劃分。
1、從是否有人類監(jiān)督的角度劃分
(1)監(jiān)督式學(xué)習(xí)
【解釋】:用于學(xué)習(xí)的數(shù)據(jù)都是帶標(biāo)簽的數(shù)據(jù)。
常見兩種任務(wù):
- 回歸任務(wù):數(shù)據(jù)預(yù)測
- 分類任務(wù)
(2)無監(jiān)督式學(xué)習(xí)
【解釋】: 用于學(xué)習(xí)的數(shù)據(jù)都是不帶標(biāo)簽的數(shù)據(jù)。
(3)半監(jiān)督式學(xué)習(xí)
【解釋】:數(shù)據(jù)中有一部分是帶標(biāo)簽的,有一部分是不帶標(biāo)簽的數(shù)據(jù)。
(4)強(qiáng)化學(xué)習(xí)
【解釋】:考慮的是一系列動(dòng)作之后的收益最大化。
2、從系統(tǒng)是否可以傳入數(shù)據(jù)流進(jìn)行增量學(xué)習(xí)的角度劃分
(1)批量學(xué)習(xí)
【解釋一下】:訓(xùn)練時(shí),必須使用所有可用的數(shù)據(jù)進(jìn)行訓(xùn)練,通常都是離線完成的。也就是說先完成系統(tǒng)的訓(xùn)練,然后再投入到生產(chǎn)環(huán)境中。如果需要更新系統(tǒng)模型,需要重新訓(xùn)練,重新部署。
【缺點(diǎn)】:訓(xùn)練時(shí)間長,耗費(fèi)資源多。
(2)在線學(xué)習(xí)
【解釋一下】:可以循序漸進(jìn)的給系統(tǒng)提供訓(xùn)練數(shù)據(jù),逐步積累學(xué)習(xí)成果。
【缺點(diǎn)】:容易忘記老的特征??梢酝ㄟ^學(xué)習(xí)率參數(shù),調(diào)節(jié)學(xué)習(xí)速度的快慢。
【注意】:雖然名字叫在線學(xué)習(xí),實(shí)際訓(xùn)練時(shí)也是離線完成的。
3、從是否泛化的角度劃分
(1)基于實(shí)例的學(xué)習(xí)
【解釋一下】:系統(tǒng)先完全記住學(xué)習(xí)實(shí)例,然后通過某種相似度度量方式將其泛化到新的實(shí)例。
(2)基于模型的學(xué)習(xí)
【解釋一下】:從一組實(shí)例中,構(gòu)建這些實(shí)例的模型,然后用這個(gè)模型進(jìn)行預(yù)測。
?? 五、目前機(jī)器學(xué)習(xí)主要存在的挑戰(zhàn)
1、訓(xùn)練數(shù)據(jù)的不足
2、數(shù)據(jù)不具有代表性
3、質(zhì)量差數(shù)據(jù)
4、無關(guān)特征
-
5、訓(xùn)練數(shù)據(jù)過度擬合
【解釋一下】:模型擬合能力過強(qiáng),記住了太多細(xì)節(jié)。導(dǎo)致泛化能力不足。
【解決方案】:- 簡化模型。
- 使用正則化來降低模型的復(fù)雜度。
- 收集更多的數(shù)據(jù)。
- 減少訓(xùn)練數(shù)據(jù)中的噪音。
-
6、訓(xùn)練數(shù)據(jù)擬合不足
- 選擇一個(gè)帶有更多參數(shù)、更強(qiáng)大的模型。
- 給學(xué)習(xí)算法提供更好特征的數(shù)據(jù)集。
- 減少模型中約束(例如:減少正則化超參數(shù))
【知識(shí)點(diǎn)補(bǔ)充】:
關(guān)于正則化:
正則化是一種為了減小測試誤差的行為(有時(shí)候會(huì)增加訓(xùn)練誤差)。過度擬合,使用正則化來降低模型的復(fù)雜度。關(guān)于超參數(shù):
根據(jù)經(jīng)驗(yàn)進(jìn)行設(shè)定,影響到權(quán)重W和偏置b的大小,比如迭代次數(shù)、隱藏層的層數(shù)、每層神經(jīng)元的個(gè)數(shù)、學(xué)習(xí)速率等。
【了解更多】:
?? 六、測試與驗(yàn)證
一般情況下會(huì)將數(shù)據(jù)分為訓(xùn)練集和測試集。 用訓(xùn)練集的數(shù)據(jù)去訓(xùn)練模型。用測試集的數(shù)據(jù)去測試模型的泛化能力。
【知識(shí)點(diǎn)補(bǔ)充】:
- 【驗(yàn)證集】:是模型訓(xùn)練過程中單獨(dú)留出的樣本集,它可以用于調(diào)整模型的超參數(shù)和用于對模型的能力進(jìn)行初步評估。
- 【訓(xùn)練集】:用于模型擬合的數(shù)據(jù)樣本。
- 【測試集】:用來評估模最終模型的泛化能力。但不能作為調(diào)參、選擇特征等算法相關(guān)的選擇的依據(jù)。
| 類別 | 驗(yàn)證集 | 測試集 |
|---|---|---|
| 作用 | 用于調(diào)超參數(shù),監(jiān)控模型是否發(fā)生過擬合(以決定是否停止訓(xùn)練) | 評估最終模型泛化能力 |
| 使用次數(shù) | 多次使用,并不斷調(diào)參 | 僅一次使用 |
| 缺點(diǎn) | 可能導(dǎo)致訓(xùn)練好的模型泛化性能不夠 | 測試集為了具有泛化代表性,往往數(shù)據(jù)量比較大,測試一輪要很久。所以驗(yàn)證集僅僅是測試集的很小一部分,不夠具有代表性 |
泛化誤差
將模型應(yīng)用于新場景的誤差率。通常用來對模型進(jìn)行評估。
【補(bǔ)充】:如果泛化誤差很高,訓(xùn)練誤差很低,則代表 模型過度擬合。
【常理】:通常使用80%的數(shù)據(jù)做訓(xùn)練集,20%的數(shù)據(jù)做測試集。
【了解更多】:https://blog.csdn.net/Cerisier/article/details/78122653
?? 七、K-折交叉驗(yàn)證
【用法】:將訓(xùn)練集分為K個(gè)互補(bǔ)的子集,模型通過這個(gè)子集的不同組合進(jìn)行訓(xùn)練,用剩余的自己子集進(jìn)行驗(yàn)證。
一般情況下,將K折交叉驗(yàn)證用于模型調(diào)優(yōu),找到使得模型泛化性能最優(yōu)的超參值。
【了解更多】:https://blog.csdn.net/tianguiyuyu/article/details/80697223

圖片來源:http://www.itdecent.cn/p/e0844e7cdba5