1. 程式人生 > >機器學習總結(一)

機器學習總結(一)

快找工作了,之前學的知識感覺太零碎,自問面試的時候能不能對答如流,覺得沒什麼底氣。所以準備將之前所學做一個系統的總結,既是對所學知識的昇華,也可以幫助初學者理清一個思路。那就從最簡單的線性模型開始吧。

線性模型

線性迴歸

首先解釋一下什麼叫回歸,給定一個點集,能夠用一條曲線,平面,或者超平面去擬合。這個過程就叫回歸,如果是用來擬合的是直線,就叫線性迴歸,如果是一條二次曲線就叫二次迴歸。機器學習可以通過這些點,學習出一條曲線或平面,超平面,來預測未知數。而直線又可以用方程表示,所以這個過程就變為了求引數的過程。我們就需要一個函式來評估預測結果的好壞,從而學習引數,這個函式就是損失函式。線上性迴歸裡,我們採用歐氏距離作為損失函式。公式如下:

J(\theta )=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta }(\mathbf{x^{i}})-y^{i})^{2} .....(1) 

h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+...+\theta _{n}x_{n}......(2)

下面我們來解釋下這兩個公式其中公式(2)表示的是一個線性函式模型,它輸入是n個特徵,從而預測出一個值。y是這些特徵x對應的真實輸出。然後公式(1)裡面的\mathbf{x^{i}}是一個包含了公式(1)裡面所有x的一個向量。i是第i個樣本的意思,總共有m個樣本,一個樣本它包括了n個特徵。為了讓預測值儘可能的接近實際值。所有我們要做的就是最小化公式(1)。有兩種方法:

1.最小二乘法。

2.梯度下降法。

這一理解的集幾何解釋,如圖,圖中輸入是一個特徵即房子的尺寸。直線就是要擬合出來的直線。

下面我們來求解,先用最小二乘法的方法:

我們知道求一個凸函式的極值的方法是,對x求導另其等於0。我們這裡是要求θ的值,所以就對θ求偏導數。我們首先從簡單的例子入手,假設只有一個特徵,總共有m個樣本。

但是一般情況下都不止一個特徵x,有多個特徵,這稱為多元線性迴歸。所以我們也要知道向量表示時的推導公式,如下:

上面的推導用到了一些矩陣論裡的公式,這裡列出來:

這樣我們的最小二乘法完成了。我們觀察上面的結果,就會發現這個演算法的兩個缺點:

首先它要求X^{T}X的逆矩陣,要求逆,矩陣必須滿秩,因為求逆矩陣就要求行列式,不滿秩的矩陣行列式為零,沒辦法做分母。而X^{T}X顯然不一定滿秩,為了解決這個問題,統計學家引入裡嶺迴歸的概念。即在X^{T}X上加一個\lambdaI從而使得矩陣非奇異,其中矩陣I是一個n*n的單位矩陣,對角線上全為1,其他元素為0. 而\lambda是使用者自己定義的。公式就變為:

\theta =(X^{T}X+\lambda I)^{^{-1}}X^{T}y

嶺迴歸最先用來處理特徵數多於樣本數的情況,現在用於在估計中加入偏差,從而得到更好的估計。這裡通過引入\lambda

來限制所有θ的和,通過引入該懲罰,能夠減少不重要的引數,相當於引入正則化項。在統計學裡這個技術叫縮減(shrinkage)。

縮減可以去掉不重要的引數。

第二個缺點就是計算量太大,求逆本來就是一個計算量特別大的事情,如果資料集X很大,那麼計算量就會很大很大。

參考

既然最小二乘法存在這些缺點,我們在適當的時候就可以用梯度下降法代替。梯度下降法,是用一種迭代的方法來不斷趨近最優解,為了高效,所以我們就選擇函式值變化最快的方向,那就是梯度方向。α為步長,就決定了朝著這個方向每次邁的步子有多大。怎麼求梯度呢,我們就要對θ向量裡面的每個分量求偏導,然後更新對應的θ值。那麼梯度下降法呢通常會有兩種方法。一種是批量梯度下降法,這個方法計算量比較大,因為它每次都遍歷了所有的資料集。比較適合較小的資料集。還有一種是隨機梯度下降法。它每次只用一個樣本的梯度來更新引數,計算速度快,在深度學習裡面隨機梯度下降法用的較多。