機器學習筆記
初識
機器學習的定義
Samuel(1959):在沒有明確設置的情況下使計算機具有學習能力的研究領域
Tom Mitchell(1998):一個適當的學習問題定義如下:計算機程序從經驗E中學習解決某一任務T進行某一性能度量P,通過P測定在T上的表現因經驗E而提高
分類
- *監督學習
- *無監督學習
- 強化學習
- 推薦系統
監督學習
迴歸問題
給定的數據集中包含了正確答案,目的是給出更多正確答案
每一個連續量對應一個值,預測連續數值輸出
分類
將數據劃分爲一些離散量
目標是處理無窮多的特徵
無監督學習
給出的數據集沒有任何的標籤只有特徵
將數據分成不同的簇(聚類算法)
用來組織大型機集羣、社交網絡分析、市場細分、天文數據分析
雞尾酒會問題
單變量線性迴歸
Univariate linear regression
hypothesis代價函數h(x)
最小化問題(使得誤差最小)
該表達式也被叫做平方誤差函數Squared error function
代價函數
代價函數就是我們所要求的那個線性迴歸表達式
我們將它簡化到單變量
我們所尋求的那個最優解就是使Cost Function(偏差函數)最小的θ1的取值,當取到這個值的時候可以使平方差函數取得最小值
若是兩個變量需要使用等高線圖
梯度下降算法最小化J
梯度下降算法就像是下山,從一個點開始然後環視四周找下降最快的方向,走一小步,逐漸收斂最低點到或者局部最低點
算法實現
注意點
- '='是賦值語句
- α是學習率,指的是梯度下降的時候每次邁多大的步子,α過大可能會使梯度下降算法無法收斂甚至發散,當我們接近局部最小值時,偏導數的值減小會自動減小我們的步子大小,所以沒有必要減小阿爾法的值
- 後面的偏導數指的就是變化率(斜率或者梯度)
- 這個式子是同時更新參數0和參數1,後面的錯誤表達中沒有同步更新
兩個參數的梯度下降算法
我們現在使用的是Batch梯度下降算法:每一步都要遍歷整個數據集
線性代數知識回顧
描述:行乘列的矩陣
使用大寫字母描述矩陣
下標一般從1開始
矩陣相加相減必須是兩個相同維度的矩陣
數與矩陣相乘是與矩陣中每一個元素相乘
矩陣與向量相乘
矩陣與矩陣相乘
注意乘的時候都是行乘列再相加
一些特徵
- 矩陣乘法不滿足交換律
- 滿足結合律
- 單位矩陣 1Z=Z1=1
逆矩陣
逆矩陣這個概念很重要,在機器學習中時常會用到
沒有逆矩陣的矩陣稱爲奇異矩陣或者退化矩陣
矩陣轉置
多變量線性迴歸
Multivariate linear regression
可以用向量內積表示
多元梯度下降算法
特徵縮放:將特徵的取值限制到-1到1之間 (不是絕對的 只是說讓取值範圍最好在個位數範圍,不要太大也不要太小)
均值歸一化:將特徵值減去平均值在進行特徵縮放
學習率α的選取
繪製minJ(θ)(代價函數)關於迭代次數的曲線,如果算法正確,隨着迭代次數的增加,minJ(θ)值應該是逐漸減小的,當代價函數基本不下降時就已經接近於收斂
自動收斂測試:當代價函數J(θ)一次迭代後的下降小於一個很小值(比如10^-3),但是這個很小的閾值是不容易確定的,所以一般是看圖而不是依靠自動收斂測試
1、如果這個圖像是上升的應當使用較小的α
2、如果圖像反覆的上升下降也是使用較小的α
只要學習率足夠小每次迭代都會下降,但是不要太小,否則要迭代好多次,收斂的很慢
可以嘗試以上的α取值方式
正規方程求θ
這樣就可以求出最優解θ
若不可逆,應當檢查是否有多餘的特徵或者樣本數量太少(m<n),通常不會出現,在octave中使用pinv總會給出結果無論是否可逆
梯度下降法與正規方程法的對比
梯度下降算法需要選擇α同時需要許多次迭代,正規方程法則不需要這些,一次就能算出來
但是如果n(特徵)特別大10000+,計算逆矩陣是十分費勁的,所以當n很大,選擇梯度下降算法更好