個人對這方面的理解,文字純手打,圖片來自於coursera的課件
1.線性迴歸的定義:給出若干的訓練集(訓練集中
不妨先看一個例子,拿課程中的例子,賣房
現在已經知道了若干的房子的大小以及賣出去的價格,現在跟着這些信息,來推斷一些房子的價格
我們的任務,就是把圖中的點儘可能爲擬合成一條”花費最小”的直線
2.”花費”怎麼定義呢?使用的是最小二乘法
簡單點兒說,就是所有的點到直線上x值相等的點的距離的平方,求平均,就是對應的花費
3.花費的最小怎麼求呢,可以想到,這個函數肯定是連續的,那麼就可以通過求偏倒解決
這就是梯度下降算法
- 對於例子,迭代方法如下
θ0=θ0−α∗1m∑mi=1(h(x(i))−y(i))
θ1=θ1−α∗1m∑mi=1(h(x(i))−y(i))∗x(i) α 被稱爲learning rate,需要被選擇爲一個合適的值,如果太大的話,可能會越過最佳的值,然後越變越大,如果太小的話,需要迭代的次數太多- 通常的做法就是,先任取一個
θ0θ1 然後通過多次的迭代,就可以找到一個局部最小值,可以取多組初始的θ0θ1 ,然後找到其中最好的解,那麼有一個很有意思的問題,怎麼確定,找到的解肯定就是全局最好的呢 - 還有一個問題,就是更新時候必須得同步更新,簡單點兒說,就是計算出的新的
θi ,先保存起來,待這一次所有的θj 都計算完後,再同時更新所有的θi
4.接下來考慮多feature的情況,首先梯度下降算法是肯定成立的
- 如果x1與x2相差很多,但
α 是固定的,那麼可能會出現θ1 在最優值附近擺動很大,而θ2 卻迭代的很慢,這種情況下,通常會對數據做一個初步的處理,先轉換爲-1~1之間的數,處理方式如下
這種方法也會加快尋到最優的速度
5.最後介紹一個更強大Normal Equation(正規方程),直接用矩陣運算就可以得到最優解(證明還沒有看)
θ=(XT⋅X)(−1)⋅XT⋅Y ,其中X 是一個矩陣,每一行都是1+各特徵值,Y 就是所有的結果值,來分析一下,X 是m*(n+1)的矩陣,所以複雜度就是O(n^3)- 很強大!但也有弊端,那就是比較慢,如果n=100 0000,那將慢到不可忍受,所以還得用梯度下降算法,但如果處理1000內的數據,將十分的方便
先說這麼多,想到接着補充