close

00000000000000000000000000000000.jpg

白話機器學習(Grokking Machine Learning ,Luis G. Serrano)

        "白話機器學習"是本新書,附近僅存的書店都沒有,只好直接殺去天瓏,不確定內容方向,必須實際看過後才能決定要不要買來看.

        y=a+bx,是一個簡單線性方程,如果式子是出現在初級統計學的書上,學過的人會說這叫"簡單線性迴歸"(Liner Regression),透過若干n組的(x,y,)數據來估算出一條線,作為預測之用.但在一般商學院或社科學院理學過統計學的人大概不知道,它固然是迴歸,其實也是變異數分析(ANOVA).

        其實只要改變一個假設狀態,迴歸方程式就可以用來計算變異數分析,就是限定x只是能離散的數據,如0,1,2這些,y=a+bx它就成了變異數分析.比如x代表班上學生的性別,是男的則x=1,是女的x=0,而y則是數學成績,在這種情況下,x成了一種組別樣本標籤(label),也就是男生組,女生組的代表,因此迴歸與變異數分析變成了根本就是同一件事.甚至還可以更進一步將此式子擴大,如果此處的b,x由單一變數改成陣列b=[b1,b2,b3],x=[x1,x2,x3],那,y=a+bx,其實就是y=a+b1x1+b2x2+b3x3),那y=a+bx就成了複迴歸或多元迴歸,而更一步假設x1,x2,x3都成了離散數據,也就是它們都成了分組樣本標籤,比如x1是性別,x2是血型(A=0 ,B=1, AB=2, O=3),x3是補習與否(是=1,否=0),那麼它又成了數學成績y的二因子或三因子變異數分析.改變了數據輸入的特性,迴歸與變異數分析就可以是同一件事,此時用數據分析軟體跑迴歸,就是在跑變異數分析.

        我們再進一步擴張,如果y由連續數據變成了離散數據會如何?其實y=a+bx它就成了分類(classification)或歸類,最基本的如Linear discriminant analysis(區別分析),但如果y是由0到1之間的數據,它y=a+bx就成了邏輯迴歸(logistic regression),但以上二者的y如此設定目的是為了要找出資料中的區別界線,都屬於機器學習中的分類範圍.我們還能更進一步的如果假設y=a+bx變成y=a+bx呢?此時y,a,b,x成了陣列或矩陣,此時y由一個變成m個,y1=a1+b1x1,y2=a2+b2x2...ym=am+bmxm,若要再擴張, m個y可再搭上x由1個變成n個 y1-a1+b11x11+b12x12  y2=a2+b21x21+b22x22....,y1=a11x11+a12x12+...a1nx1n....ym=am1xm1+...amnxmn,亦即當y由一條方程變成m條,x由單一變成n個時y=a+bx.就可以稱為是多變量迴歸(multivariate regression),同理它也可以由ANOVA(變異數分析)變成了MANOVA(multivariate ANOVA),這些多變量的內容幾乎都是陣列與矩陣的表達式,要在其間運算只能靠電腦與程式,當然現在都有套裝軟體,但人還是理解它產生的本質來源比較好.

         以上的種種衍生往往是需要把整套這些內容都學過後才可能想到其彼此間的相關擴張關係,不太可能一開始就告讀初學者這些領域間的相關衍生性.,"白話機器學習"在寫甚麼呢?固然如書名所寫是有關機器學習的白話解釋,但主要在解釋如何產生"分類""區別"這條線的方式,迴歸原則上是產生一條線,然後做為一堆數據中共有主要因素趨勢的依歸,未來就能根據這條線來預測某種狀態(標籤)可能會出現的結果數據大致會遵循著這條線上的位置去分布.分類也是找一條線或幾條線,但這條線卻是用來將一堆複雜資料依據某(幾)個特性(標籤)分別成清楚若干組或群的界線,要知道,我們在學校學簡單線性迴歸是用一個最小平方法的方式推導計算出來的,但是其他的迴歸型態產生的線,或是用來最為分類的區隔線其實是沒有一套簡單的公式能推導的,這本書就是在解釋如何先經由一條武斷或是粗略規則下所產生的這條線,用來"迴歸"或是用來"分類"的線,透過一系列的相同的科學性想法與規範逐步微小的移動來形成一條最能代表該組資料的"迴歸"或"分類"的線,整本書最有價值的就是在介紹這個逐步推導過程的核心觀點與意義,同時探討在過程中可能發生的問題與解決之法.並且釐清各種不同的區別規則間的差異與合併作用比如決策樹,SVM.,感知分類器,邏輯分類器等等的差異及由這些方式構建出集成學習法.那些探討的白話解釋內容有助於對於機器學習看來一知半解,或是拿起數據蒙頭便去跑Python的而不知其間差異的人,應該能讓讀者了解這些方式在實作上是如何達到目標的,且如何逐步地去修改調整所需的數據參數調教中各種問題.

        統計與機器學習有時就是同一件事的兩個不同名詞的差別而已
比如上面的數學成績y與x1,x2,x3三個分組標籤為例為例,若我們想衡量其中血型造成的差異
可以將x2由0,1,2,3的單一變數4種類別換成使用dummy variable的方式
做法是將x2 分割成4個單項 xa xb xab xo四種 讓y=a+b1x1+b2x2+b3x3 替換成
y=a+b1x1+b2axa+b2bxb+b2abxab+b2oxo+b3x3
其中的xa xb xab xo 是個只有0與1兩種結果的變數,且它們彼此之間還互斥 即
若一個人血型是A型 y=a+b1x1+b2axa+b3x3 因此他的xb xab xo 皆等於0 若是b型 則 xa xab xo為0
這在統計裡就是在迴歸中添加虛擬變數(dummy variable)
而以上的作法到了機器學習 被改稱為 one-hot編碼,透過將數值資料或多類型的資料分割可以加快運算處理 同時強化了某些標籤的作用角色

 .

        但這本書也有很明顯的缺點,就是只寫了三分之二的詳實內容,到了"類神經網路"就開始匆匆帶過,雖然它屬於深度學習,但在本書的描寫方式上也太簡略,思考轉為跳躍,有點扣分,不能維持整本一貫的詳盡寫實的逐步連結是一個很大的缺憾,它雖然是"白話"也逐步地解釋了各種思考內容,但個人以為這本書還是對在機器學習領域有起碼粗淺了解的人來看比較有幫助,不過它的寫法是我個人比較喜歡的那一種,對照其他的書籍一上來就給你案例與資料要跑,缺乏產生或使用某"方法"的核心思維,這本比較著重在概念與想法的釐清上,這是個人以為重要的部分,對於更深問題或沒有遇見過的問題提供一個簡單的知識儲備,而不是單純背一堆公式與方法目的,"Grokking"這個字不錯,它真的是帶讀者摸索著逐步產生一條線,以上.

arrow
arrow
    全站熱搜

    speculatortw 發表在 痞客邦 留言(0) 人氣()