1. 程式人生 > >HIT機器學習期末復習(1)——機器學習簡介及決策樹

HIT機器學習期末復習(1)——機器學習簡介及決策樹

決策樹 開始 矩陣 improve 節點 policy heat red program

劉楊的機器學習終於上完了惹,下周就要考試了,趕緊復習ing......

趁機做個總結,就當是復習了惹......


機器學習簡介

1、什麽是機器學習

簡單來說,就是一個三元組<P, T, E>

P——performance性能(對應著性能的評估函數,也就是常說的loss或者likelihood)

T——task任務(對應著被優化的對象,也就是目標函數)

E——experience經驗

就是我們想要某種算法,這種算法的目的是提高某項任務的性能,怎麽提升呢?通過已有的經驗。

一個經常被引用的定義是:

A computer program is said to learn from experience E, with respect to some class of tasks T, and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

2、機器學習的應用

語音識別器、翻譯機;對象識別;機器人控制(自動駕駛);文本挖掘;生物信息學;etc,.

3、機器學習的一般泛型

①監督學習

Given D = {Xi, Yi}  learn F(?; θ)  s.t.: Yi = F(Xi)  Dnew = {Xj} → {Yj}

Xi是我們的數據集,有m維特征,一共N個數據,X是一個m×N的矩陣;

Yi是數據集的標簽,和Xi一一對應,可以有{y1, y2, ..., yk}k種取值,Y是一N×1的列向量;

監督學習的意思是數據集打好了標簽,這個標簽和數據有一定的關聯,但是我們不知道,所以我們想辦法找到另一個函數去擬合這個未知的函數。最後給一些新的數據Dnew

來檢驗這個擬合的函數,只給定X的特征,去檢驗得出的結果Y。

②無監督學習

Given D = {Xi}  learn F(?; θ)  s.t.: Yi = F(Xi)  Dnew = {Xj} → {Yj}

無監督學習的意思是只給數據集,沒有標簽,我們去給這個數據集打上標簽,也就是分類,尋找某一種算法F,來做X到Y的某一種映射。

③強化學習(劉楊說會講一點最後還是沒講惹)

Given D = {env, actions, rewards, simulator/trace/real game}

learn policy: e, r → a / utility: a, e → r  s.t.: {env, new real game} → a1

, a2, a3, ...

強化學習的意思是給定某一個環境下的某些行為,例如說Alpha Go學習下棋,機器學習的是某一種規則,在什麽樣的環境下,有什麽樣的激勵會采取某種行動;或者學習某種功能,在什麽樣的環境下,采取什麽樣的行為會有什麽樣的激勵。那麽最終的目的是使得在一局新的遊戲中,我們能夠使得機器一步一步地采取行動。


決策樹

1、函數近似

  • 設置:

示例集合X

未知的目標函數?:X → Y

函數假設集合H = {h|h: X→Y}

  • 給定:

目標函數?的訓練樣本{<xi, yi>}

  • 確定h∈H,可以最好的近似?

2、Example:稅務欺詐問題

技術分享圖片

假設這是某一個人的特征,他沒有還款,已婚,收入80K,那麽他是否存在稅務欺詐行為呢?我們該采用什麽樣的函數?來判斷呢?

技術分享圖片

這是一棵決策樹,我們用它來查詢一條數據:

  • 首先從根節點開始,如果還款了,那麽判斷不存在欺詐問題,如果沒有還款,那麽進行下一步的判斷;這裏這個人沒有還款,那麽選擇右側分支No;
  • 第二步判斷他的婚姻狀況,如果已婚,那麽判斷不存在欺詐,單身或離異,則進行下一步判斷;這裏這個人已婚,那麽選擇右側分支Married;
  • 最後給Cheat這一項賦值No。

3、決策樹

通過這個例子,我們看到什麽是一棵決策樹呢?

  • 輸入:屬性向量

X = [Refund, MarSt, TaxInc]

  • 輸出:

Y = Cheat(Y取值為{Yes, No},代表是否欺詐)

  • H是不同的決策過程

就是不同的決策樹

  • 每一個內節點:

測試一個屬性Xi

  • 每一個分支:

選擇屬性Xi的一個取值

  • 每一個葉節點:

預測Y

技術分享圖片

例如上圖就是一種決策樹的選擇,當然也可以有很多種其他的決策樹的選擇。

4、決策樹的表示能力

決策樹可以表示輸入屬性的任何函數

問題:可能沒有泛化的能力→希望找到一個更緊湊、更小規模的決策樹

5、決策樹的學習

Top-Down的決策樹歸納/構造算法

Main loop:

  1. A←下一個節點node的最好屬性
  2. 把A作為決策屬性賦給節點node
  3. 對A的每一個取值,創建一個新的兒子節點node
  4. 把相應的訓練樣本分到葉節點
  5. 如果訓練樣本被很好的分類,則停止,否則在新的葉節點上重復上述過程

技術分享圖片

那麽現在的問題就在於:

  • 如何切分示例集

如何確定屬性的測試條件?

如何確定最好的切分?

  • 如何確定停止切分準則X

6、如何確定最好的切分

Ideology:一個好的屬性切分是將示例集合切分為若幹子集,最理想的情況是沒給子集“皆為正例”或“皆為反例”。

所以我們更傾向節點上的數據具有同質(homogeneous)類別分布,因此一個度量來對節點的混雜度(impurity)進行測量。

  • 熵(Entropy)

隨機變量X的熵為H(X):

$H(X) = -\sum_{i=1}^{N}P(x=i)\log_{2}P(x=i)$

為什麽是這樣的呢?

emmm香農告訴我們的...

信息論:

在最短編碼情況下,對消息X = i分配$-\log_{2}P(x=i)$位,所其編碼一個隨機變量X的期望位數是:

$E(X) = \sum_{i=1}^{N}X \cdot P(X) = \sum_{i=1}^{N}(-\log_{2}P(x=i)) \cdot P(x=i)$

令$E(X) = H(X)$,就是我們上面的熵的公式了!

進一步地,我們有:

  • 條件熵

$X$在給定$Y = v$特定條件熵$H(X|Y=v)$:

$H(X|Y=v) = -\sum_{i=1}^{N}P(X=i|Y=v)\log_{2}P(x=i|y=v)$

$X$在給定$Y$條件熵$H(X|Y)$:

$H(X|Y) = -\sum_{j∈Val(y)}P(y=j)H(X|y=j)$

相當於遍歷Y的取值,然後sum掉。

$X$和$Y$的互信息

$I(X;Y) = H(X) - H(X|Y) = H(Y) - H(Y|X) = H(X) + H(Y) - H(X, Y)$

  • 樣本熵

假設S是訓練例子的樣本集,P+是樣本中正例的比例,P-是樣本中反例的比例,用熵來測量樣本中S的混雜度:

$H(S) = -P_{+}\log_{2}P_{+} - P_{-}\log_{2}P_{-}$

HIT機器學習期末復習(1)——機器學習簡介及決策樹