1. 程式人生 > >機器學習算法小結

機器學習算法小結

自動 簡單的 利用 bayes 第一步 非監督 情況下 主題 節點

  1. 貝葉斯分類器(Bayesian Classifier)

(如何建立一個文檔分類系統,用於垃圾郵件過濾,或是根據關鍵字的模糊搜索來對一組文檔進行劃分)

貝葉斯分類器一般用於關於文檔處理,但實際上也可以適用於任何其他形式的數據集,只要能將其轉化成一組特征列表。所謂特征,就是指一個給定項中存在或缺少的某種東西。(在文檔中,特征就是文檔中的單詞)

*訓練

利用樣本進行訓練(同所以監督算法一樣)

分類器會記錄所有特征,以及這些特征與某個特定分類相關聯的數字概率;即得到一個附有相應概率的特征列表。

*分類

經過訓練之後,對新的項目進行自動分類;

需要一種方法能將所有特征的概率組合到一起,形成一個整體上的概率。

  1. 決策樹分類器(Decision Tree Classifier)

(如何根據服務器日誌來對用戶的行為進行建模)

算法從根部開始構造決策樹,在每一步選擇一個屬性,利用該屬性以最佳的可能方式對數據進行拆分

為了創建(根)節點,第一步就是要對每一個變量進行嘗試,最後獲得拆分效果最好的那個變量(但面對規模更大一些的數據集時,就不會總是有清晰的拆分結果,為了衡量一個拆分的優劣,需要知道熵的概念)

熵(每個集合的熵都是用來計算信息增益的):集合中的熵偏小,意味著該集合中大部分元素都是同質的;熵等於0,則所有元素都是同一個類型的

  1. 神經網絡(Neural Networks)

(如何根據用戶以往點擊的鏈接簡單構建一個神經網絡,用以對搜索結果的排名進行調整,神經網絡可以識別出哪些單詞的組合最重要的,以及哪些單詞對於某次查詢是並不重要的,不僅可以將神經網絡用於分類,還可以將其用於數值預測問題)

神經網絡一類之——多層感知神經網絡(multilayer perceptron network)

多層感知神經網絡:一層輸入神經元,多層隱藏神經元,一層輸出神經元

層與層之間通過突觸彼此相連,每一個突觸都有一個與之關聯的權重,權重越大,對神經元輸出的影響也越大

*簡單的例子:垃圾郵件的過濾問題

首先需要設置好突觸的權重(設置突觸的方法???),位於第一層的神經元對於用作輸入的單詞給予響應,如某個單詞存在於郵件信息中,則與該單詞關聯最強的神經元就會被激活,第二層神經元接受第一層神經元的輸入,因此會對單詞的組合給予響應(因為每層的每個神經元之間都有聯系),最後,這些神經元會將結果輸出,形成強或弱關聯,最終的決策結論,就是判定哪一個輸出最強

例子總結:多層神經網絡可以非常輕松的處理代表不同事物的各種特征的不同組合

*訓練:

神經網絡的真正威力是可以從隨機的權重值開始,然後通過訓練不斷的從樣本中得到學習,訓練神經網絡最常見的方法就是”反向傳播法”:

首先,從一個樣本中及其正確答案(非垃圾郵件/垃圾郵件)開始

隨後,將樣本送入神經網絡,觀察其當前的推測結果

開始的時候,網絡也許會為垃圾郵件賦予一個比非垃圾郵件更高一些的權重, 這是不正確且需要修正的,即需要告訴網絡,垃圾郵件的權值更接近於0,非 垃圾郵件則更接近與1

指向垃圾郵件的突觸權重,會根據每一個隱藏層節點的貢獻程度相應的做向下微調,而指向非垃圾郵件的權重則會向上微調;介於輸入層和隱藏層之間的突觸權重,也會根據其對輸出層中的重要節點的貢獻程度進行相應的調整(調整的公式???)

  1. 支持向量機 (Support-Vector Machines)

(SVM)

SVM接受數據集作為數字輸入,並嘗試預測這些數據屬於哪個分類

SVM通過尋找介於兩個分類之間的分界線來構建預測模型

通過支持向量機找到的分界線,能夠清晰地對數據進行劃分,這意味著分界線與處於其附近的坐標點彼此間達到最大可能距離

而最佳分界線,是表現最好的那條線:確定這條分界線所在位置唯一需要的坐標點,是距離它最近的那些點,這些點被稱為”支持向量”

核技法(The Kernel Trick)

假如在圖上找不到任何可以劃分數據的直線,因此在沒有按某種方式對數據采取變換之前,無法利用”線性分類器”來找到有效劃分的;

方法一:(就需要一些方法(通過在各個軸上施加不同的函數,將數據變換到另一個不同的空間內,甚至超過二維空間))”多項式變換”(???),利用該方法後可以得到新的分布圖,並且很可以通過線性分類器得到分界線

方法二:(在現實中,大多數情況下為了找到分界線往往要將坐標點變換到更為復雜的空間,這些空間維度有的是上千維,有的是無限維,多項式變換並不總是可行)”核技法”——不再進行空間的變換,而是用一個新的函數(???)來取代原來的點函數,該函數會在數據被變換到另一個不同的空間之後,返回相應的點積結果

  1. K-最近鄰(K-Nearest Neighbors,KNN)

(如何針對一組給定的樣本來構造價格預測模型)

*工作原理:

接受一個用以進行數值預測的新數據項,然後將其與一組已經賦過值的數據項進行比較,算法會從中找出與待測數據項最為接近的若幹項,並對其求均值以得到最終的預測結果

K——若幹項的數目,即用於求均值的最佳匹配數

*擴展

根據近鄰之間距離遠近程度進行加權平均,距離非常接近的近鄰會比稍遠者更高的權重

*變量縮放和多余變量

KNN算法存在的大問題——考慮所有的變量

通過計算距離之前對數據進行調整加以解決,對某些變量的數值進行放大,某些縮小,完全補齊作用的變量乘以0,對有價值但值域範圍差別很大的變量縮放到更具可比性的程度

縮放量——需要通過對預測算法實施交叉驗證,判斷一組縮放因子的優劣程度,即哪些因子應該被用於對新數據的預測

交叉驗證:先從數據集中去除一部分數據,然後利用剩余數據來推測出這部分數據,算法會嘗試對推測的結果進行評估,通過對不同的縮放因子進行交叉驗證,可以得到針對每一項數據的誤差率,從而可以判斷哪些縮放因子應該用於對數據的猜測

例子:去掉某個數據349,采用k=2,推測值=(399+299)/2,誤差=(推測值-去掉的實際數據值)的平方=0

##分級聚類、K-均值聚類都屬於非監督學習技術:不要求訓練用的數據樣本,因為這些方法不是用來做預測的

(如何選擇一組熱門博客並自動對其進行聚類,從中可以發現哪些博客被理所當然的劃歸到了一類,這些博客或具有相似的描寫主題或使用了相近的詞匯)

  1. 聚類(Clustering)
  2. 分級聚類

*工作方式

尋找距離最近的數據項,合二為一,並且新聚類的位置等於原來兩個數據項位置的均值,持續到每個數據項都被包含在一個大的聚類當中

*級?

因為最終可以形成一個層級結構,該層級結構可以顯示為樹狀圖的形式(dendrogram),我們可以選出任意一個枝節點,並判斷是否為一個有價值的群組

  1. K-均值聚類

K-均值聚類實際上是對數據拆分到不同的群組中,要求開始執行運算之前給出想要的群組數量

*運行過程

  1. 兩個中心點隨機位置產生
  2. 每個數據都分配給最近的中心點
  3. (中心點改變)對之前分配好的某一組數據進行計算平均值,得到新位置,把中心點移到該位置
  4. 當進行再分配時,會發現某一組的某個數據項會距離另一個組的中心點更近了,此時會把這個數據項歸劃到另一組

##多維縮放也是非監督技術,並不是要做預測,而是使不同數據項之間的關聯程度更易於理解

  1. 多維縮放(Multidimensional Scaling)

多維縮放會為數據集構造一個低維度的表達形式,並令距離值盡可能接近於原數據集,對於屏幕或者紙張的打印輸出,多維縮放通常意味著將數據從多維將至二維

例子:將一張4維數據集(每一項數據有4個相關的值),利用歐幾裏得距離公式,得到每兩項直接的距離值,從而可以將所有數據項繪制在2維圖上,圖元素即為每兩項之間計算得到的距離值;而後,由於存在誤差,需要不斷重復進行節點移動,知道無法通過移動節點來減少總的誤差值為止

##也是一種非監督算法,因為其作用並非預測分類或數值,而是幫助我們識別數據的特征

  1. 非負矩陣因式分解(Non-Negative Matrix Factorization,NMF)

(觀察構成新聞故事的各種不同的主題,借此來了解如何將股票交易量分解成一系列會對單支或者多支股票即刻構成影響的新聞事件)

*NMF的作用

(情況:不知道數據(觀測值)的權重和特征)

NMF為我們找到特征和權重的可能取值,NMF的目標就是自動找到”特征矩陣”和”權重矩陣”,李娜改革矩陣乘法可以得到”數據集矩陣”(???)——以隨機矩陣開始,並根據一系列更新法則(???)對這些矩陣進行更新,知道特征矩陣和權重矩陣的乘積與數據矩陣足夠接近為止

*結果的意義

特征矩陣可以告訴我們潛藏著數據背後的諸多因素~

##優化不是要處理數據集,而是要嘗試找到能夠使成本函數的輸出結果達到最小化的值

對於一些成本問題,一旦設計好成本函數,可以利用算法(模擬退火、遺傳算法)來解決

  1. 優化(optimization)

成本函數:

(用於優化的成本函數有許多變量需要考慮,而且有時並不清楚到底要修改其中的哪一個變量,才能使最終結果的改善效果達到最好)

#此處只考慮一個變量的函數

首先,可以先簡單繪制,可以很容易找到函數的最低點(一個帶有多個變量的復雜函數則不適用)

註意:一般會有很多個局部最小值,此時假如我們嘗試隨機選擇題解並沿斜坡向下的方法不一定能找到最優解(很有可能陷入一個包含局部最小值的區域,從而永遠無法找到全局範圍內的最小值)

a. 模擬退火

(物理學領域合金冷卻)

以一個隨即推測的題解開始,然後以此為基準隨機選擇一個方向,並就近找到另一個近似解,判斷其成本值;

如果變小,則新的題解取代原來的題解;

如果變大,則新題解取代舊題解的概率取決於當前的溫度值,此處的溫度,會以一個相對較高的數值開始緩慢下降,正因如此,算法在執行的早起階段更容易接受表現相對較差的題解,這樣我們就有效的避免了陷入局部最小值的可能,當溫度到達0,算法便返回當前的題解

b. 遺傳算法

(進化理論)

以一組被稱為種群的隨機題解開始;

種群中表現最為優異的成員——即成本最低者,會被選中並通過稍事改變(變異)或者特征組合(交叉(配對))的方式加以修改;

得到新的族群,稱為下一代;

重復,達到某個閾值,或種群經歷數代後沒有任何改善,或遺傳代數達到最大值,終止

機器學習算法小結