2017年6月27日

理性的資料 感性的內涵

作者/林建宏,中興大學統計學碩士,現為「奇點無限」資料科學家,喜歡從資料解讀不為人知的訊息。

什麼是資料科學?
大數據分析、人工智慧、深度學習、推薦系統、資料視覺化……等,都是屬於資料科學的範疇,目的是為了從資料中挖掘出不為人知且貼近真實的資訊,並找出其應用價值,不僅僅是為了商業價值,也能對社會的進步有所貢獻。進行資料科學的研究需要統計、應用數學、電腦科學、資料視覺化等各領域的專業結合,由「提出問題」出發,進行資料收集、資料量化、處理資料、選擇模型等流程或是方法來幫助我們理解問題及驗證假設,最後提出觀察結果或解決方案。簡而言之,資料科學是一門多個領域結合並以科學的方法來研究資料並能給予有用價值的學問。

勇敢地跳下懸崖!
對於有熱情的事情,就像跳下懸崖一樣,一旦跳下,無法回頭!
我從事資料科學的工作剛滿一年,起初,我是一個只會統計學但不大會寫程式的菜鳥,僅懷抱著念研究所時對資料分析產生的一股熱情而一頭栽進了這個世界。由於工作的任務並非只有傳統的資料分析而已,需要能夠將整個處理資料到產出結果的過程「自動化」,為了殺出生路,我必須在短時間內掌握基本的程式語言、了解資料庫的取用、API 的串接、資料清理與探索、以適合的演算法執行運算,最後給出對假設問題的解答。這段過程讓我深刻體會到前輩們所說的:「做資料科學這件事,必須掌握幾件事情:統計、機器學習、程式能力以及領域關鍵知識。」但我想再加上一點:必須對這一切持續保有熱情!

資料科學是怎麼一回事?
我們讀到許多文章談論著資料科學及展現其應用層面,那麼該如何做呢?首先要先定義「分析目標」,因為資料科學是廣義的概念,故明確的分析方向是很重要的一件事情。例如,若目的是「決策」,則經由一般的敘述統計,或是探索資料的手法,挖掘出資料本身給予的訊息,讓我們可參考作為決策工具,這是目前一般資料分析師最常做的工作,但這個方式通常只是概略性的評估,不一定會經過嚴謹的驗證;若是「預測」或「分類」等目的,基於應用考量,必須能準確地取得結果,就會考慮建立統計或是機器學習的模型。

常見資料科學流程循環:「假設問題」→「收集資料」→「清理資料」→「探索資料」→「特徵工程」→「選擇、評估模型」→「應用及視覺化」。

1. 假設問題:
提出想解決的痛點、若已有基礎資料可以先透過探索資料來發想想要解決什麼問題。

2. 收集資料:
直接取得資料或是透過爬蟲(網路機器人,對存取的網路頁面進行資料爬梳)獲得資料,以及資料儲存的過程。

3. 清理資料:
判斷及處理資料的雜訊、選擇處理遺漏值的方式、合併不同來源的資料。

4. 探索資料:
利用探索性分析(Exploratory Data Analysis),短時間內對資料取得最大的了解,也可能從中發現沒思考過的問題,而領域知識會深刻的影響探索方向。

5. 特徵工程:
透過探索資料,評估要選擇什麼特徵,或是創建新的特徵,而這些被選擇的特徵可以很好的描述我們的原始資料。

6. 選擇、評估模型:
針對問題選擇適當的模型來做訓練及測試、選擇適合的衡量(measure)方式來評估最適合的模型。

7. 應用及視覺化:
取得結果後,以恰當的方式呈現,讓平常不談論資料的人可以共同理解結果。

上述是一個簡單的流程表示,而實際上要解決一個問題,在這流程中,其實很多步驟間會有互相交集的議題,且每一個階段都可能會碰到無法處理的問題,常常需要回到前面的步驟,重新地檢視每個階段的定義有無問題,或是觀察是否仍有未發現的面向,因此這會是不停循環的過程,直到找出一個最接近目標的結果。

了解資料,統計學是好幫手!
我們既然想透過研究資料來解決問題,其目的之一就是想超越經驗的框架。
大部份的人應該會有一種經驗,對於很多事情,習慣依賴自身經驗來判斷,但這樣很容易被自身的經驗所「侷限」。在看資料的時候也一樣,由於我們也無法在短時間內一窺資料的全貌,所以就很容易「看一個影子、生一個孩子」,因此在面對資料時,不能被經驗的框架所限,而學習統計學的知識,可以幫助我們突破這個侷限性。統計學討論隨機變數、機率分配、大數法則、各種統計推論及假設檢定,而學習的過程中,我們可以了解如何判斷資料的分佈、如何衡量資料與資料間的距離關係、各種逼近與收斂的方法等,但最重要的訓練是,我們可以透過學習統計學,了解如何對資料提出假設問題,並且驗證假設,最後得到正確的資訊。換個角度說,統計學可以帶領我們,在這個充滿隨機的資料世界裡面,更深刻的感受「資料存在變異」這件事,並能以統計手法從中區分出哪些是資料想給我們的「真實訊號」或者是「隨機誤差」,讓擁有各領域知識的人,可以透過這樣的技術,將資料轉變成真正有用的知識。

特徵工程的重要性
我們透過掌握資料的領域知識來創建特徵,而這些特徵能使機器學習演算法達到好的結果的這個過程,稱為「特徵工程」。

一般來說,在學習統計或機器學習演算法的過程中,為了明確表達演算法的核心思想,使用的資料幾乎都是已經處理好的資料,畢竟主要是為了從理論來理解演算法如何運行,很少有特別的章節會去著墨在使用演算法前必須先進行特徵工程,或是介紹特徵工程的內涵這件事情上。坊間很多的文章,標榜使用機器學習的各種演算法而成功,其實內涵有著很多我們看不見的特徵工程,絕對不是單純的把資料丟進演算法裡面,就可以獲得很了不起的成果。

另外值得一提的是,最近「深度學習」一詞越來越紅,因為它與傳統機器學習不同,希望透過多層的線性與非線性轉換,能有「自動提取代表資料特性的特徵」的功能,或者我們可以稱為「特徵學習」,但目前它仍然在發展階段,不見得能適用在所有的資料科學目標上,因此一方面我們相信,深度學習會有越來越深入的發展,可能終有一天真的能達到在所有的資料科學領域均能完全依靠深層學習自動提取出重要特徵(亦或是出現新名詞)的階段。但是,在此之前,學習正確的資料探索分析方法與特徵工程手法仍是重要的基本功。我想像的是,如果在將資料丟入深層學習之前我們先利用資料探索與特徵工程萃取出重要特徵,然後再進入深層學習演算法,是不是就能「減輕」深層學習演算法的負擔了呢?......【更多內容請閱讀科學月刊第571期】

沒有留言: