Processing math: 100%

2017年5月30日 星期二

gradient descent algorithm for multivariate linear regression



目標函數:
hw(x)=w0+w1x1+w2x2++wnxn

演算法:
wjwjα1mmi=1(hw(x(i))y(i))x(i)jfor j = 0...n
do this until convergence

其中:
x(i)j:第j組資料的第i個特徵
x(i):由第i組資料的所有特徵組成的column vector
m:餵的資料組數
n:特徵的數量


我想第一眼看到這個演算法應該頗傻眼吧,感覺很複雜,其實還好,這個演算法在machine learning中被稱為gradient descent algorithm,主要是用來從資料中學習的演算法
我想有學過線性代數的人都知道最小平方法,其重點是求出一條直線,使直線和其他點的平方誤差最小,這個演算法也是類似道理,希望從資料中得到誤差最小的直線,至於如何做呢,就如同上面提到的演算法一樣,利用逐次逼近來使目標函數誤差最小,其中選取α是一門學問,選太小會使演算法收斂太慢,選太大可能會導致演算法無法收斂,因此實務上選取α都是慢慢嘗試,這個演算法因為是採用嘗試的,且一旦到local minima就不會動了,因此可能找到的不會是全域最佳解(不過在linear regression的情況下並不會發生local manima的情況)! 這個想法非常好用,並不只限於線性回歸,以後會再出現歐XD

gradient descent 方法有一些優化的方法:
1. feature scaling
2. stochastic gradient descent
3. adagrad



資料來源:
1. coursera: machine learning by andrew ng
2. artificial intelligence a modern approach 3rd
3. 李宏毅教授youtube

沒有留言:

張貼留言