我們的目標系列算法講解,旨在用最簡單的故事幫助妳掌握晦澀枯燥的機器學習,適合對數學比較頭疼的同學。讓我們在長凳上行走!
什麽是線性回歸?今天我們要講的是線性回歸,它是機器學習中最基本也是最重要的算法之壹。就在這時,叠戈正在去銀行申請貸款(低保)的路上。到了之後,銀行問了我兩件事,他的年齡和工資是多少?當妳得到結果的時候告訴我。我們只能借給妳100元。別問為什麽!機器會計算!(機,妳用毛線算100快嗎?)這就告訴我們,我們的輸入是妳的數據的特征,結果是壹個連續區間內的值。目標是找到我們要預測的值和我們的輸出之間的關系,然後我們的目標是找到這個關系。
如何得到結果這張圖是機器如何做壹個預測(回歸)。它會根據壹票兄弟貸的歷史數據(年齡和工資分別對應X1和X2)找到最擬合的線(面)來做壹個預測,這樣妳的數據進來後就可以直接得出給妳多少錢了。
我們用兩個參數分別對應薪資和年齡,控制它們對結果的影響。這裏,我們通過將偏差項和權重參數項放在壹起進行積分(加壹個X0使它們都等於1)。
如果我們想讓銀行繼續營業,就必須少惹些麻煩。如果叠戈這麽大碗給我100元(真實指標應該是200元),肯定會毀了場地,所以我們的目標是讓預測值盡量接近真實值。機器學習的核心是如何優化我們的目標。我們可以看到,這些點有的離我的回歸方程很近,有的很遠。最後,我們應該設定壹個目標,使我們的方程更好地適應當前的數據點。
深度細節既然說到錯誤,那就好好談壹談吧。首先,銀行的目標是使誤差盡可能小,從而使我們的結果更準確。那麽這個錯誤有什麽規律可循嗎?錯誤可以說是機器學習中聽到時間最長的壹個詞。我們可以想象妳讓壹個機器人幫助妳工作。壹開始,它肯定什麽也做不了。我們要壹點壹點教,等他熟悉了我們的工作(數據),就意味著我們的回歸方程會更好。
先說這個誤差為什麽服從高斯分布。這件事取決於我們如何看待壹件事發生的概率。壹般情況下,妳的銀行貸款幾乎是壹個符合妳的數字。在極小的情況下,可以發生叠戈這樣的事情(100元不是給我的),或者在極小的情況下,可以給妳上億的馬立克雲。所以銀行貸款給妳的誤差理論上在很小的範圍內。所以我們認為誤差可以服從高斯分布(正交正態分布)。
那妳為什麽獨立?獨立就是叠戈來借錢,馬雲正好來了,但是我們不認識(其實他認識我,我不認識他),所以我們借錢的時候不會因為馬雲對我有什麽影響,也不會因為我對馬雲有什麽影響。這就是獨立!
什麽是同質分布?我和馬雲是從壹家銀行出來的吧?這家銀行只有壹個系統,所以在預測的時候也是以同樣的方式來的,也就是我們的數據是以同樣的分布來建模的。
既然誤差服從高斯分布,那我們就展開它。上面公式的意思是我去貸款,在這兩個參數控制下的貸款金額正好等於真實情況下我應該被給這麽多錢的概率。那麽我們當然希望概率越大越好。概率越大,越準確。
為什麽又有壹堆數學?。。數學不是沒有人的機器學習。)我們繼續看。為什麽會突然出現壹個似然函數?先說說是什麽吧。比如妳今天去了賭場,然後不知道能不能贏錢,就蹲在門口。壹個人出來,妳問,我哥們贏錢了嗎(然後被打了),連續出來五個人,告訴妳我贏錢了,妳就會覺得我賭肯定會贏錢。這樣做的意義就是用樣本數據來估計妳的參數應該是什麽樣的,讓估計出來的參數盡可能符合(擬合)妳的樣本。
對數似然有壹個簡單的意義和目標,就是簡單求解,於是復雜的乘法運算就轉化為簡單的加法運算。
得到化簡的目標其實就是對原有公式進行擴展,然後我們的目標就是求最大值(什麽樣的參數能使與我的數據結合後成為真值的概率越大越好)。不用擔心簡化後的結果,左邊是常數,右邊是常數(因為有平方項),但是前面有個負號。這樣的數字什麽時候能得到最大值?只能取負號後的最小值!
至此,我們終於推導出,銀行只需要做壹件事,就是最小化這個函數(目標函數)。其實說白了就是要讓我們的預測值和真實值的差異盡可能的小。這就是最小二乘法!
下壹步是如何解決?通常我們只需要求偏導數就可以了,因為極值點通常是在偏導數處得到的。求我們目標函數的偏導數,使其等於0,這樣就可以求出最終參數的解應該是什麽!在這裏,朋友們可能覺得真的可以得到這個解,所以這個解不是我們想要的參數,得到了銀行就有救了!
摘要
至此,我們通過壹系列的推導,得到了線性回歸的最終解。雖然路有點曲折,但其中涉及的思路還是很有意思的。這節課,希望大家對線性回歸有壹個直觀的認識,了解機器學習的基本原理和實際處理方法。但這個解可以說是數學上的巧合,並不是所有的問題都能直接解決。下次再說怎麽間接求最優解吧~