決策樹是一種樹形分類結構,一棵決策樹由內部結點和葉子結點構成,內部結點表明一個屬性(或者一組屬性),該結點的孩子表明這個屬性的不一樣取值;葉子結點表示一個類標。決策樹保證每個實例都能被一條從根結點到葉子結點的路徑覆蓋,葉子結點就是這條實例對應的類別,遍歷這條路徑的過程就是對這條實例分類的過程。關於決策樹的詳細介紹,能夠參考這篇文章。html
假設決策樹T的葉結點個數爲|T|,t是樹T的某個葉結點,該結點有$N_t$個樣本點,其中k類的樣本點有$N_{tk}$個,k=1,2,...,K(K爲類別個數),$H_t(T)$爲葉結點t上的經驗熵(即從訓練數據算出的熵),決策樹模型對訓練數據的預測偏差$C(T)$定義爲算法
$$C(T)=\sum_{t=1}^{|T|}N_tH_t(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}log\frac{N_{tk}}{N_t}$$數組
損失函數$C_\alpha(T)$:網絡
$C_\alpha(T)=C(T)+\alpha|T|$函數
參數$\alpha>=0$控制預測偏差與模型複雜度的影響。優化
在決策樹的構造階段,其優化目標是尋找最優的分裂屬性,具體實現是最大化屬性選擇指標,包括信息增益、信息增益比率、基尼指數等,構造階段用貪心策略獲得局部最優的模型。htm
在剪枝階段,其優化目標是最小化損失函數$C_\alpha(T)$,即blog
$$min_TC_a(T)$$ci
剪枝階段是一個全局優化的過程,若是把$\alpha$設置得較大,則傾向於選擇簡單的樹(此時預測偏差較大,而泛化能力較好),而若是$\alpha$設置得較小,則傾向於選擇更復雜的模型(此時預測偏差較小,而泛化能力誤差);設置爲0,那就只考慮預測偏差,即對訓練數據的擬合程度最高,但對未見過的數據,分類能力並不高。一個適當的$\alpha$在預測偏差與模型複雜度(泛化能力)之間平衡。get
線性迴歸使用線性模型擬合因變量與目標變量的關係,是最簡單的預測模型。
$$h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+...+\theta_nx_n$$,其中$x_0=1$
$$C(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2$$
選擇合適的參數組$\theta$,使得損失函數最小化:
$$min_\theta(C(\theta))$$
使用梯度降低法,不斷地進行迭代,每一步的方向是負梯度方向:
$$\theta_j=\theta_j-\alpha\frac{\partial }{\partial \theta_j}Cost(\theta)=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$
邏輯迴歸於線性迴歸有着驚人的類似,卻又有着本質的不一樣,線性迴歸的假設函數度量了一個線性模型對因變量和目標變量的擬合,即給定一個輸入,經過一個線性變換獲得一個輸出,而邏輯迴歸的假設函數計算的是對於給定輸入,其輸出y=1的機率,但邏輯迴歸與線性迴歸在計算形式上很類似,經常讓誤解爲他們僅僅是假設函數的不一樣。
$$h_\theta(x)=g(\theta^Tx)=g(\theta_0x_0+\theta_1x_1+...+\theta_nx_n)$$,其中$x_0=1$
$g(z)=\frac{1}{1+\exp^{-z}}$
這裏的損失函數再也不是線性迴歸時的求偏差平方和,由於偏差平方和不是參數$\theta$的凸函數,不容易求解全局最優解,所以該用極大釋然估計做爲損失函數,能知足凸函數的要求。
$$C(\theta)=-\frac{1}{m}[\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]$$
$$min_\theta(C(\theta))$$
使用梯度降低法,不斷地進行迭代,每一步的方向是負梯度方向:
$$\theta_j=\theta_j-\alpha\frac{\partial }{\partial \theta_j}Cost(\theta)=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$
注意到,在優化實現上,邏輯迴歸與線性迴歸的形式同樣的,只是具體的假設函數不一樣。實際上,這只是一個巧合,巧合之處在於,對各自的損失函數求偏導數後,其梯度值剛好是假設函數與y的表達式,但線性迴歸與邏輯迴歸的本質是不一樣的。
這篇文章已經介紹了BP神經網絡,這裏只是從模型、策略、算法這三個層面來總結一下BP,模型就是指假設函數,策略則指優化目標,算法即指優化實現。
神經網絡的假設函數不是一個簡單的公式,它是多個邏輯迴歸函數逐層迭代的結果,形式上能夠寫成以下:
$$a^{(1)}=x$$
$$a^{(2)}=g(W^{(1)}a^{(1)})$$
$$a^{(i)}=g(W^{(i-1)}a^{(i-1)})$$
$$....$$
$$a^{(L)}=g(W^{(L-1)}a^{(L-1)})$$
$$h_W(x)=a^{(L)}$$
其中$L$表示神經網絡的層數,$g(z)=\frac{1}{1+\exp^{-z}}$,$W^{(i-1)}$表示第i-1層與第i層單元的權值矩陣,而且把偏置$\theta^{(i)}$放在了權值矩陣$W^{(i-1)}$中
神經網絡的損失函數跟邏輯迴歸很是相似,可是神經網絡的輸出單元可能有多個,須要在每一個輸出單元上作一個累加:
$$Cost(W)=-\frac{1}{m}[\sum_{i=1}^m\sum_{k=1}^Ky_k^{(i)}log(h_\theta(x^{(i)}))_k+(1-y^{(i)}_k)log(1-h_\theta(x^{(i)}))_k]$$
其中K表示輸出層神經單元的個數,m表示訓練數據實例個數。
各個算法的優化目標基本上都是尋求適當的參數,使得損失函數最小。
$$min_W(C(\theta))$$
BP神經網絡,利用反向傳播,逐層採樣梯度降低。
knn損失函數爲0-1損失函數,假設給定一個實例x,其K個最近鄰訓練實例點構成的集合是$N_k(x)$:
$$cost(f)=\frac {1}{k}\sum_{x_i\in N_k(x)}I(y_i\ne c_j)=1-\frac {1}{k}\sum_{x_i\in N_k}(x)I(y_i=c_j)$$
$$min cost==min 1-\frac {1}{k}\sum_{x_i\in N_k(x)}I(y_i=c_j) = max \frac {1}{k}\sum_{x_i\in N_k(x)}I(y_i=c_j)$$