回歸演算法聚合
⑴ 數據挖掘核心演算法之一--回歸
數據挖掘核心演算法之一--回歸
回歸,是一個廣義的概念,包含的基本概念是用一群變數預測另一個變數的方法,白話就是根據幾件事情的相關程度,用其中幾件來預測另一件事情發生的概率,最簡單的即線性二變數問題(即簡單線性),例如下午我老婆要買個包,我沒買,那結果就是我肯定沒有晚飯吃;復雜一點就是多變數(即多元線性,這里有一點要注意的,因為我最早以前犯過這個錯誤,就是認為預測變數越多越好,做模型的時候總希望選取幾十個指標來預測,但是要知道,一方面,每增加一個變數,就相當於在這個變數上增加了誤差,變相的擴大了整體誤差,尤其當自變數選擇不當的時候,影響更大,另一個方面,當選擇的倆個自變數本身就是高度相關而不獨立的時候,倆個指標相當於對結果造成了雙倍的影響),還是上面那個例子,如果我丈母娘來了,那我老婆就有很大概率做飯;如果在加一個事件,如果我老丈人也來了,那我老婆肯定會做飯;為什麼會有這些判斷,因為這些都是以前多次發生的,所以我可以根據這幾件事情來預測我老婆會不會做晚飯。
大數據時代的問題當然不能讓你用肉眼看出來,不然要海量計算有啥用,所以除了上面那倆種回歸,我們經常用的還有多項式回歸,即模型的關系是n階多項式;邏輯回歸(類似方法包括決策樹),即結果是分類變數的預測;泊松回歸,即結果變數代表了頻數;非線性回歸、時間序列回歸、自回歸等等,太多了,這里主要講幾種常用的,好解釋的(所有的模型我們都要注意一個問題,就是要好解釋,不管是參數選擇還是變數選擇還是結果,因為模型建好了最終用的是業務人員,看結果的是老闆,你要給他們解釋,如果你說結果就是這樣,我也不知道問什麼,那升職加薪基本無望了),例如你發現日照時間和某地葡萄銷量有正比關系,那你可能還要解釋為什麼有正比關系,進一步統計發現日照時間和葡萄的含糖量是相關的,即日照時間長葡萄好吃,另外日照時間和產量有關,日照時間長,產量大,價格自然低,結果是又便宜又好吃的葡萄銷量肯定大。再舉一個例子,某石油產地的咖啡銷量增大,國際油價的就會下跌,這倆者有關系,你除了要告訴領導這倆者有關系,你還要去尋找為什麼有關系,咖啡是提升工人精力的主要飲料,咖啡銷量變大,跟蹤發現工人的工作強度變大,石油運輸出口增多,油價下跌和咖啡銷量的關系就出來了(單純的例子,不要多想,參考了一個根據遙感信息獲取船舶信息來預測糧食價格的真實案例,感覺不夠典型,就換一個,實際油價是人為操控地)。
回歸利器--最小二乘法,牛逼數學家高斯用的(另一個法國數學家說自己先創立的,不過沒辦法,誰讓高斯出名呢),這個方法主要就是根據樣本數據,找到樣本和預測的關系,使得預測和真實值之間的誤差和最小;和我上面舉的老婆做晚飯的例子類似,不過我那個例子在不確定的方面只說了大概率,但是到底多大概率,就是用最小二乘法把這個關系式寫出來的,這里不講最小二乘法和公式了,使用工具就可以了,基本所有的數據分析工具都提供了這個方法的函數,主要給大家講一下之前的一個誤區,最小二乘法在任何情況下都可以算出來一個等式,因為這個方法只是使誤差和最小,所以哪怕是天大的誤差,他只要是誤差和裡面最小的,就是該方法的結果,寫到這里大家應該知道我要說什麼了,就算自變數和因變數完全沒有關系,該方法都會算出來一個結果,所以主要給大家講一下最小二乘法對數據集的要求:
1、正態性:對於固定的自變數,因變數呈正態性,意思是對於同一個答案,大部分原因是集中的;做回歸模型,用的就是大量的Y~X映射樣本來回歸,如果引起Y的樣本很凌亂,那就無法回歸
2、獨立性:每個樣本的Y都是相互獨立的,這個很好理解,答案和答案之間不能有聯系,就像擲硬幣一樣,如果第一次是反面,讓你預測拋兩次有反面的概率,那結果就沒必要預測了
3、線性:就是X和Y是相關的,其實世間萬物都是相關的,蝴蝶和龍卷風(還是海嘯來著)都是有關的嘛,只是直接相關還是間接相關的關系,這里的相關是指自變數和因變數直接相關
4、同方差性:因變數的方差不隨自變數的水平不同而變化。方差我在描述性統計量分析裡面寫過,表示的數據集的變異性,所以這里的要求就是結果的變異性是不變的,舉例,腦袋軸了,想不出例子,畫個圖來說明。(我們希望每一個自變數對應的結果都是在一個盡量小的范圍)
我們用回歸方法建模,要盡量消除上述幾點的影響,下面具體講一下簡單回歸的流程(其他的其實都類似,能把這個講清楚了,其他的也差不多):
first,找指標,找你要預測變數的相關指標(第一步應該是找你要預測什麼變數,這個話題有點大,涉及你的業務目標,老闆的目的,達到該目的最關鍵的業務指標等等,我們後續的話題在聊,這里先把方法講清楚),找相關指標,標准做法是業務專家出一些指標,我們在測試這些指標哪些相關性高,但是我經歷的大部分公司業務人員在建模初期是不靠譜的(真的不靠譜,沒思路,沒想法,沒意見),所以我的做法是將該業務目的所有相關的指標都拿到(有時候上百個),然後跑一個相關性分析,在來個主成分分析,就過濾的差不多了,然後給業務專家看,這時候他們就有思路了(先要有東西激活他們),會給一些你想不到的指標。預測變數是最重要的,直接關繫到你的結果和產出,所以這是一個多輪優化的過程。
第二,找數據,這個就不多說了,要麼按照時間軸找(我認為比較好的方式,大部分是有規律的),要麼按照橫切面的方式,這個就意味橫切面的不同點可能波動較大,要小心一點;同時對數據的基本處理要有,包括對極值的處理以及空值的處理。
第三, 建立回歸模型,這步是最簡單的,所有的挖掘工具都提供了各種回歸方法,你的任務就是把前面准備的東西告訴計算機就可以了。
第四,檢驗和修改,我們用工具計算好的模型,都有各種假設檢驗的系數,你可以馬上看到你這個模型的好壞,同時去修改和優化,這里主要就是涉及到一個查准率,表示預測的部分裡面,真正正確的所佔比例;另一個是查全率,表示了全部真正正確的例子,被預測到的概率;查准率和查全率一般情況下成反比,所以我們要找一個平衡點。
第五,解釋,使用,這個就是見證奇跡的時刻了,見證前一般有很久時間,這個時間就是你給老闆或者客戶解釋的時間了,解釋為啥有這些變數,解釋為啥我們選擇這個平衡點(是因為業務力量不足還是其他的),為啥做了這么久出的東西這么差(這個就尷尬了)等等。
回歸就先和大家聊這么多,下一輪給大家聊聊主成分分析和相關性分析的研究,然後在聊聊數據挖掘另一個利器--聚類。
⑵ 回歸演算法有哪些
回歸演算法有:
線性回歸使用最佳的擬合直線(也就是回歸線)在因變數(Y)和一個或多個自變數(X)之間建立一種關系。
用一個方程式來表示它,即Y=a+b*X + e,其中a表示截距,b表示直線的斜率,e是誤差項。這個方程可以根據給定的預測變數(s)來預測目標變數的值。
邏輯回歸是用來計算「事件=Success」和「事件=Failure」的概率。當因變數的類型屬於二元(1 / 0,真/假,是/否)變數時,我們就應該使用邏輯回歸。這里,Y的值從0到1,它可以方程表示。
⑶ 回歸演算法有哪些
一張圖為你解釋清楚回歸演算法
⑷ 常用的數據挖掘演算法有哪幾類
常用的數據挖掘演算法分為以下幾類:神經網路,遺傳演算法,回歸演算法,聚類分析演算法,貝耶斯演算法。
目前已經進入大數據的時代,所以數據挖掘和大數據分析的就業前景非常好,學好大數據分析和數據挖掘可以在各個領域中發揮自己的價值;同時,大數據分析並不是一蹴而就的事情,而是需要你日積月累的數據處理經驗,不是會被輕易替代的。一家公司的各項工作,基本上都都用數據體現出來,一位高級的數據分析師職位通常是數據職能架構中領航者,擁有較高的分析和思辨能力,對於業務的理解到位,並且深度知曉公司的管理和商業行為,他可以負責一個子產品或模塊級別的項目,帶領團隊來全面解決問題,把控手下數據分析師的工作質量。
想要了解更多有關數據挖掘演算法的信息,可以了解一下CDA數據分析師的課程。課程教你學企業需要的敏捷演算法建模能力,可以學到前沿且實用的技術,挖掘數據的魅力;教你用可落地、易操作的數據科學思維和技術模板構建出優秀模型,只教實用干貨,以專精技術能力提升業務效果與效率。點擊預約免費試聽課。
⑸ 聚類演算法(上)06
這篇文章的整體排版主要是根據個人的博客來噠,如果感興趣的話可以去我的自己搭建的個人博客看這篇 文章 。
聚類演算法很多,所以和講回歸演算法一樣,分成了上下,上中主要講了傳統的K-Means演算法以及其相應的優化演算法入K-Means++,K-Means||和Canopy等。下中主要講了另外兩種的思路的聚類演算法,即層次聚類和密度聚類。
聚類算就是懟大量未知標注的數據集,按照數據 內部存在的數據特徵 將數據集 劃分為多個不同的類別 ,使類別內的數據比較相似,類別之間的數據相似度比較小,屬於 無監督學習 。
從定義就可以看出,聚類演算法的關鍵在於計算樣本之間的 相似度 ,也稱為 樣本間的距離 。
說到聚類演算法,那肯定核心就是計算距離的公式了,目前常用的有以下幾種。
閔可夫斯基距離(Minkowski) :公式2.1
KL距離(相對熵) :
思考下條件熵的定義,簡單的來說就是在放生一件事情的時候,發生另一件事的概率。公式如下公式2.7.
註:這里書的概率不是實指概率,而是熵表達的含義。這個公式其實就是條件熵的公式。
傑卡德相似系數(Jaccard) :
這個很好理解,它的核心就是使用兩個集合的交集和並集的比率來代表兩者的相似度,也就是說重合的越多越相似。公式如下,公式2.8.
Pearson相關系數 :
這個就是考研數學中的相關系數,表達就是兩者之間的想關系,所以直接拿來用就好了,公式如下公式2.9。
給定一個有M個對象的數據集,構建一個具有k個簇的模型,其中k<=M。滿足 以下條件:
基本思想:
對於給定的類別數目k,首先給定初始劃分,通過迭代改變樣本和簇的隸屬關系,使的每次處理後得到的劃分方式比上一次的好,即 總的數據集之間的距離和變小了
K-means的核心演算法如下:
再循環中的第二步,我們移動了中心點的位置,把中心點移到了隸屬於該中心點類別的所有樣本的中間,並使用樣本的均值作為位置。這樣子看似是拍腦袋想的移動策略,其實是可以推導出來的。正如聚類演算法思想所指出的,我們要讓所有的點到自己的分類的中心點的歐幾里得距離最小,所以我們設置目標放稱為公式4.1,公式中的1/2是為了之後求導運算方便。我們為了讓目標函數盡可能的小,所以使用了之前一直在使用的思考方式,對其使用梯度下降演算法,求導後得到公式4.2,之後令其等於0,就得到了公式4.3。
最後這個看似不錯的演算法,其實有著不小的缺點,那就是 初值敏感 。我們來仔細想一想,如果兩個不小心隨機生成的初值落到了一個類別中,兩者的距離還特別近,這中情況下就很難正確分類了。除此之外,由於移動策略中使用的是均值,也就是說如果集合中含有非常大的誤差點的話,這樣子會是中心點的設置偏離正確點很遠,所以很多時候我們改用 中值來更新中心點 ,這就是我們說的K-Mediods聚類,即K中值聚類。
總結下K-means演算法
優點:
由於K-Means對初始中心點非常敏感,我們這里就嘗試著通過二分法弱化初始中心點。這種演算法的具體步驟如下:
我們在這個演算法中提到了SSE,這個可以是簇內所有樣本點,到其中心點的距離的總和,代表著簇內的點是不是高度相關。計算公式如下公式4.4。
可以看出在這種演算法下,很好的避開了,兩個中心點都在一起的情況。
K-Means++做的改善,是直接對初始點的生成位置的選擇進行優化的,他的初始點生成策略如下:
Canopy屬於一種「粗略地」聚類演算法,簡單的來說就是,不那麼追求自動獲得最優解,而是引入了一種人為規定的先驗值進行聚類,具體步驟如下:
註:Canopy演算法得到的最終結果的值,聚簇之間是可能存在重疊的,但是不會存在 某個對象不屬於任何聚簇的情況
顯然,這種演算法雖然快,但是很難生成滿足我們應用的模型,所以通常我們將它作為解決K-Means初值敏感的方案,他們合在一起就是Canopy+K-Means演算法。
順序就是先使用Canopy演算法獲得K個聚類中心,然後用這K個聚類中心作為K-Means演算法。這樣子就很好的解決了K-Means初值敏感的問題。
Mini Batch K-Means演算法是K-Means演算法的一種優化變種,採用小規模的數據子集,來減少計算時間。其中採用小規模的數據子集指的是每次訓練使用的數據集是在訓練演算法的時候隨機抽取的數據子集。Mini Batch K-Means演算法可以減少K-Means演算法的收斂時間,而且產生的結果效果只是略差於標准K-Means演算法。
它的演算法步驟如下:
聚類演算法的衡量標准有很多,包括均一性、完整性、V-measure、調整蘭德系數(ARI ,Adjusted Rnd Index)、調整互信息(AMI,Adjusted Mutual Information)以及輪廓系數等等。
均一性:一個簇中只包含一個類別的樣本,則滿足均一性。其實也可以認為就是正確率,即每個聚簇中正確分類的樣本數占該聚簇總樣本數的比例和。其公式如下公式5.1。
完整性:同類別樣本被歸類到相同簇中,則滿足完整性。每個聚簇中正確分類的樣本數占該類型的總樣本數比例的和,通俗的來說就是,我們已分類類別中,分類正確的個數。
其公式如下,公式5.2:
在實際的情況中,均一性和完整性是往往不能兼得的,就好像抓特務時的矛盾一樣,到底是保證每個抓的人都是特務,還是寧可錯抓也不放過一個特務,之間的取捨很難把握。所以再一次貫徹,魚和熊掌不可兼得,我們就加權,於是得到的就是V-measure,其公式如下公式5.3:
蘭德系數(RI,Rand index) ,我用中文看了不少講蘭德系數的博客,其中的文字說明幾乎都是相同的,對個人的理解幫助不是特別大,於是用英文查的。最終理解了這個系數的參數的意思,想看英文說明的,個人覺得還挺好懂的參考 這里 。以下是我個人的講解。
首先,將原數據集中的元素進行兩兩配對形成一個新的數據集,我們稱之為S數據集。這時候,我們將原數據集,根據兩種不同的策略分別劃分成r份和s份,並對這兩個數據集命名為X和Y。在這里我們可以看出,X和Y的元素是相同的,只是他們的劃分方式不同。
接下來我們來思考,S數據集中,每個元素中的兩個樣本,在X和Y中只有兩種可能,就是兩個樣本都在一個子集中,或者不在一個子集中,那麼對於S中的一個元素,只有四種可能性。
接下來引入, 調整蘭德系數(ARI,Adjusted Rnd Index) ,ARI取值范圍 ,值越大,表示聚類結果和真實情況越吻合。從廣義的角度來將,ARI是衡量兩個數據分布的吻合程度的,公式5.5如下:
調整互信息,整體的流程很像ARI,AMI則是對MI進行調整。而MI是使用信息熵來描述的。那麼互信息表示了什麼呢,首先先看下 維基網路的定義 :
之前我們說到的衡量指標都是有標簽的,這里的輪廓系數則是不包含標簽的評價指標。