乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      利用回歸模型預(yù)測數(shù)值型數(shù)據(jù)(代碼)

       ddguo2001 2017-04-24

      數(shù)據(jù)挖掘入門與實(shí)戰(zhàn) 公眾號(hào): datadw

      機(jī)器學(xué)習(xí)算法按照目標(biāo)變量的類型,分為標(biāo)稱型數(shù)據(jù)和連續(xù)型數(shù)據(jù)。標(biāo)稱型數(shù)據(jù)類似于標(biāo)簽型的數(shù)據(jù),而對(duì)于它的預(yù)測方法稱為分類,連續(xù)型數(shù)據(jù)類似于預(yù)測的結(jié)果為一定范圍內(nèi)的連續(xù)值,對(duì)于它的預(yù)測方法稱為回歸。

      “回歸”一詞比較晦澀,下面說一下這個(gè)詞的來源:

      “回歸”一詞是由達(dá)爾文的表兄弟Francis Galton發(fā)明的。Galton于1877年完成了第一次回歸預(yù)測,目的是根據(jù)上一代豌豆種子(雙親)的尺寸來預(yù)測下一代豌豆種子(孩子)的尺寸。 Galton在大量對(duì)象上應(yīng)用了回歸分析,甚至包括人的身高預(yù)測。他注意到,如果雙親的高高度比平均高度高,他們的子女也傾向于比平均高度高,但尚不及雙親(筆者感覺未必,Galton并未考慮物質(zhì)條件的發(fā)展會(huì)帶來整體身高的增加,至少筆者感覺80,90的人普遍比父母高)。孩子的高度向著平均高度“回歸”。

      類型

      回歸按照方法可分為線性回歸和非線性回歸。線性回歸適用線性方程來擬合曲線進(jìn)行預(yù)測。在非線性回歸中,特征之間出現(xiàn)非線性操作的可能性(比如相乘或者相除)。非線性回歸中有種特殊的類型--邏輯回歸,和線性回歸不同的是,它屬于“分類”的問題,這是由于它適用曲線擬合的方式來解決分類問題,所以也被稱為回歸。

      線性回歸 原理簡介

      線性回歸衡量的是兩個(gè)變量之間的關(guān)系,最直接的辦法就是求得一個(gè)回歸方程(regression equation),將已知條件x代入方程得到預(yù)測結(jié)果y。

      假設(shè)我們獲取到一個(gè)地區(qū)過去一段時(shí)間內(nèi)的房價(jià)走勢情況,我們根據(jù)下面的公式進(jìn)行評(píng)估:

        

      上面的式子可以看到房價(jià)和房屋面積、房子朝向呈線性的關(guān)系。而求該方程的過程稱為回歸方程,其中0.7和0.19稱為回歸系數(shù),面積和房子的朝向稱為特征。

      可以看到“回歸”問題最重要的是如何獲得回歸方程,如果得到該方程后,所有的一切問題將迎刃而解。

      假如我們用X(m×n)來表示特征的矩陣,回歸系數(shù)用 θ(n×1)來表示,預(yù)測結(jié)果由Y=Xθ獲得。在實(shí)際應(yīng)用中,我們通常認(rèn)為能帶來最小平方誤差的θ就是我們所要尋找的回歸系數(shù)向量。平方誤差指的是預(yù)測值與真實(shí)值的差的平方,這種方法就稱為“最小二乘法”。所以回歸問題轉(zhuǎn)化為如何求最小平方誤差,即目標(biāo)函數(shù)為:

        

      求該函數(shù)的方法很多,在此介紹一種方法:

      • 對(duì)θ求導(dǎo): 該矩陣還可以寫成,如果對(duì)θ求導(dǎo),就會(huì)得到

      • 倒數(shù)為0,求出θ

      注意,上述公式中包含,也就是需要對(duì)矩陣求逆。因此這個(gè)方程只在逆矩陣存在的情況下適用。

      應(yīng)用

      上面講解了線性回歸的原理,那如何將上面的算法應(yīng)用到現(xiàn)實(shí)的場景中呢?我們使用python語言將上述的算法實(shí)現(xiàn)了一遍:

      defstandRegres(xArr,yArr):xMat = mat(xArr); yMat = mat(yArr).T xTx = xMat.T*xMat # #判斷是否存在逆矩陣iflinalg.det(xTx) == 0.0:

      print"This matrix is singular, cannot do inverse"returnws = xTx.I * (xMat.T*yMat)

      returnws

      得到回歸系數(shù)后,還需要乘以特征值后得到預(yù)測值。

      大家會(huì)說python不是以算法包的種類多而出名嗎?有現(xiàn)成的算法庫,我干嘛還要自己去實(shí)現(xiàn)算法呢。當(dāng)然,python里面有sklearn包中有現(xiàn)成的linear_model的函數(shù)可以供大家使用,而且使用方法特別簡單:

      • 導(dǎo)入算法包

      fromsklearn importdatasets, linear_model
      • 訓(xùn)練模型

      regr= linear_model.LinearRegression() regr. fit(x, mydata)
      • 預(yù)測

      predict_outcome= regr.predict(x) 模型評(píng)估

      基本上所有的數(shù)據(jù)集都可以使用上述的方法建立模型,那么,如何來判斷模型的好壞呢?如果比較一下下面兩個(gè)圖,如果在這兩個(gè)數(shù)據(jù)集上做線性回歸,那么效果肯定不相同。

        

      圖1 具有相同回歸系數(shù)的兩組數(shù)據(jù)的對(duì)比

      我們可以計(jì)算預(yù)測值和真實(shí)值之間的誤差,也就是計(jì)算這兩個(gè)序列的相關(guān)系數(shù),來評(píng)價(jià)模型的好壞。

      python中,Numpy庫提供了相關(guān)系數(shù)的計(jì)算方法corrcoef(yEstimate,yActual)來計(jì)算預(yù)測值和真實(shí)值之間的相關(guān)性??梢钥闯鼍哂邢嗤貧w系數(shù)的兩組數(shù)據(jù),上圖的相關(guān)系數(shù)是0.58,而下圖的相關(guān)系數(shù)是0.99,則可以說明該回歸系數(shù)對(duì)下圖使用的數(shù)據(jù)集效果要好。

      局部加權(quán)線性回歸

      前一節(jié)我們用普通的線性回歸在遇到圖1的上圖時(shí)候就會(huì)出現(xiàn)嚴(yán)重的欠擬合現(xiàn)象,這種現(xiàn)象在圖1的下圖也會(huì)反映出來。解決這種欠擬合的問題最直接的方法是犧牲普通線性回歸的無偏估計(jì)方法,轉(zhuǎn)為有偏估計(jì),對(duì)預(yù)測點(diǎn)的周圍節(jié)點(diǎn)賦予不同的權(quán)值。離預(yù)測點(diǎn)近的點(diǎn)賦予較高的權(quán)值,反之則賦予低的權(quán)值。這種通過改變權(quán)值的方法就叫做局部加權(quán)線性回歸。

      該算法解出來回歸系數(shù)的形式為:

        

      可以看到,在普通的線性回歸的基礎(chǔ)上,多了一個(gè)矩陣W,W是一個(gè)n×m的矩陣。那如何做到不同的點(diǎn)被賦予不同的權(quán)值呢?局部加權(quán)線性回歸適用“核函數(shù)”來賦予權(quán)值,最常用的高斯核,它的權(quán)重為:

        

      可以看到高斯核中涉及到一個(gè)參數(shù)k,如何選擇合適的k成為了關(guān)鍵的問題。圖2可以看到參數(shù)k和權(quán)重的關(guān)系:

        

      圖2 每個(gè)點(diǎn)的權(quán)重值(假設(shè)我們預(yù)測的點(diǎn)為x=0.5)

      在圖2中,k越大,權(quán)重衰減的越慢,而k越小,權(quán)重衰減的越快,離預(yù)測點(diǎn)比較近的點(diǎn)才對(duì)預(yù)測值產(chǎn)生影響。

      我們采用了三種k對(duì)圖1下圖中的樣本進(jìn)行預(yù)測,結(jié)果如圖3、4和5所示。

        

      圖3 k為1,和普通的線性回歸一樣,用來做對(duì)比

        

      圖4 k為0.01

        

      圖5 k為0.003

      可以看到k為1時(shí),由于是用一條直線進(jìn)行擬合,所以反映不出來樣本的規(guī)律,容易出現(xiàn)欠擬合的現(xiàn)象,而當(dāng)k為0.003時(shí),由于將個(gè)別樣本的特例反映到整體趨勢中,所以容易出現(xiàn)過擬合的現(xiàn)象。k為0.01時(shí),效果最好。

      除了容易出現(xiàn)過擬合的問題外,局部加權(quán)線性回歸的計(jì)算量也相當(dāng)大,因?yàn)樗鼘?duì)每個(gè)待遇測點(diǎn)做預(yù)測時(shí)都必須遍歷整個(gè)數(shù)據(jù)集才能得出回歸系數(shù)向量,使用時(shí)要加以注意。

      嶺回歸

      線性回歸能夠求解回歸系數(shù)的前提是是滿秩矩陣,即矩陣有逆矩陣,而如果矩陣中有某些矩陣共線,也就是的行列式為0,則這種情況就不能求出回歸系數(shù)。

      嶺回歸中通過引入λI來使回歸矩陣可解,則回歸系數(shù)的矩陣變?yōu)椋?/p>

      I為n*n的單位矩陣,該矩陣看起來就像一個(gè)“嶺”,所以叫做嶺回歸,嶺回歸歸根結(jié)底就是求λ。

      嶺回歸的目標(biāo)函數(shù)變?yōu)椋?/p>

        

      可以看到嶺回歸在原來普通的線性回歸的基礎(chǔ)上加入了一個(gè)二范數(shù)懲罰項(xiàng),其目的在于限制回歸系數(shù)矩陣的取值,減少不必要的參數(shù)。

      不同的λ將會(huì)得到不同的θ,反映不同的λ和θ的關(guān)系的圖叫做嶺跡圖:

        

      在λ為很小的時(shí)候,θ基本上不怎么變化,而當(dāng)λ很大時(shí),θ趨于0,在中間時(shí)可以找到一個(gè)最好的回歸系數(shù),圖中最好的效果是最上面的一條曲線。

      總的來說,嶺回歸用來處理變量之間相關(guān)度比較高的情況,它在最小二乘法的基礎(chǔ)上加入了一個(gè)系數(shù)后,能夠解決共線的問題,因而具有比較高的應(yīng)用價(jià)值。

      數(shù)據(jù)挖掘入門與實(shí)戰(zhàn)

      搜索添加微信公眾號(hào):datadw

      教你機(jī)器學(xué)習(xí),教你數(shù)據(jù)挖掘

      長按圖片,識(shí)別二維碼,點(diǎn)關(guān)注

      公眾號(hào): weic2c

      據(jù)分析入門與實(shí)戰(zhàn)

      長按圖片,識(shí)別二維碼,點(diǎn)關(guān)注

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多