圖1. 機器學習的基本過程
訓練集(Training Set):為了研究一個變量(x)與另一個變量(y)的關系,而通過觀察、測量等方式獲得的一組數據。這組數據中收集了x和與之對應的y——一個數據對(x, y)。例如我們要研究房屋面積(x)和售價(y)之間的關系,每觀察一套已出售的房屋,就得到一個數據對(x, y)。觀察10套已出售的房屋,就可以得到10個這樣的數據對,這時就得到了一個用來研究房屋面積和售價之間的關系的訓練集了(雖然樣本量比較?。?。這些數據集一般采集自現實環(huán)境中,屬于現象(我們的目的是透過現象看本質)。
樣本(Sample):訓練集中采集數據的對象就是一個樣本,例如一套已出售的房屋。
模型(Model):由于某些歷史原因,機器學習中的模型也被叫做假設(hypothesis, h),這個h就是我們透過現象想要尋找的“本質”。建立模型的過程通常就是確定一個函數表達式的過程(是否還記得寒假作業(yè)中的這類題目:觀察一組數,寫出下一個數是什么?)。最常見的模型是回歸模型(線性回歸或邏輯回歸等),例如我們假設房屋面積與售價之間的關系是一個線性回歸模型,則可以寫成: h(θ)=θ0+θ1x…(1)h(θ)=θ0+θ1x…(1) 其中h是函數(可能更習慣叫做y,但在機器學習中y一般表示已知的函數值,即后面的因變量;這里的h相當于預測得到的y),θ是函數的參數(也可以看做是每個自變量的權重,權重越大,對y的影響也越大),x是自變量。
訓練模型(Training Model):選定模型(選擇合適的模型需要豐富的經驗)后,函數的一般形式就確定了。通常所說的訓練模型是指利用訓練集求解函數的待定參數的過程。上面的(1)式與直線方程的一般形式y(tǒng) = ax + b是相同的,這里不過換了一種寫法。此時我們知道模型是一條直線,為了確定這條直線的確定方程,我們需要求出兩個未知的參數——θ0(截距)和θ1(斜率),如果訓練集中只有兩個樣本,那就只是求一個二元二次方程組就解決問題了。
特征(Feature):特征就是在一個模型中,所有想研究的自變量(x)的集合。例如我們在研究房屋售價的模型中,所有可能影響售價的因素都可以看成是一個特征,房屋面積、所在城市、房間個數等。在建立模型的過程中,特征的選擇是一個大學問,甚至有專門的分支來研究特征選擇或特征表示。
2. 訓練集的表示上面提到過,訓練集就是許多的(x, y)數據對的集合。其中x是因變量,y是自變量。通常認為x的變化引起了y的改變,即x的值決定了y的值。在預測房屋價格的模型中,假如我們能找到所有影響房屋價格的因素(所有的x),并且確定各個因素準確的參數(θ),那么理論上可以準確的預測出任何房屋的價格(y)。
2.1 單因素訓練集中自變量的表示方法
單因素相當于方程中只有一個自變量,這個自變量可以用一個小寫字母x來表示;
如果收集了多個樣本,則通過在右上角添加帶括號的角標的方式區(qū)分,表示為x(1), x(2), 。。., x(m),其中m表示樣本的個數;
矩陣的表示:向量一般用小寫字母表示,矩陣用大寫字母表示。所有單因素樣本中的x可以用一個m x 1(m行1列)的列向量x(小寫字母)(只有一列的矩陣就是一個列向量)來表示: ???????x=(x(1)x(2)?x(m))
2.2 多因素訓練集中自變量的表示方法
多因素相當于方程中有多個自變量(多個feature),不同的自變量之間使用右下角添加不帶括號的角標來區(qū)分,表示為x1, x2, 。。., xn,其中n表示feature的個數;
當存在多個樣本時,可以用一個m x n(m行n列)的矩陣X(大寫字母)來表示: ?????????X=[x1(1)x2(1)…xn(1)x1(2)x2(2)…xn(2)????x1(m)x2(m)…xn(m)]
2.3 訓練集中因變量的表示方法
無論是單因素還是多因素,每一個樣本中都只包含一個因變量(y),因此只需要區(qū)分不同樣本間的y,y(1), y(2), 。。., y(m),其中m表示樣本的個數;
用列向量y表示為:
???????y=(y(1)y(2)?y(m))
3. 參數的表示也許是某種約定,在機器學習中,一般都是用θ來表示參數,參數是自變量X的參數(也可以看做是每個自變量的權重,權重越大的自變量對y的影響也越大),理論上,有多少個自變量就有多少個參數,但就像在直線方程y = ax + b中表現出來的那樣,除了x的參數a,還有一個常數項b。因此參數一般比自變量的個數多一個,當有n個自變量的時候,會有n+1個參數。
最終的模型是由一個特定的方程來表示的,在訓練模型的過程中,確定了這個方程中的未知參數。這些參數對于所有的樣本都是相同的,例如第一個樣本x(1)中的第一個自變量x1的參數與任意其他樣本x(i)中第一個自變量x1的參數是相同的。因此不用區(qū)分樣本間的參數,只用區(qū)分不同自變量之間的參數,可以使用一個n+1維的列向量θ來表示所有的參數:
??????θ=(θ0θ1?θn)
4. 模型的表示這里說的模型就是一個特定的函數,上面已經提過,模型一般使用h來表示。下面用線性回歸模型來舉例說明模型的符號表示。
4.1 直接表示
直接表示方法是我們在沒有學習線性代數之前的代數表示方式。
單變量線性回歸方程: hθ(x)=θ0+θ1xhθ(x)=θ0+θ1x
多變量線性回歸方程: nhθ(x)=θ0+θ1x1+θ2x2+θ3x3+…+θnxn
4.2 矩陣表示
學習了線性代數后,可以使用矩陣來表示上面的方程,不僅表示起來方便,直接進行矩陣運算效率也更高效。在這里需要特別說明的一點是,為了配合矩陣的表示,在上面的方程中添加了x0,并且x0=1,且將θ0作為x0的參數。
單變量/多變量線性回歸方程: ??????hθ(x)=Xθ=[x0(1)x1(1)…xn(1)x0(2)x1(2)…xn(2)????x0(m)x1(m)…xn(m)][θ0θ1?θn] ,此時X是一個m x (n+1)的矩陣,每一行表示一個樣本,每一列表示一個特征,結果是一個m x 1的列向量,其中m表示樣本的個數,n表示變量的個數(X中的每一列具有同樣的參數,一列表示在不同的樣本中同一個特征的取值);
當只有一個樣本多個變量時,還可以表示為: ??????hθ(x)=θTx=[θ0θ1…θn][x0x1?xn] ,此時x是一個(n+1)維的列向量,每一行表示一個變量的值。