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