根據(jù)之前的理論,機(jī)器學(xué)習(xí)就是在找合適的函數(shù)公式。例如:
· 股票預(yù)測問題:輸入-過去十年某股票的價格,輸出-明天該股票的價格
· 無人駕駛問題:輸入-傳感器收集的各種信息揽思,輸出-方向盤的角度
· 推薦系統(tǒng)問題:輸入-用戶已經(jīng)購買的商品,輸出-購買該商品的可能性
1. 案例問題
案例背景:預(yù)測進(jìn)化后精靈寶可夢的CP(combat power)值见擦,如果可以預(yù)測到該寶可夢進(jìn)化后的cp值钉汗,就可以選擇是否進(jìn)化它羹令。
2. 回歸建模過程:
step 1: Model
機(jī)器學(xué)習(xí)的第一步,就是找到一組我們想要的函數(shù)表達(dá)式的組合损痰,由前的分析可知特恬,我們這里選擇的是一組線性表達(dá)式。
在上式中徐钠,X代表的是輸入的自變量癌刽,比如寶可夢的身高、體重等等尝丐,我們叫特征(feature)显拜;w是權(quán)重(weight),b代表偏差(bias)也就是截距項(xiàng)爹袁。
step 2: Goodness of Function
因?yàn)槭怯斜O(jiān)督的學(xué)習(xí)远荠,所以要收集訓(xùn)練集。
在收集好訓(xùn)練集后失息,我們需要定義另外一個函數(shù)——損失函數(shù)(Loss Function)譬淳,這個函數(shù)的作用是告訴我們,我們目前所選擇的模型等到的預(yù)測值盹兢,與其所對應(yīng)的真實(shí)值的偏差是多少邻梆,然后從中找出對應(yīng)的損失函數(shù)值最小的,函數(shù)表達(dá)式绎秒,通過這個過程浦妄,我們可以從之前的一組表達(dá)式中,找到我們想要的準(zhǔn)確的最高的表達(dá)式见芹。
step 3: Best Function
通過之前的過程剂娄,我們已經(jīng)確定了最小的損失函數(shù),所對應(yīng)的參數(shù)w玄呛、b的值
通過之前的分析阅懦,我們已經(jīng)知道了如何找到想要表達(dá)式的思路,但是如果通過窮舉法來找到W徘铝、b效率太低耳胎,當(dāng)計(jì)算量過大時就很不現(xiàn)實(shí)。由于我們已經(jīng)得到了如上的表達(dá)式庭砍,就可以考慮如何用數(shù)學(xué)工具來求解场晶,這里就使用了一個很有用的算法——梯度下降(Gradient Descent)。
梯度下降的具體操作:先隨機(jī)選取一個點(diǎn)w0怠缸,然后在改點(diǎn)求L的微分,如果小于0就向右移動钳宪,大于0則向左揭北,直到微分值為0扳炬,這樣會找到一個局部最優(yōu)解。在這個過程中由兩個問題:
· 每次迭代搔体,具體移動多遠(yuǎn)的距離呢恨樟?這取決于學(xué)習(xí)率(learning rate),也就是上式中的η值疚俱,具體取多少劝术,在下節(jié)中會介紹。
· 由于隨機(jī)選取的w0呆奕,所以找到的局部最優(yōu)解养晋,不一定是全局最優(yōu)解,但是該問題在線性問題中不存在梁钾,由于為線性函數(shù)绳泉,所以只有一個最優(yōu)解。
那由于在本次案例中姆泻,由連個參數(shù)零酪,所以我們需要同時考慮w和b,其實(shí)就是一元到多元的推廣拇勃,在這里也介紹了“梯度”的具體含義:所求參數(shù)值的偏微分四苇。
將求出的參數(shù)值帶入表達(dá)式,并輸入測試集數(shù)據(jù)進(jìn)行驗(yàn)證方咆,發(fā)現(xiàn)損失函數(shù)為35蛔琅,如何優(yōu)化我們的函數(shù)呢?根據(jù)散點(diǎn)圖峻呛,考慮引入一個二次項(xiàng)罗售。
加入二次項(xiàng)后,我們繼續(xù)用梯度下降進(jìn)行求解钩述,發(fā)現(xiàn)誤差值明顯變小了寨躁,那如果加入三次項(xiàng)會不會更精確呢?結(jié)果顯示有變化了一點(diǎn)牙勘。
我們繼續(xù)考慮加入四次項(xiàng):
加入四次項(xiàng)后职恳,在訓(xùn)練集的效果更好了,我們的模型更的擬合了訓(xùn)練集方面,但是在測試集的表現(xiàn)缺變差了放钦,那這種情況就叫做過擬合這里就涉及到模型的泛化能力休溶,也說明不是一味的準(zhǔn)確訓(xùn)練集的準(zhǔn)確率如孝。所以應(yīng)該如何選擇合適的模型呢?
step 4: Redesign the Model
由于不同的寶可夢犹撒,進(jìn)化的CP值有著顯著的差異横腿,所以我們考慮加入一個示性函數(shù)颓屑,對不同的寶可夢建立不同的方程斤寂。
但是這里只考慮了過去的cp值這一個特征,根據(jù)之前的研究揪惦,我們還可以加入其他的自變量
如上遍搞,是一個很復(fù)雜的模型,既考慮了不同的物種器腋,也考慮了不同的特征溪猿,但是很現(xiàn)在這個模型過擬合了。
step 5: Regularization
如何解決過擬合問題呢纫塌,需要加入一個正則項(xiàng)诊县,來約束加入的參數(shù)項(xiàng)。
在之前的損失函數(shù)的基礎(chǔ)上护戳,加入一個正則項(xiàng)翎冲,會使得誤差變小的同時,模型不會過于復(fù)雜從而導(dǎo)致過擬合的情況媳荒。加入正則項(xiàng)也會是的函數(shù)更為平滑抗悍,平滑的函數(shù)對于異常值,不會過于敏感從而出現(xiàn)過擬合钳枕。
這里我們選擇不同的λ的值缴渊,來看在訓(xùn)練集和測試集的誤差變化,發(fā)現(xiàn)我們需要使得模型平滑鱼炒,以防過擬合衔沼,但是過于平滑的函數(shù)也會使得誤差變大。
總結(jié):
建立線性模型后昔瞧,需要用梯度下降來找到最優(yōu)解的參數(shù)值(b指蚁、w)
在確定模型的時候,需要做到準(zhǔn)確度和復(fù)雜度的平衡自晰,越復(fù)雜的模型可能會在訓(xùn)練集上有很好的擬合凝化,但是會出現(xiàn)過擬合的情況,而導(dǎo)致在測試集誤差很大酬荞,所以加入正則項(xiàng)來使得函數(shù)變得平滑搓劫,所以最后函數(shù)需要多平滑,也就是λ的值混巧,就是我們需要不斷調(diào)整的參數(shù)枪向。