寫給大家看的機器學習書(第二篇)

賽前採訪

在開始這個系列的第二篇文章之前,非常榮幸得採訪到霹霹博士。霹霹目前在阿里巴巴認知計算實驗室做AI方向的艱深探索,我第一次跟他交流機器學習跟數據挖掘的區別時得知,數據挖掘領域鼻祖級的人物韓家煒(Jiawei Han)竟然是他師祖。

  • 八汰(也就是我):聽說你師祖是數據挖掘領域的鼻祖級人物?這是個什麼關係?
  • 霹霹:韓家煒,我老闆是他學生的學生,他的風格就是特別能把事情解釋清楚。不過我沒有跟他一起學習過。

  • 八汰:我第一次跟你討論問題就發現你有那種把問題說的特別明白的能力,你自己有意識到這點嗎?這跟你的老師或者師祖有沒有什麼關係?

  • 霹霹:我之前只意識到我老闆有這個風格。。沒意識到我也被影響了。我不是跟你說過嗎,我老闆對 Paper 的要求是高中生也能讀懂。

  • 八汰:這讓人特別喜歡喜歡跟你聊天。小姑娘應該也喜歡跟你聊天。

  • 霹霹:。。。那倒沒有。

  • 八汰:不過這是另一個問題了,我們還是應該focus在機器學習的話題上。

  • 霹霹:0 0

  • 八汰:我上學時一直是學的計算機科學,在接觸機器學習演算法之前對演算法的認識就是《演算法導論》那種所謂的「傳統演算法」,關於「傳統演算法」和機器學習演算法的本質不同,你是怎麼理解的?
  • 霹霹:傳統的演算法設計是根據給定的輸入和目標,設計求解的計算過程。機器學習中涉及的演算法則是用一種參數化的方式設計這一求解過程。因為機器學習的目標是generalization,我們希望得到一個在未來能多用幾次的模型;而傳統演算法在大多數情況下都是為具體問題設計的,力求一次性解決問題。機器學習通常會基於一些假設,帶有一種強烈的玄學色彩。

  • 八汰:有沒有推薦的入門或進階的書、博客或論文。最好是能像你師祖那樣特別能把事情解釋清楚的。
  • 霹霹:我找一下,我之前入門讀的是一本data mining的書,中英文兩本一起看的,感覺還可以。數據挖掘原理(中文英文),這個。其實現在Machine Learning的書特別多了,西瓜書、Deep Learning textbook都挺好的。

  • 八汰:最後一個問題,你是我認識的演算法圈裡長的最帥的人之一,我可以爆你的照片以騙取點擊嗎?
  • 霹霹:-,-|||~ 不可以。
  • 八汰:好的。

正文

好,現在正式進入正文。在《寫給大家看的機器學習書》的第一篇,我們了解了機器學習的基本概念,機器學習的三個要素——數據、學習演算法和模型(如圖1所示)。

圖1:

在這個系列的第二篇,我將首先借有好貨這個真實的應用場景,讓大家看看數據長什麼樣,了解現實中的機器學習輸入數據是怎麼來的。

接著,我們需要引出模型的的符號化表示和定義。數學符號的引入一方面有利於後續進入到具體的學習演算法的討論時有更高的效率,另一方面這也是每個學習者準確理解機器學習繞不過去的一環。

然後,在理解了輸入數據,熟悉了模型的符號化表示後,我們將對圖1所示的相對粗略的機器學習流程做進一步的細化,細化後如圖3所示。如果說學完這一篇你只能帶走一點知識的話,那就帶走圖3吧。一圖勝千言,以後別人再問你機器學習是什麼,大膽說出讓機器學習專家也吃驚的精準理解吧:)

在這篇文章中,我們將接觸到不少機器學習最常用到的名詞、術語。不要小看名字的力量,一個東西一旦你知道了它的名字,就更容易注意到它的存在,並且掌握它。

1. 數據(Data)

1.1 數據長什麼樣

圖2:

我們仍然以有好貨產品的「瀑布流」頁面(圖2中間)為例,來看看機器學習的輸入數據長什麼樣。

有好貨瀑布流頁是一個完全個性化的頁面,不同的用戶進入到有好貨瀑布流頁,看到的商品推薦是不同的。

我們希望在有限的屏幕空間內給每個用戶展示他最有可能點擊的商品,因此機器學習的目標是要讓學得的模型能夠預判用戶是否會點擊某個商品。

要學得這樣的模型,輸入數據簡單來說大約長這樣(表1所示):

表1

像這樣的學習演算法的輸入數據,叫「訓練數據」(Training Data)

訓練數據的每一行稱為一個「訓練樣本」(Training Sample),通常大家就簡稱「樣本」(Sample)

我們注意到,每個樣本有三個屬性——年齡、性別、商品價格,代表了我們認為用戶是否會點擊某個商品主要由年齡、性別、商品價格三個因素共同決定(當然這裡我們做了簡化,實際上影響的因素遠不止三個)。

這裡的年齡、性別、商品價格我們稱之為「特徵」(Feature)

在這個場景中,我們希望學得的模型可以用來預判用戶是否會點擊某個商品,因此光有年齡、性別、商品價格這樣的特徵信息還不夠,還需要知道每個訓練樣本用戶是否會點擊。「是否點擊」這個信息,稱為樣本的標註(Label)

1.2 訓練數據怎麼來的

了解了訓練數據的長相,一定有人會問:訓練數據是怎麼來的呢?

其實也很簡單,這個大數據時代,絕大多數互聯網產品都會把用戶的行為數據——包括瀏覽歷史、點擊歷史記錄下來,我們稱為日誌(Log)

從日誌數據中就能知道每個用戶點過什麼商品(對應標註為1的樣本),看了什麼商品卻沒有點(對應標註為-1的樣本),再關聯上用戶的特徵數據(年齡、性別)和商品的特徵數據(價格),就得到學習演算法所需要的訓練數據了。

1.3 機器學習問題的分類

需要指出的是,並不是所有的機器學習問題都需要標註。事實上,根據訓練數據是否有標註,機器學習問題大致劃分為監督學習(Supervised Learning)無監督學習(Unsupervised Learning)兩大類。

  • 監督學習:每個輸入樣本都有標註,這些標註就像老師的標準答案一樣」監督「著學習的過程。而監督學習又大致分成兩類:分類(Classification)回歸(Regression)
    • 分類問題:標註是離散值,比如用戶」點擊「和」不點擊「。如果標註只有兩個值,則稱為二分類,如果標註有多個值,則稱為多分類。
    • 回歸問題:標註是連續值,比如如果問題是預測北京市房屋的價格,價格作為標註就是一個連續值,屬於回歸問題。
  • 無監督學習:訓練樣本沒有標註,無監督學習解決的典型問題是聚類(clustering)問題。比如對一個網站的用戶進行聚類,看看這個網站用戶的大致構成,分析下每類用戶群的特點是什麼。

此外,機器學習還有其他的類別,比如半監督學習、增強學習,我們將慢慢涉及。

2. 模型 (Model)

還記得在第一篇我們說"機器學到的模型是一個映射",這是一個很好理解又非常準確的表述。

可是在後續的學習中,尤其是進入到具體的學習演算法的討論時,文字表達的效率不如符號表示來的高,所以現在我們就要引出模型的符號化表示和定義。這不僅能大大的提升後續討論學習演算法時的效率,也是準確理解機器學習繞不過去的一環。

其實也很簡單,映射包括輸入和輸出,在這裡輸入就是用戶的年齡、性別、商品價格,輸出就是用戶是否會點擊,好,我們開始吧。

2.1 映射的輸入

  • 輸入樣本用符號x表示,第i個樣本記作x_i
  • 每個樣本有三個特徵,於是樣本x_i又可以寫成一個向量x_i=(x_{i1}, x_{i2}, x_{i3})x_{i1} 在這裡指年齡、x_{i2}指性別、x_{i3}指商品價格),稱為「特徵向量」 (Feature Vector)
  • 所有的特徵向量的集合就是總的輸入集合,這個例子中本質上是個三維向量張成的三維空間,稱為「樣本空間」 (Sample Space)或「輸入空間」,記作cal{X}。任意的輸入x都是這個3維樣本空間cal{X}中的一個向量,用符號表示就是x in cal{X}(讀作x屬於cal{X})。

2.2 映射的輸出

  • 輸出的樣本標註用符號y表示,第i個樣本的標註記作y_i
  • 在這個例子中標註只有-1和1兩種取值,我們用一個一維向量y=(y_{i1})就可以表示。同樣的,這個一維向量張成的空間就是「標註空間」(Label Space)或「輸出空間」,記作cal{Y}。任意的輸出y都屬於cal{Y},用符號表示就是y in cal{Y}

2.3 映射的表示

於是機器學習模型就是輸入空間cal{X}到輸出空間cal{Y}的一個映射,將映射用符號g表示,則模型記作g:cal{X}
ightarrowcal{Y}

學得這個模型之後我們對於新的樣本要預測用戶是否會點擊,只需要將樣本x (x in cal{X})傳入映射函數g,得到的輸出y=g(x) (y in cal{Y})就是對用戶是否會點擊的預測。

3. 機器學習概念圖的細化

上面我們講了訓練數據,也講了模型,現在我們知道學習演算法的目標就是要學一個映射函數g 。一旦學到g之後對於任意的輸入x,都可以計算出預測結果y就等於g(x)

這小節我們將圖1所示的相對粗略的機器學習概念做進一步的細化,細化後如圖3所示。

如果說學完這一篇你只能帶走一點知識的話,那就帶走這張圖吧。一圖勝千言,希望你看到圖3就能回憶起整篇內容。

3.1 數據(Data)部分的細化

首先,我們假設有一個完美的映射f,它不僅對訓練數據中的所有樣本都能夠正確的預測用戶是否點擊,對於遇到的新的樣本也是一樣(用符號表示就是對於任意樣本(x_i,y_i),映射f都能夠使得y_i=f(x_i))。

如果我們能得到這樣一個完美的映射,問題就解決了,不過很可惜,這樣一個完美的模型只有上帝才知道,它代表了學習的最理想的目標,人們稱它為「上帝真相」(Ground Truth),有時也叫做目標函數(Target Function)

既然我們不知道,也無法知道Ground Truth f,我們怎麼能做到以它為目標進行學習呢?不要忘了我們還有訓練數據,既然訓練數據中所有樣本都滿足f,當訓練樣本足夠多時我們不妨認為海量的樣本就反映了Ground Truth f的樣子,我們稱這種情況為「訓練數據來自於f」。(如圖3下半的左側部分所示)

3.2 學習演算法和模型部分的細化

假設了Ground Truth f的存在,那麼學習演算法要做的就是找出某個映射,這個映射儘可能得接近f。在實際的訓練過程中,學習演算法會有一個假設集合(Hypothesis Set,記作cal{H}),這個集合包含所有候選的映射函數。學習演算法做的事情就是從中選出最好的g,使得g越接近f越好。(如圖3下半的中間部分和右側側部分所示)

綜上

綜上,我們把機器學習流程重新細化成下圖所示:

圖3:

  • 輸入數據cal{D}={(x_1,y_1),(x_2,y_2),cdots,(x_n,y_n)},來自於Ground Truth。
  • Learning Algorithm根據訓練數據,從Hypothesis Set中選出最優的那個映射g: cal{X} 	o cal{Y}作為最終學得的模型,使得g越接近f越好(g approx f)

到這裡,我們看著圖3就可以用一句話來定義機器學習

Machine Learning:Use training data to compute model g that approximates Ground Truth f.

預告和其它

下一篇將介紹一個具體的學習演算法和模型,它足夠基礎也足夠典型,甚至是人工神經網路大門入門的第一步。

另外,有同學在評論中問怎樣可以收到後續文章的更新,經測試,如果你希望在Timeline中收到更新,可以考慮關注我。如果你希望在通知中心中收到通知以確保不miss更新,可以考慮關注這個同名專欄。

再次感謝您的閱讀。希望我有把事情說清楚,有任何疑惑或者問題,歡迎留言。

祝開心 :)

推薦閱讀:

零基礎學習Python數據分析
數據挖掘新手該如何開始這一領域?
用戶畫像建模:方法與工具
機器學習和數據挖掘在網路安全領域會有哪些應用?
關於數據降維的諸多演算法,測試數據必須要和訓練數據一起運算么?

TAG:机器学习 | 大规模机器学习 | 数据挖掘 |