現在每過一段時間都會出現幾個新的網路用語,懂的人見了會心一笑,不懂的只能摸摸腦袋,不知道“梗”在哪裡,少了許多樂趣。機器學習也有許多獨特的用語,在本節,我們先把機器學習的“行話”都介紹清楚。
模型
模型(Model)是機器學習的核心概念。如果認為程式設計有兩大組成部分,即演算法和資料結構,那麼機器學習的兩大組成部分就是模型和資料集。
如果之前沒有接觸過相關概念,想必你現在很希望直觀地理解什麼是模型,但對模型給出一個簡潔又嚴謹的定義並不容易,你可以認為它是某種機器學習演算法在設定引數後的產物,它的作用和程式設計時用到的函數一樣,可以根據某些輸入得到某些輸出。
既然叫機器學習演算法,不妨將它想象成一台機器,其上有很多旋鈕,這些旋鈕就是引數。機器本身是有輸入和輸出功能的,根據不同的旋鈕組合,同一種輸入可以產生不同的輸出,而機器學習的過程就是找到合適的那組旋鈕組合,通過輸入得到你所希望的輸出。
資料集
如果說機器學習的“機器”指的是模型,那麼資料集就可以說是驅動著這台機器去“學習”的“燃料”。有些文獻將資料集又分為訓練集和測試集,其實它們的內容和形式並無差異,只是用在不同的地方:
-
在訓練模型階段使用,就叫作訓練集;
-
在測試模型階段使用,就叫作測試集。
資料
我們剛才提到了資料集,資料集就是資料的集合。在機器學習中,我們稱一條資料為一個樣本(Sample),形式類似一維陣列。樣本通常包含多個特徵(Feature):
-
如果是用於分類問題的資料集,還會包含類別(Class Label)資訊;
-
如果是回歸問題的資料集,則會包含一個連續型的數值。
特徵
這個術語又容易讓你產生誤解了。我們一般把可以作為人或事物特點的徵象、標誌等稱作特徵,譬如這個人鼻子很大,這就是特徵,但在機器學習中,特徵是某個物件的幾個記錄維度。我們都填寫過個人資訊表,特徵就是這張表裡的空格,如名字、性別、出生日期、籍貫等,一份個人資訊表格可以看成一個樣本,名字、籍貫這些資訊就稱作特徵。
前面說資料形式類似一維陣列,那麼特徵就是陣列的值。
向量
向量為線性代數術語,機器學習模型演算法的運算均基於線性代數法則,不妨認為向量就是該類演算法所對應的“資料結構”。一條樣本資料就是以一個向量的形式輸入模型的。
一條監督學習資料的向量形式如下:
[特徵X1值,特徵X2值,…,Y1值]
矩陣
矩陣為線性代數術語,可以將矩陣看成由向量組成的陣列,形式上也非常接近二維陣列。前面所說的資料集,通常就是以矩陣的形式輸入模型的,常見的矩陣形式如下:
[
[特徵X1值,特徵X2值,…,Y1值],
[特徵X1值,特徵X2值,…,Y2值],
…
[特徵X1值,特徵X2值,…,Yn值]
]
其實這個組織形式非常類似電子試算表,不妨就以電子試算表來對照理解。每一行就是一個樣本,每一列就是一個特徵維度,譬如某個資料集一共包括了 7 個樣本,那就是有 7 行資料,每個樣本又都有 4 個維度的特徵,那就是每行資料有 4 列。
用電子試算表表示如下表所示,其中,A~D 列為特徵,E 列為結果,對比一下應該就能馬上理解資料集是怎樣用矩陣儲存資料的。
表1:用電子試算表來表示機器學習的資料集矩陣
|
A |
B |
C |
D |
E |
1 |
樣本1特徵X1的值 |
樣本1特徵X2的值 |
樣本1特徵X3的值 |
樣本1特徵X4的值 |
樣本1的Y值 |
2 |
樣本2特徵X1的值 |
樣本2特徵X2的值 |
樣本2特徵X3的值 |
樣本2特徵X4的值 |
樣本2的Y值 |
3 |
樣本3特徵X1的值 |
樣本3特徵X2的值 |
樣本3特徵X3的值 |
樣本3特徵X4的值 |
樣本3的Y值 |
4 |
樣本4特徵X1的值 |
樣本4特徵X2的值 |
樣本4特徵X3的值 |
樣本4特徵X4的值 |
樣本4的Y值 |
5 |
樣本5特徵X1的值 |
樣本5特徵X2的值 |
樣本5特徵X3的值 |
樣本5特徵X4的值 |
樣本5的Y值 |
6 |
樣本6特徵X1的值 |
樣本6特徵X2的值 |
樣本6特徵X3的值 |
樣本6特徵X4的值 |
樣本6的Y值 |
7 |
樣本7特徵X1的值 |
樣本7特徵X2的值 |
樣本7特徵X3的值 |
樣本7特徵X4的值 |
樣本7的Y值 |
需要注意的是,我們在製作電子試算表時習慣新增列頭或行頭,譬如第一行往往是時間、名字、班級這樣的資訊標籤,但機器學習使用的資料集一般並不包含這些列頭和行頭,第一格的內容就是第一個樣本的第一個特徵的值,與我們日常習慣稍有區別。