一、三因子模型的回歸怎么做
線性回歸,是統(tǒng)計學領域的方法,用的時候需要關注假設條件是否滿足、模型擬合是否達標,參數(shù)是否顯著,自變量之間是否存在多重共線性等等問題因為統(tǒng)計學是一個過程導向的,需要每一步都要滿足相應的數(shù)學邏輯。
下面講講我對線性回歸的體會(只講體會,原理的內(nèi)容就不多說了,因為不難,而且網(wǎng)上相應資料很多!~):
1、linear regression 是最原始的回歸,用來做數(shù)值類型的回歸(有點繞,是為了區(qū)別“分類”),比如你可以利用它構建模型,輸入你現(xiàn)在的體重、每天卡路里的攝入量、每天運動量等,預測你一個月的體重會是多少,從模型的summary中,查看模型對數(shù)據(jù)解釋了多少,哪些自變量在影響你體重變化中更重要(事先對變量做了standardize),還可以看出在其它自變量不變的適合,其中一個自變量每變化1%,你的體重會變化多少(事先對自變量沒做standardize)。 當問題是線性,或者偏向線性,假設條件又都滿足(很難),又做好了數(shù)據(jù)預處理(工作量可能很大)時,線性回歸算法的表現(xiàn)是挺不錯的,而且在對模型很容易解釋!但是,當問題不是線性問題時,普通線性回歸算法就表現(xiàn)不太好了。
2、曲線回歸,我更喜歡稱之為“多項式回歸”,是為了讓彌補普通線性回歸不擅長處理非線性問題而設計的,它給自變量加上一些適合當前問題的非線性特征(比如指數(shù)等等),讓模型可以更好地擬合當前非線性問題。雖然有一些方法來幫助判斷如何選擇非線性特征,可以保證模型更優(yōu)秀。但動手實踐過的人,都知道,那有點紙上談兵了,效果不好,而且有些非線性很難簡單地表示出來!!
3、logistic regression,我感覺它應該屬于機器學習領域的方法了(當你不去糾結那些繁瑣的假設條件時),它主要是用來分析當因變量是分類變量的情況,且由于本身帶有一絲的非線性特征,所以在處理非線性問題時,模型表現(xiàn)的也挺好(要用好它,需要做好數(shù)據(jù)預處理工作,把數(shù)據(jù)打磨得十分“漂亮”)。企業(yè)十分喜歡用它來做數(shù)據(jù)挖掘,原因是算法本身表現(xiàn)良好,而且對模型的輸出結果容易解釋(領導們都聽得懂),不像其它高端的機器學習算法,比如Multiboost、SVM等,雖然很善于處理非線性問題,對數(shù)據(jù)質(zhì)量的要求也相對較低,但它們總是在黑盒子里工作,外行人根本看不懂它是怎么運行的,它的輸出結果應該怎么解釋!(好吧,其實內(nèi)行人也很難看懂!- - )
二、如何使用eviwes進行線性回歸分析
1、建立workfile 2、建立序列對象,將你的數(shù)據(jù)輸入或者導入,比如序列分別為 y x1 x2 x3 3、在命令窗口中輸入ls y c x1 x2 x3 回車,得到結果。 第一步是基礎,它的含義其實是建立一個容納eviews對象的“容器”,第二步是建立數(shù)據(jù)對象
三、機器學習算法中GBDT和XGBOOST的區(qū)別有哪些
嘗試回答一下
首先xgboost是Gradient Boosting的一種高效系統(tǒng)實現(xiàn),并不是一種單一算法。xgboost里面的基學習器除了用tree(gbtree),也可用線性分類器(gblinear)。而GBDT則特指梯度提升決策樹算法。
xgboost相對于普通gbm的實現(xiàn),可能具有以下的一些優(yōu)勢:
顯式地將樹模型的復雜度作為正則項加在優(yōu)化目標
公式推導里用到了二階導數(shù)信息,而普通的GBDT只用到一階
允許使用column(feature) sampling來防止過擬合,借鑒了Random Forest的思想,sklearn里的gbm好像也有類似實現(xiàn)。
4.實現(xiàn)了一種分裂節(jié)點尋找的近似算法,用于加速和減小內(nèi)存消耗。
5.節(jié)點分裂算法能自動利用特征的稀疏性。
6.data事先排好序并以block的形式存儲,利于并行計算
7.cache-aware, out-of-core computation,這個我不太懂。。
8.支持分布式計算可以運行在MPI,YARN上,得益于底層支持容錯的分布式通信框架rabit。
四、什么是線性回歸?
我們以一簡單數(shù)據(jù)組來說明什么是線性回歸。假設有一組數(shù)據(jù)型態(tài)為 y=y(x),其中
x={0, 1, 2, 3, 4, 5}, y={0, 20, 60, 68, 77, 110}
如果我們要以一個最簡單的方程式來近似這組數(shù)據(jù),則非一階的線性方程式莫屬。先將這組數(shù)據(jù)繪圖如下
圖中的斜線是我們隨意假設一階線性方程式 y=20x,用以代表這些數(shù)據(jù)的一個方程式。以下將上述繪圖的 MATLAB 指令列出,并計算這個線性方程式的 y 值與原數(shù)據(jù) y 值間誤差平方的總合。
>> x=[0 1 2 3 4 5];
>> y=[0 20 60 68 77 110];
>> y1=20*x; % 一階線性方程式的 y1 值
>> sum_sq = sum(y-y1).^2); % 誤差平方總合為 573
>> axis([-1,6,-20,120])
>> plot(x,y1,x,y,'o'), title('Linear estimate'), grid
如此任意的假設一個線性方程式并無根據(jù),如果換成其它人來設定就可能采用不同的線性方程式;所以我們 須要有比較精確方式?jīng)Q定理想的線性方程式。我們可以要求誤差平方的總合為最小,做為決定理想的線性方 程式的準則,這樣的方法就稱為最小平方誤差(least squares error)或是線性回歸。MATLAB的polyfit函數(shù)提供了 從一階到高階多項式的回歸法,其語法為polyfit(x,y,n),其中x,y為輸入數(shù)據(jù)組n為多項式的階數(shù),n=1就是一階 的線性回歸法。polyfit函數(shù)所建立的多項式可以寫成
從polyfit函數(shù)得到的輸出值就是上述的各項系數(shù),以一階線性回歸為例n=1,所以只有 二個輸出值。如果指令為coef=polyfit(x,y,n),則coef(1)= , coef(2)=,...,coef(n+1)= 。注意上式對n 階的多 項式會有 n+1 項的系數(shù)。我們來看以下的線性回歸的示范:
>> x=[0 1 2 3 4 5];
>> y=[0 20 60 68 77 110];
>> coef=polyfit(x,y,1); % coef 代表線性回歸的二個輸出值
>> a0=coef(1); a1=coef(2);
>> ybest=a0*x+a1; % 由線性回歸產(chǎn)生的一階方程式
>> sum_sq=sum(y-ybest).^2); % 誤差平方總合為 356.82
>> axis([-1,6,-20,120])
>> plot(x,ybest,x,y,'o'), title('Linear regression estimate'), grid