[機器學習首部曲] 迴歸模型簡介Regression | PyInvest

文章推薦指數: 80 %
投票人數:10人

1. 簡單線性回歸Simple Linear Regression · 2. 多項式迴歸Polynomial Regression · 3. 多元迴歸Multivariable Regression. Skiptocontent 迴歸模型是處理連續變數常用的一種方法。

本單元針對迴歸模型做一個簡單的介紹,並介紹其運作原理、在程式中常見的運算模式以及針對過度擬合的相關處理方式。

(一)迴歸模型種類 迴歸模型主要用來探討自變數(因)與依變數(果)之間的關係,套在機器學習裡面,就是特徵(因)與目標(果)之間的關係。

依照特徵數目與模型維度的不同,可以簡單分為以下幾類。

1.簡單線性回歸SimpleLinearRegression 這就是最常見的,可以很直接地看到特徵與目標之間的關係。

$$y(x)=w_0+w_1x$$ 2.多項式迴歸PolynomialRegression 當然,有些特徵與目標之間的關係並非為線性,故我們可以透過高維度的多項式迴歸來建構合適的模型。

$$y(x)=w_0+w_1x+w_2x^2+…+w_nx^n$$ 3.多元迴歸MultivariableRegression 另外,一般來說我們的特徵通常不只一個,因此也可以透過多元回歸來建構多個特徵的迴歸模型。

$$y(x)=w_0+w_1x_1+w_2x_2+…+w_nx_n$$ (二)迴歸模型的運作原理 一般來說,我們會用最小平方法來建構迴歸模型。

簡單來說,就是找到一個方程式,讓所有預測值與真實值之間的誤差和最小。

其中,誤差和就是所謂的成本函數,而預測值的方程式就是我們的迴歸模型。

成本函數(CostFunction): $$\text{CF}=\sum_{j=1}^{n}(y_j-y(x_j))^2$$ 以簡單線性回歸來說,學過統計的朋友們可能都很清楚,不是直接用聯立方程組就可以求解了嗎?是這樣沒錯!但先前我們提到,迴歸包含了相當多的種類,在簡單線性回歸我們可能可以這樣做。

但是,在高維度或複雜的多元迴歸上,這就會變得相當複雜!為了解決這樣的問題,我們可以透過梯度下降法求解! 什麼是梯度下降法呢?我們想像自己在山坡上,要怎麼樣才能最快到達山底(極小值)呢?直覺當然就是找最陡的路啊!因為距離最短!因此,很自然的,式子的後方就是對成本函數的微分,用來計算陡峭程度。

而式子前方所乘以$\alpha$係數,則是Learningrate,代表一步距離的大小。

$\alpha$太小會導致走的速度很慢,需要迭代很多次才能找到最佳解。

然而,$\alpha$過大雖然初期的效率高速度快,卻也會造成在山谷時因步伐太大走不到最低點的問題。

因此,選擇適當的$\alpha$或是在更新的過程中調整$\alpha$也是值得注意的事情。

本單元,我們分享兩種常用的梯度下降法。

$$w_j\leftarroww_j-\alpha\frac{\partial}{\partialw_j}CF(w)$$ 本單元,我們分享兩種常用的梯度下降法。

1.Batchgradientdescent 每次調整參數時,都會採用所有的樣本進行計算。

這樣的優點就是會比較精確,在小樣本尤其好用!然而,當樣本過大時,每一次的調整都要將所有的樣本計算一次,計算成本相當可觀! $$w_0\leftarroww_0+\alpha\sum_{j}(y_j-y(x_j))$$ $$w_1\leftarroww_1+\alpha\sum_{j}(y_j-y(x_j))x_j$$ 2.Stochasticgradientdescent 因此發展出隨機梯度下降法,每次樣本更新時僅隨機採用單一樣本進行計算。

好處是計算效率大幅提升,當然也會相對犧牲一點精確度。

$$w_0\leftarroww_0+\alpha(y-y(x))$$ $$w_1\leftarroww_1+\alpha(y-y(x))x$$ 另外,亦有綜合兩者的mini-batch梯度下降法,則像是綜合Batchgradientdescent及stochasticgradientdescent,以部分樣本來代替全部樣本或單一樣本。

(三)低度擬和與過度擬和 在建構迴歸模型的過程中,若是參數使用太少,可能會造成低度擬合的問題。

如下圖左,我們可以很清楚的看到,簡單線性回歸無法達到有效的預測結果,這個案例應採用多項式迴歸來建構模型。

另一方面,過多的參數卻會導致過度擬和(如下圖右),造成模型對於這組樣本可以有很精準的預測,然而當有新的樣本加入時,卻沒辦法有好的預測效果。

因此,在建構迴歸模型前,可以考慮先把圖畫出來,再進行模型的選擇,心裡會比較有底唷! 此外,在建構迴歸模型時,特徵數不宜太少,但也不宜過多,至少應小於等於樣本數。

然而,當樣本數與特徵數相近時,仍然容易造成過度擬合的效果。

因此,特徵數的拿捏也是相當重要的關鍵。

(四)如何避免過度擬和 先前提到,當特徵數過多時,容易造成過度擬和的問題。

另一方面,在建構特徵的過程中,我們很多時候都忽略了特徵共線性的問題。

以股票市場為例,市值大的股票通常都是比較大的公司,其營收或營業現金流量等數值相較其他公司來說有很大的可能性也比較大,因此若我們的特徵同時包含三者,即很可能產生共線性的問題。

面對這樣的問題,我們可以採用正規化(regularization)迴歸,亦即在原始的成本含數上外加懲罰項,以降低過度擬合的問題。

以下介紹兩種正規化法。

1.LassoRegression(L1) $$min\\\text{CF}+\alpha\sum_{j=1}^{n}|w_j|$$ 在這裡我們可以很清楚的看到,當特徵係數的絕對值愈大時,其懲罰項的總和也會愈大。

因此,讓一些不重要特徵的係數為零,即可有效降低懲罰。

故此方法藉由讓特徵變的比較稀疏來達到避免過度擬合的效果,同時也達到了特徵篩選的功能! 2.RidgeRegression(L2) $$min\\\text{CF}+\alpha\sum_{j=1}^{n}w_j^2$$ 另一方面,在脊回歸的部分我們可以看到,懲罰項為特徵係數平方的加總。

因此,在這樣的方法下,只要讓特徵的係數趨近於零,即能達到降低懲罰項的效果。

故此方法以降低特徵係數來達到避免過度擬合的效果。

綜合以上,我們學會了迴歸模型背後的基本原理,以及探討過度擬和的問題及處理方式。

下個單元,我們將一起用Python來建構迴歸模型! 分享此文:分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟) Share 文章導覽 拓樸資料分析(TopologicalDataAnalysis)-介紹(1)程式新手的Python教學–用Seaborn繪製非農就業數據 RelatedPosts 機器學習在選股策略應用—以隨機森林為例 510月,2021 [Python實作]密度聚類DBSCAN 177月,2020264月,2021 [機器學習首部曲]密度聚類DBSCAN 157月,2020264月,2021 發佈留言取消回覆發佈留言必須填寫的電子郵件地址不會公開。

留言顯示名稱 電子郵件地址 個人網站網址 用電子郵件通知我後續的迴響。

新文章使用電子郵件通知我。

PyInvest 搜尋關鍵字: 近期文章 平均股利率高達9.9%?!富邦特選高股息30ETF00900該入手嗎? 期權策略—UI介面整合 期權策略—控制下檔風險的賣方策略:兀鷹價差策略CondorSpread SmartBeta:品質因子能夠帶來超額報酬嗎? 期權策略—控制下檔風險的賣方策略:蝶式價差ButterflySpread Python正則表達式–re模組與正則表示式語法介紹 機器學習在選股策略應用—以隨機森林為例 睽違4年,生技ETF再添新兵!富邦基因免疫生技ETF00897掛牌上市! 40分鐘學會專業回測工具–backtrader基本操作 SmartBeta:什麼是價值投資?在台股的表現如何? Logo通過DesignEvo設計製作   載入迴響中...   發表迴響… 電子郵件 名稱 網站



請為這篇文章評分?