① 數據挖掘核心演算法之一--回歸
數據挖掘核心演算法之一--回歸
回歸,是一個廣義的概念,包含的基本概念是用一群變數預測另一個變數的方法,白話就是根據幾件事情的相關程度,用其中幾件來預測另一件事情發生的概率,最簡單的即線性二變數問題(即簡單線性),例如下午我老婆要買個包,我沒買,那結果就是我肯定沒有晚飯吃;復雜一點就是多變數(即多元線性,這里有一點要注意的,因為我最早以前犯過這個錯誤,就是認為預測變數越多越好,做模型的時候總希望選取幾十個指標來預測,但是要知道,一方面,每增加一個變數,就相當於在這個變數上增加了誤差,變相的擴大了整體誤差,尤其當自變數選擇不當的時候,影響更大,另一個方面,當選擇的倆個自變數本身就是高度相關而不獨立的時候,倆個指標相當於對結果造成了雙倍的影響),還是上面那個例子,如果我丈母娘來了,那我老婆就有很大概率做飯;如果在加一個事件,如果我老丈人也來了,那我老婆肯定會做飯;為什麼會有這些判斷,因為這些都是以前多次發生的,所以我可以根據這幾件事情來預測我老婆會不會做晚飯。
大數據時代的問題當然不能讓你用肉眼看出來,不然要海量計算有啥用,所以除了上面那倆種回歸,我們經常用的還有多項式回歸,即模型的關系是n階多項式;邏輯回歸(類似方法包括決策樹),即結果是分類變數的預測;泊松回歸,即結果變數代表了頻數;非線性回歸、時間序列回歸、自回歸等等,太多了,這里主要講幾種常用的,好解釋的(所有的模型我們都要注意一個問題,就是要好解釋,不管是參數選擇還是變數選擇還是結果,因為模型建好了最終用的是業務人員,看結果的是老闆,你要給他們解釋,如果你說結果就是這樣,我也不知道問什麼,那升職加薪基本無望了),例如你發現日照時間和某地葡萄銷量有正比關系,那你可能還要解釋為什麼有正比關系,進一步統計發現日照時間和葡萄的含糖量是相關的,即日照時間長葡萄好吃,另外日照時間和產量有關,日照時間長,產量大,價格自然低,結果是又便宜又好吃的葡萄銷量肯定大。再舉一個例子,某石油產地的咖啡銷量增大,國際油價的就會下跌,這倆者有關系,你除了要告訴領導這倆者有關系,你還要去尋找為什麼有關系,咖啡是提升工人精力的主要飲料,咖啡銷量變大,跟蹤發現工人的工作強度變大,石油運輸出口增多,油價下跌和咖啡銷量的關系就出來了(單純的例子,不要多想,參考了一個根據遙感信息獲取船舶信息來預測糧食價格的真實案例,感覺不夠典型,就換一個,實際油價是人為操控地)。
回歸利器--最小二乘法,牛逼數學家高斯用的(另一個法國數學家說自己先創立的,不過沒辦法,誰讓高斯出名呢),這個方法主要就是根據樣本數據,找到樣本和預測的關系,使得預測和真實值之間的誤差和最小;和我上面舉的老婆做晚飯的例子類似,不過我那個例子在不確定的方面只說了大概率,但是到底多大概率,就是用最小二乘法把這個關系式寫出來的,這里不講最小二乘法和公式了,使用工具就可以了,基本所有的數據分析工具都提供了這個方法的函數,主要給大家講一下之前的一個誤區,最小二乘法在任何情況下都可以算出來一個等式,因為這個方法只是使誤差和最小,所以哪怕是天大的誤差,他只要是誤差和裡面最小的,就是該方法的結果,寫到這里大家應該知道我要說什麼了,就算自變數和因變數完全沒有關系,該方法都會算出來一個結果,所以主要給大家講一下最小二乘法對數據集的要求:
1、正態性:對於固定的自變數,因變數呈正態性,意思是對於同一個答案,大部分原因是集中的;做回歸模型,用的就是大量的Y~X映射樣本來回歸,如果引起Y的樣本很凌亂,那就無法回歸
2、獨立性:每個樣本的Y都是相互獨立的,這個很好理解,答案和答案之間不能有聯系,就像擲硬幣一樣,如果第一次是反面,讓你預測拋兩次有反面的概率,那結果就沒必要預測了
3、線性:就是X和Y是相關的,其實世間萬物都是相關的,蝴蝶和龍卷風(還是海嘯來著)都是有關的嘛,只是直接相關還是間接相關的關系,這里的相關是指自變數和因變數直接相關
4、同方差性:因變數的方差不隨自變數的水平不同而變化。方差我在描述性統計量分析裡面寫過,表示的數據集的變異性,所以這里的要求就是結果的變異性是不變的,舉例,腦袋軸了,想不出例子,畫個圖來說明。(我們希望每一個自變數對應的結果都是在一個盡量小的范圍)
我們用回歸方法建模,要盡量消除上述幾點的影響,下面具體講一下簡單回歸的流程(其他的其實都類似,能把這個講清楚了,其他的也差不多):
first,找指標,找你要預測變數的相關指標(第一步應該是找你要預測什麼變數,這個話題有點大,涉及你的業務目標,老闆的目的,達到該目的最關鍵的業務指標等等,我們後續的話題在聊,這里先把方法講清楚),找相關指標,標准做法是業務專家出一些指標,我們在測試這些指標哪些相關性高,但是我經歷的大部分公司業務人員在建模初期是不靠譜的(真的不靠譜,沒思路,沒想法,沒意見),所以我的做法是將該業務目的所有相關的指標都拿到(有時候上百個),然後跑一個相關性分析,在來個主成分分析,就過濾的差不多了,然後給業務專家看,這時候他們就有思路了(先要有東西激活他們),會給一些你想不到的指標。預測變數是最重要的,直接關繫到你的結果和產出,所以這是一個多輪優化的過程。
第二,找數據,這個就不多說了,要麼按照時間軸找(我認為比較好的方式,大部分是有規律的),要麼按照橫切面的方式,這個就意味橫切面的不同點可能波動較大,要小心一點;同時對數據的基本處理要有,包括對極值的處理以及空值的處理。
第三, 建立回歸模型,這步是最簡單的,所有的挖掘工具都提供了各種回歸方法,你的任務就是把前面准備的東西告訴計算機就可以了。
第四,檢驗和修改,我們用工具計算好的模型,都有各種假設檢驗的系數,你可以馬上看到你這個模型的好壞,同時去修改和優化,這里主要就是涉及到一個查准率,表示預測的部分裡面,真正正確的所佔比例;另一個是查全率,表示了全部真正正確的例子,被預測到的概率;查准率和查全率一般情況下成反比,所以我們要找一個平衡點。
第五,解釋,使用,這個就是見證奇跡的時刻了,見證前一般有很久時間,這個時間就是你給老闆或者客戶解釋的時間了,解釋為啥有這些變數,解釋為啥我們選擇這個平衡點(是因為業務力量不足還是其他的),為啥做了這么久出的東西這么差(這個就尷尬了)等等。
回歸就先和大家聊這么多,下一輪給大家聊聊主成分分析和相關性分析的研究,然後在聊聊數據挖掘另一個利器--聚類。
② 回歸分析的認識及簡單運用
回歸分析的認識及簡單運用
回歸分析(regression analysis)是確定兩種或兩種以上變數間相互依賴的定量關系的一種統計分析方法。運用十分廣泛,回歸分析按照涉及的自變數的多少,分為回歸和多重回歸分析;按照自變數的多少,可分為一元回歸分析和多元回歸分析;按照自變數和因變數之間的關系類型,可分為線性回歸分析和非線性回歸分析。如果在回歸分析中,只包括一個自變數和一個因變數,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關系,則稱為多重線性回歸分析。
定義
回歸分析是應用極其廣泛的數據分析方法之一。它基於觀測數據建立變數間適當的依賴關系,以分析數據內在規律,並可用於預報、控制等問題。
方差齊性
線性關系
效應累加
變數無測量誤差
變數服從多元正態分布
觀察獨立
模型完整(沒有包含不該進入的變數、也沒有漏掉應該進入的變數)
誤差項獨立且服從(0,1)正態分布。
現實數據常常不能完全符合上述假定。因此,統計學家研究出許多的回歸模型來解決線性回歸模型假定過程的約束。
研究一個或多個隨機變數Y1 ,Y2 ,…,Yi與另一些變數X1、X2,…,Xk之間的關系的統計方法,又稱多重回歸分析。通常稱Y1,Y2,…,Yi為因變數,X1、X2,…,Xk為自變數。回歸分析是一類數學模型,特別當因變數和自變數為線性關系時,它是一種特殊的線性模型。最簡單的情形是一個自變數和一個因變數,且它們大體上有線性關系,這叫一元線性回歸,即模型為Y=a+bX+ε,這里X是自變數,Y是因變數,ε是隨機誤差,通常假定隨機誤差的均值為0,方差為σ^2(σ^2大於0)σ^2與X的值無關。若進一步假定隨機誤差遵從正態分布,就叫做正態線性模型。一般的情形,它有k個自變數和一個因變數,因變數的值可以分解為兩部分:一部分是由於自變數的影響,即表示為自變數的函數,其中函數形式已知,但含一些未知參數;另一部分是由於其他未被考慮的因素和隨機性的影響,即隨機誤差。當函數形式為未知參數的線性函數時,稱線性回歸分析模型;當函數形式為未知參數的非線性函數時,稱為非線性回歸分析模型。當自變數的個數大於1時稱為多元回歸,當因變數個數大於1時稱為多重回歸。
回歸分析的主要內容為:
①從一組數據出發,確定某些變數之間的定量關系式,即建立數學模型並估計其中的未知參數。估計參數的常用方法是最小二乘法。
②對這些關系式的可信程度進行檢驗。
③在許多自變數共同影響著一個因變數的關系中,判斷哪個(或哪些)自變數的影響是顯著的,哪些自變數的影響是不顯著的,將影響顯著的自變數入模型中,而剔除影響不顯著的變數,通常用逐步回歸、向前回歸和向後回歸等方法。
④利用所求的關系式對某一生產過程進行預測或控制。回歸分析的應用是非常廣泛的,統計軟體包使各種回歸方法計算十分方便。
在回歸分析中,把變數分為兩類。一類是因變數,它們通常是實際問題中所關心的一類指標,通常用Y表示;而影響因變數取值的的另一類變數稱為自變數,用X來表示。
回歸分析研究的主要問題是:
(1)確定Y與X間的定量關系表達式,這種表達式稱為回歸方程;
(2)對求得的回歸方程的可信度進行檢驗;
(3)判斷自變數X對因變數Y有無影響;
(4)利用所求得的回歸方程進行預測和控制。
回歸分析可以說是統計學中內容最豐富、應用最廣泛的分支。這一點幾乎不帶誇張。包括最簡單的t檢驗、方差分析也都可以歸到線性回歸的類別。而卡方檢驗也完全可以用logistic回歸代替。
眾多回歸的名稱張口即來的就有一大片,線性回歸、logistic回歸、cox回歸、poission回歸、probit回歸等等等等,可以一直說的你頭暈。為了讓大家對眾多回歸有一個清醒的認識,這里簡單地做一下總結:
1、線性回歸,這是我們學習統計學時最早接觸的回歸,就算其它的你都不明白,最起碼你一定要知道,線性回歸的因變數是連續變數,自變數可以是連續變數,也可以是分類變數。如果只有一個自變數,且只有兩類,那這個回歸就等同於t檢驗。如果只有一個自變數,且有三類或更多類,那這個回歸就等同於方差分析。如果有2個自變數,一個是連續變數,一個是分類變數,那這個回歸就等同於協方差分析。所以線性回歸一定要認准一點,因變數一定要是連續變數。
2、logistic回歸,與線性回歸並成為兩大回歸,應用范圍一點不亞於線性回歸,甚至有青出於藍之勢。因為logistic回歸太好用了,而且太有實際意義了。解釋起來直接就可以說,如果具有某個危險因素,發病風險增加2.3倍,聽起來多麼地讓人通俗易懂。線性回歸相比之下其實際意義就弱了。logistic回歸與線性回歸恰好相反,因變數一定要是分類變數,不可能是連續變數。分類變數既可以是二分類,也可以是多分類,多分類中既可以是有序,也可以是無序。二分類logistic回歸有時候根據研究目的又分為條件logistic回歸和非條件logistic回歸。條件logistic回歸用於配對資料的分析,非條件logistic回歸用於非配對資料的分析,也就是直接隨機抽樣的資料。無序多分類logistic回歸有時候也成為多項logit模型,有序logistic回歸有時也稱為累積比數logit模型。
3、cox回歸,cox回歸的因變數就有些特殊,因為他的因變數必須同時有2個,一個代表狀態,必須是分類變數,一個代表時間,應該是連續變數。只有同時具有這兩個變數,才能用cox回歸分析。cox回歸主要用於生存資料的分析,生存資料至少有兩個結局變數,一是死亡狀態,是活著還是死亡?二是死亡時間,如果死亡,什麼時間死亡?如果活著,從開始觀察到結束時有多久了?所以有了這兩個變數,就可以考慮用cox回歸分析。
4、poisson回歸,poisson回歸相比就不如前三個用的廣泛了。但實際上,如果你能用logistic回歸,通常也可以用poission回歸,poisson回歸的因變數是個數,也就是觀察一段時間後,發病了多少人?或者死亡了多少人?等等。其實跟logistic回歸差不多,因為logistic回歸的結局是是否發病,是否死亡,也需要用到發病例數、死亡例數。大家仔細想想,其實跟發病多少人,死亡多少人一個道理。只是poission回歸名氣不如logistic回歸大,所以用的人也不如logistic回歸多。但不要因此就覺得poisson回歸沒有用。
5、probit回歸,在醫學里真的是不大用,最關鍵的問題就是probit這個詞太難理解了,通常翻譯為概率單位。probit函數其實跟logistic函數十分接近,二者分析結果也十分接近。可惜的是,probit回歸的實際含義真的不如logistic回歸容易理解,由此導致了它的默默無名,但據說在社會學領域用的似乎更多一些。
6、負二項回歸。所謂負二項指的是一種分布,其實跟poission回歸、logistic回歸有點類似,poission回歸用於服從poission分布的資料,logistic回歸用於服從二項分布的資料,負二項回歸用於服從負二項分布的資料。說起這些分布,大家就不願意聽了,多麼抽象的名詞,我也很頭疼。如果簡單點理解,二項分布你可以認為就是二分類數據,poission分布你可以認為是計數資料,也就是個數,而不是像身高等可能有小數點,個數是不可能有小數點的。負二項分布呢,也是個數,只不過比poission分布更苛刻,如果你的結局是個數,而且結局可能具有聚集性,那可能就是負二項分布。簡單舉例,如果調查流感的影響因素,結局當然是流感的例數,如果調查的人有的在同一個家庭里,由於流感具有傳染性,那麼同一個家裡如果一個人得流感,那其他人可能也被傳染,因此也得了流感,那這就是具有聚集性,這樣的數據盡管結果是個數,但由於具有聚集性,因此用poission回歸不一定合適,就可以考慮用負二項回歸。既然提到這個例子,用於logistic回歸的數據通常也能用poission回歸,就像上面案例,我們可以把結局作為二分類,每個人都有兩個狀態,得流感或者不得流感,這是個二分類結局,那就可以用logistic回歸。但是這里的數據存在聚集性怎麼辦呢,幸虧logistic回歸之外又有了更多的擴展,你可以用多水平logistic回歸模型,也可以考慮廣義估計方程。這兩種方法都可以處理具有層次性或重復測量資料的二分類因變數。
7、weibull回歸,有時中文音譯為威布爾回歸。weibull回歸估計你可能就沒大聽說過了,其實這個名字只不過是個噱頭,嚇唬人而已。上一篇說過了,生存資料的分析常用的是cox回歸,這種回歸幾乎統治了整個生存分析。但其實夾縫中還有幾個方法在頑強生存著,而且其實很有生命力,只是國內大多不願用而已。weibull回歸就是其中之一。cox回歸為什麼受歡迎呢,因為它簡單,用的時候不用考慮條件(除了等比例條件之外),大多數生存數據都可以用。而weibull回歸則有條件限制,用的時候數據必須符合weibull分布。怎麼,又是分布?!估計大家頭又大了,是不是想直接不往下看了,還是用cox回歸吧。不過我還是建議看下去。為什麼呢?相信大家都知道參數檢驗和非參數檢驗,而且可能更喜歡用參數檢驗,如t檢驗,而不喜歡用非參數檢驗,如秩和檢驗。那這里的weibull回歸和cox回歸基本上可以說是分別對應參數檢驗和非參數檢驗。參數檢驗和非參數檢驗的優缺點我也在前面文章里通俗介紹了,如果數據符合weibull分布,那麼直接套用weibull回歸當然是最理想的選擇,他可以給出你最合理的估計。如果數據不符合weibull分布,那如果還用weibull回歸,那就套用錯誤,肯定結果也不會真實到哪兒去。所以說,如果你能判斷出你的數據是否符合weibull分布,那當然最好的使用參數回歸,也就是weibull回歸。但是如果你實在沒什麼信心去判斷數據分布,那也可以老老實實地用cox回歸。cox回歸可以看作是非參數的,無論數據什麼分布都能用,但正因為它什麼數據都能用,所以不可避免地有個缺點,每個數據用的都不是恰到好處。weibull回歸就像是量體裁衣,把體形看做數據,衣服看做模型,weibull回歸就是根據你的體形做衣服,做出來的肯定對你正合身,對別人就不一定合身了。cox回歸呢,就像是到商場去買衣服,衣服對很多人都合適,但是對每個人都不是正合適,只能說是大致合適。至於到底是選擇麻煩的方式量體裁衣,還是圖簡單到商場直接去買現成的,那就根據你的喜好了,也根據你對自己體形的了解程度,如果非常熟悉,當然就量體裁衣了。如果不大了解,那就直接去商場買大眾化衣服吧。
8、主成分回歸。主成分回歸是一種合成的方法,相當於主成分分析與線性回歸的合成。主要用於解決自變數之間存在高度相關的情況。這在現實中不算少見。比如你要分析的自變數中同時有血壓值和血糖值,這兩個指標可能有一定的相關性,如果同時放入模型,會影響模型的穩定,有時也會造成嚴重後果,比如結果跟實際嚴重不符。當然解決方法很多,最簡單的就是剔除掉其中一個,但如果你實在捨不得,畢竟這是辛辛苦苦調查上來的,刪了太可惜了。如果捨不得,那就可以考慮用主成分回歸,相當於把這兩個變數所包含的信息用一個變數來表示,這個變數我們稱它叫主成分,所以就叫主成分回歸。當然,用一個變數代替兩個變數,肯定不可能完全包含他們的信息,能包含80%或90%就不錯了。但有時候我們必須做出抉擇,你是要100%的信息,但是變數非常多的模型?還是要90%的信息,但是只有1個或2個變數的模型?打個比方,你要診斷感冒,是不是必須把所有跟感冒有關的症狀以及檢查結果都做完?還是簡單根據幾個症狀就大致判斷呢?我想根據幾個症狀大致能能確定90%是感冒了。不用非得100%的信息不是嗎?模型也是一樣,模型是用於實際的,不是空中樓閣。既然要用於實際,那就要做到簡單。對於一種疾病,如果30個指標能夠100%確診,而3個指標可以診斷80%,我想大家會選擇3個指標的模型。這就是主成分回歸存在的基礎,用幾個簡單的變數把多個指標的信息綜合一下,這樣幾個簡單的主成分可能就包含了原來很多自變數的大部分信息。這就是主成分回歸的原理。
9、嶺回歸。嶺回歸的名稱由來我也沒有查過,可能是因為它的圖形有點像嶺。不要糾結於名稱。嶺回歸也是用於處理自變數之間高度相關的情形。只是跟主成分回歸的具體估計方法不同。線性回歸的計算用的是最小二乘估計法,當自變數之間高度相關時,最小二乘回歸估計的參數估計值會不穩定,這時如果在公式里加點東西,讓它變得穩定,那就解決了這一問題了。嶺回歸就是這個思想,把最小二乘估計里加個k,改變它的估計值,使估計結果變穩定。至於k應該多大呢?可以根據嶺跡圖來判斷,估計這就是嶺回歸名稱的由來。你可以選非常多的k值,可以做出一個嶺跡圖,看看這個圖在取哪個值的時候變穩定了,那就確定k值了,然後整個參數估計不穩定的問題就解決了。
10、偏最小二乘回歸。偏最小二乘回歸也可以用於解決自變數之間高度相關的問題。但比主成分回歸和嶺回歸更好的一個優點是,偏最小二乘回歸可以用於例數很少的情形,甚至例數比自變數個數還少的情形。聽起來有點不可思議,不是說例數最好是自變數個數的10倍以上嗎?怎麼可能例數比自變數還少,這還怎麼計算?可惜的是,偏最小二乘回歸真的就有這么令人發指的優點。所以,如果你的自變數之間高度相關、例數又特別少、而自變數又很多(這么多無奈的毛病),那就現在不用發愁了,用偏最小二乘回歸就可以了。它的原理其實跟主成分回歸有點像,也是提取自變數的部分信息,損失一定的精度,但保證模型更符合實際。因此這種方法不是直接用因變數和自變數分析,而是用反映因變數和自變數部分信息的新的綜合變數來分析,所以它不需要例數一定比自變數多。偏最小二乘回歸還有一個很大的優點,那就是可以用於多個因變數的情形,普通的線性回歸都是只有一個因變數,而偏最小二乘回歸可用於多個因變數和多個自變數之間的分析。因為它的原理就是同時提取多個因變數和多個自變數的信息重新組成新的變數重新分析,所以多個因變數對它來說無所謂。
看了以上的講解,希望能對大家理解回歸分析的運用有些幫助。
以上是小編為大家分享的關於回歸分析的認識及簡單運用的相關內容,更多信息可以關注環球青藤分享更多干貨