GitHub地址(代碼加數據)python
咱們首先用弄清楚什麼是線性,什麼是非線性。git
線性:兩個變量之間的關係是一次函數關係的——圖象是直線,叫作線性。github
注意:題目的線性是指廣義的線性,也就是數據與數據之間的關係。算法
非線性:兩個變量之間的關係不是一次函數關係的——圖象不是直線,叫作非線性。微信
相信經過以上兩個概念你們已經很清楚了,其次咱們常常說的迴歸迴歸究竟是什麼意思呢。機器學習
通俗的說就是用一個函數去逼近這個真實值,那又有人問了,線性迴歸不是用來作預測嗎?是的,經過大量的數據咱們是能夠預測到真實值的。若是仍是不明白,你們能夠加一下個人微信:wei15693176 進行討論。函數
對大量的觀測數據進行處理,從而獲得比較符合事物內部規律的數學表達式。也就是說尋找到數據與數據之間的規律所在,從而就能夠模擬出結果,也就是對結果進行預測。解決的就是經過已知的數據獲得未知的結果。例如:對房價的預測、判斷信用評價、電影票房預估等。學習
你們看上面圖片,圖片上有不少個小點點,經過這些小點點咱們很難預測當x值=某個值時,y的值是多少,咱們沒法得知,因此,數學家是很聰明的,是否可以找到一條直線來描述這些點的趨勢或者分佈呢?答案是確定的。相信你們在學校的時候都學過這樣的直線,只是當時不知道這個方程在現實中是能夠用來預測不少事物的。優化
那麼問題來了,什麼是模型呢?先來看看下面這幅圖。3d
假設數據就是x,結果是y,那中間的模型其實就是一個方程,這是一種片面的解釋,但有助於咱們去理解模型究竟是個什麼東西。之前在學校的時候老是不理解數學建模比賽到底在作些什麼,如今理解了,是從題目給的數據中找到數據與數據之間的關係,創建數學方程模型,獲得結果解決現實問題。實際上是和機器學習中的模型是同樣的意思。那麼線性迴歸的通常模型是什麼呢?
模型神祕的面紗已經被咱們揭開了,就是以上這個公式,不要被公式嚇到,只要知道模型長什麼樣就好了。假設i=0,表示的是一元一次方程,是穿過座標系中原點的一條直線,以此類推。
咱們知道x是已知條件,經過公式求出y。已知條件其實就是咱們的數據,以預測房價的案例來講明:
上圖給出的是某個地區房價的一些相關信息,有日期、房間數、建築面積、房屋評分等特徵,表裏頭的數據就是咱們要的x一、x二、x3…….... 天然的表中的price列就是房屋的價格,也就是y。如今須要求的就是theta的值了,後續步驟都須要依賴計算機來訓練求解。
固然,這些計算雖然複雜,但python庫中有現成的函數直接調用就能夠求解。咱們爲了理解內部的計算原理,就須要一步一步的來剖析計算過程。
爲了容易理解模型,假設該模型是一元一次函數,咱們把一組數據x和y帶入模型中,會獲得以下圖所示線段。
是否是以爲這條直線擬合得不夠好?顯然最好的效果應該是這條直線穿過全部的點纔是,須要對模型進行優化,這裏咱們要引入一個概念。
不要看公式很複雜,其實就是一句話,(預測值-真實值)的平法和的平均值,換句話說就是點到直線距離和最小。用一幅圖來表示:
解釋:一開始損失函數是比較大的,但隨着直線的不斷變化(模型不斷訓練),損失函數會愈來愈小,從而達到極小值點,也就是咱們要獲得的最終模型。
這種方法咱們統稱爲梯度降低法。隨着模型的不斷訓練,損失函數的梯度愈來愈平,直至極小值點,點到直線的距離和最小,因此這條直線就會通過全部的點,這就是咱們要求的模型(函數)。
以此類推,高維的線性迴歸模型也是同樣的,利用梯度降低法優化模型,尋找極值點,這就是模型訓練的過程。
在機器學習模型訓練當中,模型的泛化能力越強,就越能說明這個模型表現很好。什麼是模型的泛化能力?
模型的泛化能力直接致使了模型會過擬合與欠擬合的狀況。讓咱們來看看一下狀況:
咱們的目標是要實現點到直線的平方和最小,那經過以上圖示顯然能夠看出中間那幅圖的擬合程度很好,最左邊的狀況屬於欠擬合,最右邊的狀況屬於過擬合。
欠擬合:訓練集的預測值,與訓練集的真實值有很多的偏差,稱之爲欠擬合。
過擬合:訓練集的預測值,徹底貼合訓練集的真實值,稱之爲過擬合。
欠擬合已經很明白了,就是偏差比較大,而過擬合呢是訓練集上表現得很好,換一批數據進行預測結果就很不理想了,泛化泛化說的就是一個通用性。
使用正則化項,也就是給梯度降低公式加上一個參數,即:
加入這個正則化項好處:
控制參數幅度,不讓模型「沒法無天」。
限制參數搜索空間
解決欠擬合與過擬合的問題。
看到這裏是否是以爲很麻煩,我以前說過如今是解釋線性迴歸模型的原理與優化,可是到了真正使用上這些方法是一句話的事,由於這些計算庫別人已經準備好了,感謝開源吧!
尋覓互聯網,少有機器學習通俗易懂之算法講解、案例等,項目立於這一問題之上,整理一份基本算法講解+案例於文檔,供你們學習之。通俗易懂之文章亦不能夠面概全,但凡是有不正確或爭議之處,望告知,自當不吝賜教!
歡迎添加微信交流!請備註「機器學習」。