作者:探碼科技, 原文鏈接: http://nbbskj.com/learning/309
下面我們將會為大家講述常見機器算法名單
線性回歸通常用于根據連續變量估計實際數值(房價、呼叫次數、總銷售額等)。我們通過擬合最佳直線來建立自變量和因變量的關系。這條最佳直線叫做回歸線,并且用 Y= a *X + b 這條線性等式來表示。
理解線性回歸的最好辦法是回顧一下童年。假設在不問對方體重的情況下,讓一個五年級的孩子按體重從輕到重的順序對班上的同學排序,你覺得這個孩子會怎么做?他(她)很可能會目測人們的身高和體型,綜合這些可見的參數來排列他們。這是現實生活中使用線性回歸的例子。實際上,這個孩子發現了身高和體型與體重有一定的關系,這個關系看起來很像上面的等式。
? ? ? 在這個等式中:
? ? ? Y:因變量
? ? ? a:斜率
? ? ? x:自變量
? ? ? b :截距
系數 a 和 b 可以通過最小二乘法獲得。
參見下例。我們找出最佳擬合直線 y=0.2811x+13.9。已知人的身高,我們可以通過這條等式求出體重。?
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ?
? ?
線性回歸的兩種主要類型是一元線性回歸和多元線性回歸。一元線性回歸的特點是只有一個自變量。多元線性回歸的特點正如其名,存在多個自變量。找最佳擬合直線的時候,你可以擬合到多項或者曲線回歸。這些就被叫做多項或曲線回歸。
根據一些 feature 進行分類,每個節點提一個問題,通過判斷,將數據分為兩類,再繼續提問。這些問題是根據已有數據學習出來的,再投入新數據的時候,就可以根據這棵樹上的問題,將數據劃分到合適的葉子上。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
在源數據中隨機選取數據,組成幾個子集
? ? ? ? ???
S 矩陣是源數據,有 1-N 條數據,A B C 是feature,最后一列C是類別
?
? ? ? ? ??
由 S 隨機生成 M 個子矩陣
?
? ? ? ? ?
這 M 個子集得到 M 個決策樹
將新數據投入到這 M 個樹中,得到 M 個分類結果,計數看預測成哪一類的數目最多,就將此類別作為最后的預測結果
? ? ? ? ??
別被它的名字迷惑了!這是一個分類算法而不是一個回歸算法。該算法可根據已知的一系列因變量估計離散數值(比方說二進制數值 0 或 1 ,是或否,真或假)。簡單來說,它通過將數據擬合進一個邏輯函數來預估一個事件出現的概率。因此,它也被叫做邏輯回歸。因為它預估的是概率,所以它的輸出值大小在 0 和 1 之間(正如所預計的一樣)。
讓我們再次通過一個簡單的例子來理解這個算法。
假設你的朋友讓你解開一個謎題。這只會有兩個結果:你解開了或是你沒有解開。想象你要解答很多道題來找出你所擅長的主題。這個研究的結果就會像是這樣:假設題目是一道十年級的三角函數題,你有 70%的可能會解開這道題。然而,若題目是個五年級的歷史題,你只有30%的可能性回答正確。這就是邏輯回歸能提供給你的信息。
從數學上看,在結果中,幾率的對數使用的是預測變量的線性組合模型。
在上面的式子里,p 是我們感興趣的特征出現的概率。它選用使觀察樣本值的可能性最大化的值作為參數,而不是通過計算誤差平方和的最小值(就如一般的回歸分析用到的一樣)。
現在你也許要問了,為什么我們要求出對數呢?簡而言之,這種方法是復制一個階梯函數的最佳方法之一。我本可以更詳細地講述,但那就違背本篇指南的主旨了。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Neural Networks 適合一個input可能落入至少兩個類別里
NN 由若干層神經元,和它們之間的聯系組成
第一層是 input 層,最后一層是 output 層
在 hidden 層 和 output 層都有自己的 classifier
?? ? ? ???
input 輸入到網絡中,被激活,計算的分數被傳遞到下一層,激活后面的神經層,最后output 層的節點上的分數代表屬于各類的分數,下圖例子得到分類結果為 class 1
同樣的 input 被傳輸到不同的節點上,之所以會得到不同的結果是因為各自節點有不同的weights 和 bias
這也就是 forward propagation
? ? ? ? ??
Markov Chains 由 state 和 transitions 組成
栗子,根據這一句話 ‘the quick brown fox jumps over the lazy dog’,要得到 markov chain
步驟,先給每一個單詞設定成一個狀態,然后計算狀態間轉換的概率
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???
這是一句話計算出來的概率,當你用大量文本去做統計的時候,會得到更大的狀態轉移矩陣,例如 the 后面可以連接的單詞,及相應的概率
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
生活中,鍵盤輸入法的備選結果也是一樣的原理,模型會更高級
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
該算法可用于分類問題和回歸問題。然而,在業界內,K – 最近鄰算法更常用于分類問題。K – 最近鄰算法是一個簡單的算法。它儲存所有的案例,通過周圍k個案例中的大多數情況劃分新的案例。根據一個距離函數,新案例會被分配到它的 K 個近鄰中最普遍的類別中去。
這些距離函數可以是歐式距離、曼哈頓距離、明式距離或者是漢明距離。前三個距離函數用于連續函數,第四個函數(漢明函數)則被用于分類變量。如果 K=1,新案例就直接被分到離其最近的案例所屬的類別中。有時候,使用 KNN 建模時,選擇 K 的取值是一個挑戰。
更多信息:K – 最近鄰算法入門(簡化版)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
?
我們可以很容易地在現實生活中應用到 KNN。如果想要了解一個完全陌生的人,你也許想要去找他的好朋友們或者他的圈子來獲得他的信息。
在選擇使用 KNN 之前,你需要考慮的事情:
八.K 均值算法
K – 均值算法是一種非監督式學習算法,它能解決聚類問題。使用 K – 均值算法來將一個數據歸入一定數量的集群(假設有 k 個集群)的過程是簡單的。一個集群內的數據點是均勻齊次的,并且異于別的集群。
還記得從墨水漬里找出形狀的活動嗎?K – 均值算法在某方面類似于這個活動。觀察形狀,并延伸想象來找出到底有多少種集群或者總體。
? ? ? ? ? ? ? ???
K – 均值算法怎樣形成集群:
如何決定 K 值:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
假定觀測數據表示為 Y=(Y_{1},Y_{2},...,Y_{n})^{T}?
未觀測數據表示為Z=(Z_{1},Z_{2},...,Z_{n})^{T},則觀測數據的似然函數為?
P(Y|\theta )=\sum_{Z}^{ }P(Z|\theta)P(Y|Z,\theta)
通過最大似然估計建立目標函數,有?
L(\theta)=logP(Y,Z|\theta )
算法1(EM算法)?
輸入:觀測變量數據Y,隱變量數據Z,聯合分布 P(Y,Z|\theta ),條件分布P(Z|Y,\theta );?
輸出:模型參數\theta。
1)、選擇參數的初值\theta^{(0)},開始迭代;?
2)、E步:記\theta^{(i)}為第i次迭代參數\theta的估計值,在第i+1次迭代的E步,計算概率分布P的期望稱為Q函數?
? ? ? ? ? ? ? Q(\theta ,\theta ^{(i)})=E_{Z}[logP(Y,Z|\theta)|Y,\theta^{(i)}]?
? ? ? ? ? ? ? =\sum_{z}^{ }logP(Y,Z|\theta )P(Z|Y,\theta ^{i})?
3)、M步:求使Q(\theta ,\theta ^{(i)})極大化的\theta,確定第i+1次迭代的參數估計值\theta ^{(i+1)}?
? ? ? ? ? ? ? \theta ^{(i+1)}=arg \underset{\theta }{max}Q(\theta ,\theta ^{(i)})?
4)、重復第2)步和第3)步,直到收斂。
Z是隱隨機變量,不方便直接找到參數估計。?
策略:計算L(\theta )下界,求該下界的最大值;重復該過程,知道收斂到局部最大值。?
下圖給出EM算法的直觀解釋
圖中上方曲線為l(\theta ),下方曲線為l(\theta )的一個下界B(\theta ,\theta ^{(i)}),兩個函數在點\theta =\theta ^{(i)}處相等。EM算法找到一個點\theta ^{(i+1)}使函數B(\theta ,\theta ^{(i)})極大化,也條件概率的期望函數Q極大化。EM算法在點\theta ^{(i+1)}重新計算Q函數值,進行下次迭代。在這個過程中,對數似然函數L(\theta )不斷增大。從上圖中可以推斷出EM算法不能保證找到全局最優值。
在預示變量間相互獨立的前提下,根據貝葉斯定理可以得到樸素貝葉斯這個分類方法。用更簡單的話來說,一個樸素貝葉斯分類器假設一個分類的特性與該分類的其它特性不相關。舉個例子,如果一個水果又圓又紅,并且直徑大約是 3 英寸,那么這個水果可能會是蘋果。即便這些特性互相依賴,或者依賴于別的特性的存在,樸素貝葉斯分類器還是會假設這些特性分別獨立地暗示這個水果是個蘋果。
樸素貝葉斯模型易于建造,且對于大型數據集非常有用。雖然簡單,但是樸素貝葉斯的表現卻超越了非常復雜的分類方法。
貝葉斯定理提供了一種從P(c)、P(x)和P(x|c) 計算后驗概率 P(c|x) 的方法。請看以下等式:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
在這里,
P(c|x) 是已知預示變量(屬性)的前提下,類(目標)的后驗概率
P(c) 是類的先驗概率
P(x|c) 是可能性,即已知類的前提下,預示變量的概率
P(x) 是預示變量的先驗概率
例子:讓我們用一個例子來理解這個概念。在下面,我有一個天氣的訓練集和對應的目標變量“Play”。現在,我們需要根據天氣情況,將會“玩”和“不玩”的參與者進行分類。讓我們執行以下步驟。
步驟1:把數據集轉換成頻率表。
步驟2:利用類似“當Overcast可能性為0.29時,玩耍的可能性為0.64”這樣的概率,創造 Likelihood 表格。
? ? ? ? ? ? ? ? ? ? ? ?
步驟3:現在,使用樸素貝葉斯等式來計算每一類的后驗概率。后驗概率最大的類就是預測的結果。
問題:如果天氣晴朗,參與者就能玩耍。這個陳述正確嗎?
我們可以使用討論過的方法解決這個問題。于是 P(會玩 | 晴朗)= P(晴朗 | 會玩)* P(會玩)/ P (晴朗)
我們有 P (晴朗 |會玩)= 3/9 = 0.33,P(晴朗) = 5/14 = 0.36, P(會玩)= 9/14 = 0.64
現在,P(會玩 | 晴朗)= 0.33 * 0.64 / 0.36 = 0.60,有更大的概率。
樸素貝葉斯使用了一個相似的方法,通過不同屬性來預測不同類別的概率。這個算法通常被用于文本分類,以及涉及到多個類的問題。
?
?
?