【機器學習】一些基本概念及符號系統

:其實自認爲仍是很是喜歡數學的,可是對於複雜的公式仍是有種恐懼感,就像最開始學英語時,對英語的感受同樣。可是數學與英語不一樣的地方在於,你能夠盡情的刨根問底,從最基礎的知識開始瞭解,直到最終把一個符號或者公式的含義弄明白。在機器學習的過程當中,也會碰到各類各樣的符號,尤爲是遇到多參數,多樣本的狀況時,更是讓人眼花繚亂。最近學習完coursera上吳恩達老師的機器學習前兩週的課程,有種豁然開朗的感受。在此作一個小結。html

 

1. 一些基本概念



圖1. 機器學習的基本過程算法

圖1展現了機器學習的基本過程。對於學太高中數學的人來講,解方程是咱們再熟悉不過的事情了。例如一個二元一次方程組,其解(若是存在的話)就是平面上兩條直線的交點,此時方程以及參數(方程的係數)都是肯定的。咱們一般意義上的算法至關於一個定義好的函數(圖1中的$h$),應用該算法的過程就是帶入不一樣的自變量求函數值的過程。然而在機器學習算法中,最大的不一樣在於沒有一個"定義好的函數",而是須要經過收集到的數據訓練出一個函數(圖1中從Training Set到$h$的過程),本質上是對訓練集中數據的一種歸納和總結。例如只有兩個參數的線性迴歸就是在二維平面上找一條適合描述訓練集中樣本點變化規律的直線的過程。編程

傳統的肯定性算法與機器學習算法的區別能夠用下圖表示:機器學習

圖2:傳統編程與機器學習之間的差異,source函數

若是將一個程序大體分爲三個部分:輸入、輸出和算法,那麼傳統編程中已知的是輸入和算法,須要求輸出;機器學習中則是已知輸入和輸出,須要經過訓練(學習)來獲得有泛化能力的算法。學習

 

開普勒經過分析第谷留下的大約20年的天文觀測數據,創建的開普勒三大定律;孟德爾經過分析他本身在豌豆實驗中得到的不一樣性狀數據,創建了孟德爾遺傳定律。這兩位科學家所作的事情,其本質也是對實驗數據的歸納、總結,最終提煉出了具備高度歸納和普適價值的基本定律。這樣想一想,機器學習算法確實有了幾分智能的味道。spa

  • 訓練集(Training Set):爲了研究一個變量(x)與另外一個變量(y)的關係,而經過觀察、測量等方式得到的一組數據。這組數據中收集了x和與之對應的y——一個數據對(x, y)。例如咱們要研究房屋面積(x)和售價(y)之間的關係,每觀察一套已出售的房屋,就獲得一個數據對(x, y)。觀察10套已出售的房屋,就能夠獲得10個這樣的數據對,這時就獲得了一個用來研究房屋面積和售價之間的關係的訓練集了(雖然樣本量比較小)。這些數據集通常採集自現實環境中,屬於現象(咱們的目的是透過現象看本質)。
  • 樣本(Sample):訓練集中採集數據的對象就是一個樣本,例如一套已出售的房屋。
  • 模型(Model)因爲某些歷史緣由,機器學習中的模型也被叫作假設(hypothesis, h),這個h就是咱們透過現象想要尋找的"本質"。創建模型的過程一般就是肯定一個函數表達式的過程(是否還記得寒假做業中的這類題目:觀察一組數,寫出下一個數是什麼?)。最多見的模型是迴歸模型(線性迴歸或邏輯迴歸等),例如咱們假設房屋面積與售價之間的關係是一個線性迴歸模型,則能夠寫成:$$h(\theta) = \theta_0 + \theta_1 x \qquad \ldots (1)$$ 其中h是函數(可能更習慣叫作y,但在機器學習中y通常表示已知的函數值,即後面的因變量;這裏的h至關於預測獲得的y),θ是函數的參數(也能夠看作是每一個自變量的權重,權重越大,對y的影響也越大),x是自變量。
  • 訓練模型(Training Model):選定模型(選擇合適的模型須要豐富的經驗)後,函數的通常形式就肯定了。一般所說的訓練模型是指利用訓練集求解函數的待定參數的過程。上面的(1)式與直線方程的通常形式y = ax + b是相同的,這裏不過換了一種寫法。此時咱們知道模型是一條直線,爲了肯定這條直線的肯定方程,咱們須要求出兩個未知的參數——θ0(截距)和θ1(斜率),若是訓練集中只有兩個樣本,那就只是求一個二元二次方程組就解決問題了。
  • 特徵(Feature):特徵就是在一個模型中,全部想研究的自變量(x)的集合。例如咱們在研究房屋售價的模型中,全部可能影響售價的因素均可以當作是一個特徵,房屋面積、所在城市、房間個數等。在創建模型的過程當中,特徵的選擇是一個大學問,甚至有專門的分支來研究特徵選擇或特徵表示。

 

2. 訓練集的表示


上面提到過,訓練集就是許多的(x, y)數據對的集合。其中x是因變量,y是自變量。一般認爲x的變化引發了y的改變,即x的值決定了y的值。在預測房屋價格的模型中,假如咱們能找到全部影響房屋價格的因素(全部的x),而且肯定各個因素準確的參數(θ),那麼理論上能夠準確的預測出任何房屋的價格(y)。3d

2.1 單因素訓練集中自變量的表示方法

  • 單因素至關於方程中只有一個自變量,這個自變量能夠用一個小寫字母x來表示;
  • 若是收集了多個樣本,則經過在右上角添加帶括號的角標的方式區分,表示爲x(1), x(2), ..., x(m),其中m表示樣本的個數;
  • 矩陣的表示:向量通常用小寫字母表示,矩陣用大寫字母表示。全部單因素樣本中的x能夠用一個m x 1(m行1列)的列向量x(小寫字母)只有一列的矩陣就是一個列向量)來表示:$$x = \begin{pmatrix} x^{(1)} \\ x^{(2)} \\ \vdots \\ x^{(m)} \end{pmatrix}$$

 

2.2 多因素訓練集中自變量的表示方法

  • 多因素至關於方程中有多個自變量(多個feature),不一樣的自變量之間使用右下角添加不帶括號的角標來區分,表示爲x1, x2, ..., xn,其中n表示feature的個數;
  • 當存在多個樣本時,能夠用一個m x n(m行n列)的矩陣X(大寫字母)來表示:$$X = \begin{bmatrix} x_{1}^{(1)} & x_{2}^{(1)} & \ldots & x_{n}^{(1)}\\ x_{1}^{(2)} & x_{2}^{(2)} & \ldots & x_{n}^{(2)}\\ \vdots & \vdots & \ddots & \vdots \\ x_{1}^{(m)} & x_{2}^{(m)} & \ldots & x_{n}^{(m)} \end{bmatrix}$$

 

2.3 訓練集中因變量的表示方法

不管是單因素仍是多因素,每個樣本中都只包含一個因變量(y),所以只須要區分不一樣樣本間的y,y(1), y(2), ..., y(m),其中m表示樣本的個數;htm

用列向量y表示爲:$$y = \begin{pmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{pmatrix}$$對象

 

3. 參數的表示


也許是某種約定,在機器學習中,通常都是用θ來表示參數,參數是自變量X的參數(也能夠看作是每一個自變量的權重,權重越大的自變量對y的影響也越大),理論上,有多少個自變量就有多少個參數,但就像在直線方程y = ax + b中表現出來的那樣,除了x的參數a,還有一個常數項b。所以參數通常比自變量的個數多一個,當有n個自變量的時候,會有n+1個參數。

最終的模型是由一個特定的方程來表示的,方程中的未知參數,是在訓練模型的過程當中肯定的。這些參數對於全部的樣本都是相同的,例如第一個樣本x(1)中的第一個自變量x1的參數與任意其餘樣本x(i)中第一個自變量x1的參數是相同的。所以不用區分樣本間的參數,只用區分不一樣自變量之間的參數,可使用一個n+1維的列向量θ來表示全部的參數:

$$\theta = \begin{pmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \end{pmatrix}$$

 

4. 模型的表示


這裏說的模型就是一個特定的函數,上面已經提過,模型通常使用h來表示。下面用線性迴歸模型來舉例說明模型的符號表示。

 

4.1 直接表示

直接表示方法是咱們在沒有學習線性代數以前的代數表示方式。

  • 單變量線性迴歸方程:$$h_\theta (x) = \theta_0 + \theta_1 x$$
  • 多變量線性迴歸方程:$$h_\theta (x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \theta_3 x_3 + \ldots + \theta_n x_n$$

 

4.2 矩陣表示

學習了線性代數後,可使用矩陣來表示上面的方程,不只表示起來方便,直接進行矩陣運算效率也更高效。在這裏須要特別說明的一點是,爲了配合矩陣的表示,在上面的方程中添加了x0,而且x0=1,且將θ0做爲x0的參數

  • 單變量/多變量線性迴歸方程:$$h_\theta (x) = X \theta = \begin{bmatrix} x_{0}^{(1)} & x_{1}^{(1)} & \ldots & x_{n}^{(1)}\\ x_{0}^{(2)} & x_{1}^{(2)} & \ldots & x_{n}^{(2)}\\ \vdots & \vdots & \ddots & \vdots \\ x_{0}^{(m)} & x_{1}^{(m)} & \ldots & x_{n}^{(m)} \end{bmatrix} \begin{bmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \end{bmatrix}$$,此時X是一個m x (n+1)的矩陣,每一行表示一個樣本,每一列表示一個特徵,結果是一個m x 1的列向量,其中m表示樣本的個數,n表示變量的個數(X中的每一列具備一樣的參數,一列表示在不一樣的樣本中同一個特徵的取值);
  • 當只有一個樣本多個變量時,還能夠表示爲:$$h_\theta (x) = \theta^T x = \begin{bmatrix} \theta_0 & \theta_1 & \ldots & \theta_n \end{bmatrix} \begin{bmatrix} x_0 \\ x_1 \\ \vdots \\ x_n \end{bmatrix}$$,此時x是一個(n+1)維的列向量,每一行表示一個變量的值。

 

 

Reference


https://www.coursera.org/learn/machine-learning

http://blog.sciencenet.cn/blog-100379-1037923.html

https://www.sumologic.com/blog/devops/machine-learning-deep-learning/

相關文章
相關標籤/搜索