機器學習中迴歸是同學們在學習過程中重要的一環。無論是面試還是實際應用都會經常用到。很多人都會使用線性迴歸,那麼有多少人知道線性迴歸是怎麼來的呢?如果想讓自己在機器學習的方向上更有價值,數學方面的推導必不可少。今天就給大家講解下回歸中比較重要的線性迴歸的數學推導。
老師的課程
1.從零開始進行機器學習
2.機器學習數學基礎(根據學生需求不斷更新)
3.機器學習Python基礎
4.最適合程序員的方式學習TensorFlow
線性迴歸的公式
線性迴歸的數學推導主要涉及到以下幾個知識點。
1. 利用矩陣的知識對線性公式進行整合
2. 誤差項的分析
3. 似然函數的理解
4. 矩陣求偏導
5. 線性迴歸的最終求解
我們先來看下這個圖
姓名 | 工資(元) | 房屋面積(平方米) | 可貸款金額(元) |
---|---|---|---|
張三 | 6000 | 58 | 30000 |
李四 | 9000 | 77 | 55010 |
王五 | 11000 | 89 | 73542 |
陸永劍 | 15000 | 54 | 63201 |
這個是近期比較火的現金貸產品的貸款額度。這個表格表示的是可貸款的金額 與 工資 和 房屋面積之間的關係,其中 工資 和 房屋面積 爲 特徵,可貸款金額爲目標函數值。
那麼根據線性函數可得到以下公式。
上面的這個式子是當一個模型只有兩個特徵(x1,x2)的時候的線性迴歸式子。
正常情況下,現金貸中可貸款的額度和用戶的很多特徵相關聯,並不只是簡單的這兩個特徵。所以我們需要把這個式子進行通用化。
假如有n個特徵的話,那麼式子就會變成下面的樣子
上面的式子是一個多項求和的式子,用機器學習的思想,怎麼把這個式子聚合一下呢?
因爲機器學習中基本上都是用矩陣的方式來表示參數的,也就是說我們需要把這個多項求和的式子用矩陣的方式表達出來,這樣才方便後續的計算。
我們把權重參數和特徵參數,都看成是1行n列的矩陣(或者是行向量)。那麼就可以根據矩陣乘法的相關知識,把上述多項求和的式子,轉換成矩陣的乘法的表達式。
由此我們就把多項求和化簡稱了
這個就是第一步,利用矩陣的知識對線性公式進行整合。
接着我們來看第二步,誤差項的分析
式子裏面其實並不是只有W*X吧? 還有一個參數b。也就是我們說的偏移量,或者叫做誤差項。
我們先來看下面的這個圖
圖中的橫座標X1 和 X2 分別代表着 兩個特徵(工資、房屋平米) 。縱座標Y代表目標(可貸款的額度)。其中紅點代表的就是實際的目標值(每個人可貸款的額度).而平面上和紅點豎向相交的點代表着我們根據線性迴歸模型得到的點。也就是說實際得到的錢和預估的錢之間是有一定誤差的,這個就是誤差項。
因爲誤差項是真實值和誤差值之間的一個差距。那麼肯定我們希望誤差項越小越好。
我們根據實際情況,假設認爲這個誤差項是滿足以下幾個條件的。
1.獨立:張三和李四一起使用這款產品,可貸款額互不影響
2.同分布:張三和李四是使用的是同一款產品
3.高斯分佈:絕大多數的情況下,在一個的空間內浮動不大
下面是高斯分佈的圖,忘記的同學們可以回憶下。
第三步. 似然函數的理解
由前面兩步,我們已經把線性迴歸模型,推導成下面的這個式子了。
第二步,已經知道誤差項是符合高斯分佈的,所以誤差項的概率值就是下面的式子。
再把誤差值帶入到這個式子裏面,就得到了下面的式子。
誤差項肯定是越小越好了,那麼接下來要討論的就是什麼樣的參數和特徵的組合能夠讓誤差項最小呢? 這裏就引入了似然函數的作用。似然函數的作用就是要根據樣本來求什麼樣的參數和特徵的組成能夠最接近真實值。越接近真實值則誤差越小。
似然函數就是求能讓真實值和預測值相等的那個參數的。
上面的式子是多個參數的乘積的形式,很難進行計算,所以我們又採用了對數的一個小技巧,把多個數相乘,轉化成多個數相加的形式。
根據上面的這種換算關係,我們就把似然函數的式子換算成下面的這個。
(因爲似然函數是越大越好,似然函數的值和對數似然函數的值是成正比的,對值求對數,並不會影響到最後求極限的值。所以纔敢進行對數處理。)
對上面的式子進行整合,得到
通過上面一系列推導,就把式子轉化爲最小二乘法的相關知識了。
這就是在線性迴歸中使用似然函數的相關知識。
---【如果想了解更多的數學基礎知識,及機器學習的相關課程,請點擊下面鏈接】
---【從零開始學習機器學習,包含全套的機器學習課程】
接着看下一步:矩陣求偏導
怎麼計算最小二乘法的公式的最小值。這裏面就要涉及到導數的相關知識了,
求之前,我們根據矩陣的知識,把上面的式子再轉換一下。
把這個式子求一下偏導。
上面的公式裏面還涉及到矩陣轉置的性質。想了解矩陣轉置的性質,請點擊此鏈接【機器學習數學基礎】。
將打開的式子,根據矩陣求導的三個重要公式
我們就可以把偏導的值求出來,
最終得到結果:
X和Y都是已知的,那麼得到了最終的參數值。