【python教程入门学习】机器学习常用术语
機器學習是一門專業(yè)性很強的技術(shù),它大量地應(yīng)用了數(shù)學、統(tǒng)計學上的知識,因此總會有一些蹩腳的詞匯,這些詞匯就像“攔路虎”一樣阻礙著我們前進,甚至把我們嚇跑。因此認識,并理解這些詞匯是首當其沖的任務(wù)。本節(jié)將介紹機器學習中常用的基本概念,為后續(xù)的知識學習打下堅實的基礎(chǔ)。
機器學習術(shù)語
1) 模型
模型這一詞語將會貫穿整個教程的始末,它是機器學習中的核心概念。你可以把它看做一個“魔法盒”,你向它許愿(輸入數(shù)據(jù)),它就會幫你實現(xiàn)愿望(輸出預(yù)測結(jié)果)。整個機器學習的過程都將圍繞模型展開,訓(xùn)練出一個最優(yōu)質(zhì)的“魔法盒”,它可以盡量精準的實現(xiàn)你許的“愿望”,這就是機器學習的目標。
2) 數(shù)據(jù)集
數(shù)據(jù)集,從字面意思很容易理解,它表示一個承載數(shù)據(jù)的集合,如果說“模型”是“魔法盒”的話,那么數(shù)據(jù)集就是負責給它充能的“能量電池”,簡單地說,如果缺少了數(shù)據(jù)集,那么模型就沒有存在的意義了。數(shù)據(jù)集可劃分為“訓(xùn)練集”和“測試集”,它們分別在機器學習的“訓(xùn)練階段”和“預(yù)測輸出階段”起著重要的作用。
3) 樣本&特征
樣本指的是數(shù)據(jù)集中的數(shù)據(jù),一條數(shù)據(jù)被稱為“一個樣本”,通常情況下,樣本會包含多個特征值用來描述數(shù)據(jù),比如現(xiàn)在有一組描述人形態(tài)的數(shù)據(jù)“180 70 25”如果單看數(shù)據(jù)你會非常茫然,但是用“特征”描述后就會變得容易理解,如下所示:
圖1:樣本&特征
由上圖可知數(shù)據(jù)集的構(gòu)成是“一行一樣本,一列一特征”。特征值也可以理解為數(shù)據(jù)的相關(guān)性,每一列的數(shù)據(jù)都與這一列的特征值相關(guān)。
4) 向量
任何一門算法都會涉及到許多數(shù)學上的術(shù)語或者公式。在本教程寫作的過程中也會涉及到很多數(shù)學公式,以及專業(yè)的術(shù)語,在這里我們先對常用的基本術(shù)語做一下簡單講解。
第一個常用術(shù)語就是“向量”,向量是機器學習的關(guān)鍵術(shù)語。向量在線性代數(shù)中有著嚴格的定義。向量也稱歐幾里得向量、幾何向量、矢量,指具有大小和方向的量。您可以形象地把它的理解為帶箭頭的線段。箭頭所指:代表向量的方向;線段長度:代表向量的大小。與向量對應(yīng)的量叫做數(shù)量(物理學中稱標量),數(shù)量只有大小,沒有方向。
在機器學習中,模型算法的運算均基于線性代數(shù)運算法則,比如行列式、矩陣運算、線性方程等等。其實對于這些運算法則學習起來并不難,它們都有著一定運算規(guī)則,只需套用即可,因此你也不必彷徨,可參考向量運算法則。向量的計算可采用 NmuPy 來實現(xiàn),如下所示:
1. import numpy as np 2. #構(gòu)建向量數(shù)組 3. a=np.array([-1,2]) 4. b=np.array([3,-1])6. #加法 7. a_b=a+b 8. #數(shù)乘 9. a2=a*2 10. b3=b*(-3) 11. #減法 12. b_a=a-b 13. print(a_b,a2,b3,b_a)輸出結(jié)果:
[2 1] [-2 4] [-9 3] [-4 3]簡而言之,數(shù)據(jù)集中的每一個樣本都是一條具有向量形式的數(shù)據(jù)。
5) 矩陣
矩陣也是一個常用的數(shù)學術(shù)語,你可以把矩陣看成由向量組成的二維數(shù)組,數(shù)據(jù)集就是以二維矩陣的形式存儲數(shù)據(jù)的,你可以把它形象的理解為電子表格“一行一樣本,一列一特征”表現(xiàn)形式如下:
圖2:矩陣表格
如果用二維矩陣的表示的話,其格式如下所示:
假設(shè)函數(shù)&損失函數(shù)
機器學習在構(gòu)建模型的過程中會應(yīng)用大量的數(shù)學函數(shù),正因為如此很多初學者對此產(chǎn)生畏懼,那么它們真會有這么可怕嗎?其實我認為至少沒有你想的那么可怕。從編程角度來看,這些函數(shù)就相當于模塊中內(nèi)置好的方法,只需要調(diào)用相應(yīng)的方法就可以達成想要的目的。而要說難點,首先你要理解你的應(yīng)用場景,然后根據(jù)實際的場景去調(diào)用相應(yīng)的方法,這才是你更應(yīng)該關(guān)注的問題。
假設(shè)函數(shù)和損失函數(shù)是機器學習中的兩個概念,它并非某個模塊下的函數(shù)方法,而是我們根據(jù)實際應(yīng)用場景確定的一種函數(shù)形式,就像你解決數(shù)學的應(yīng)用題目一樣,根據(jù)題意寫出解決問題的方程組。下面分別來看一下它們的含義。
1) 假設(shè)函數(shù)
假設(shè)函數(shù)(Hypothesis Function)可表述為y=f(x)其中 x 表示輸入數(shù)據(jù),而 y 表示輸出的預(yù)測結(jié)果,而這個結(jié)果需要不斷的優(yōu)化才會達到預(yù)期的結(jié)果,否則會與實際值偏差較大。
2) 損失函數(shù)
損失函數(shù)(Loss Function)又叫目標函數(shù),簡寫為 L(x),這里的 x 是假設(shè)函數(shù)得出的預(yù)測結(jié)果“y”,如果 L(x) 的返回值越大就表示預(yù)測結(jié)果與實際偏差越大,越小則證明預(yù)測值越來越“逼近”真實值,這才是機器學習最終的目的。因此損失函數(shù)就像一個度量尺,讓你知道“假設(shè)函數(shù)”預(yù)測結(jié)果的優(yōu)劣,從而做出相應(yīng)的優(yōu)化策略。
3) 優(yōu)化方法
“優(yōu)化方法”可以理解為假設(shè)函數(shù)和損失函數(shù)之間的溝通橋梁。通過 L(x) 可以得知假設(shè)函數(shù)輸出的預(yù)測結(jié)果與實際值的偏差值,當該值較大時就需要對其做出相應(yīng)的調(diào)整,這個調(diào)整的過程叫做“參數(shù)優(yōu)化”,而如何實現(xiàn)優(yōu)化呢?這也是機器學習過程中的難點。其實為了解決這一問題,數(shù)學家們早就給出了相應(yīng)的解決方案,比如梯度下降、牛頓方與擬牛頓法、共軛梯度法等等。因此我們要做的就是理解并掌握“科學巨人”留下的理論、方法。
對于優(yōu)化方法的選擇,我們要根據(jù)具體的應(yīng)用場景來選擇應(yīng)用哪一種最合適,因為每一種方法都有自己的優(yōu)劣勢,所以只有合適的才是最好的。
上述函數(shù)的關(guān)系圖如下所示:
圖3:函數(shù)關(guān)系圖
擬合&過擬合&欠擬合
擬合是機器學習中的重要概念,也可以說,機器學習的研究對象就是讓模型能更好的擬合數(shù)據(jù),那到底如何理解“擬合”這個詞呢?
1)擬合
形象地說,“擬合”就是把平面坐標系中一系列散落的點,用一條光滑的曲線連接起來,因此擬合也被稱為“曲線擬合”。擬合的曲線一般用函數(shù)進行表示,但是由于擬合曲線會存在許多種連接方式,因此就會出現(xiàn)多種擬合函數(shù)。通過研究、比較確定一條最佳的“曲線”也是機器學習中一個重要的任務(wù)。如下圖所示,展示一條擬合曲線(藍色曲線):
圖4:曲線擬合
提示:很多和數(shù)學相關(guān)的編程語言都內(nèi)置計算擬合曲線的函數(shù),比如 MATLAB 、Python Scipy 等,在后續(xù)內(nèi)容中還會介紹。
2) 過擬合
過擬合(overfitting)與是機器學習模型訓(xùn)練過程中經(jīng)常遇到的問題,所謂過擬合,通俗來講就是模型的泛化能力較差,也就是過擬合的模型在訓(xùn)練樣本中表現(xiàn)優(yōu)越,但是在驗證數(shù)據(jù)以及測試數(shù)據(jù)集中表現(xiàn)不佳。
舉一個簡單的例子,比如你訓(xùn)練一個識別狗狗照片的模型,如果你只用金毛犬的照片訓(xùn)練,那么該模型就只吸納了金毛狗的相關(guān)特征,此時讓訓(xùn)練好的模型識別一只“泰迪犬”,那么結(jié)果可想而知,該模型會認為“泰迪”不是一條狗。如下圖所示:
圖5:過擬合
過擬合問題在機器學習中經(jīng)常原道,主要是因為訓(xùn)練時樣本過少,特征值過多導(dǎo)致的,后續(xù)還會詳細介紹。
3) 欠擬合
欠擬合(underfitting)恰好與過擬合相反,它指的是“曲線”不能很好的“擬合”數(shù)據(jù)。在訓(xùn)練和測試階段,欠擬合模型表現(xiàn)均較差,無法輸出理想的預(yù)測結(jié)果。如下圖所示:
圖6:欠擬合
造成欠擬合的主要原因是由于沒有選擇好合適的特征值,比如使用一次函數(shù)(y=kx+b)去擬合具有對數(shù)特征的散落點(y=log2x),示例圖如下所示:
圖7:欠擬合示例圖
欠擬合和過擬合是機器學習中會遇到的問題,這兩種情況都不是我期望看到的,因此要避免,關(guān)于如何處理類似問題,在后續(xù)內(nèi)容中還會陸續(xù)講解,本節(jié)只需要大家熟悉并理解常見的機器學習術(shù)語和一些概念即可。
總結(jié)
以上是生活随笔為你收集整理的【python教程入门学习】机器学习常用术语的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring JdbcTemplate
- 下一篇: Python安装教程: