資料處理部分最重要的有三個部分,「標記資料」、「資料清理」以及「特徵值篩選」。
標記資料的工作關注在訓練出模型之後想要預測的結果(也稱為Y或是被解釋變數),訓練資料集當中必須要有這個結果,也就是正確答案(ground truth),由於這些結果並不必然在原本的訓練資料集當中就存在,可能必須要事先標記好,才能夠讓模型在訓練的過程中學習。當然,標註資料並不是一個必然的工作,有兩種情況事不必另外標注資料的,第一狀況是你本身的訓練資料集已經事先或自動標註好,第二種狀況是,你所做的訓練並是非監督式的學習(unsupervised learning)。
而所謂非監督式的學習,如上所述,不需要有事先標註好的正確解答,當然希望達成的結果也不在預測,而是給出一個可能相對較好的解決方案。舉例來說,機器學習中的分群演算法即是如此,假設你手上有一堆新聞文字,你希望可以把它自動分進去「社會類」、「國際類」、「體育類」......但是你手上並沒有分類好的資料去訓練分類器,那麼你可能就可以用分群演算法去把項近的文章分在同一個群組當中。
雖然整個機器學習領域當中最迷人的部分是演算法,不過根據某一份調查矽谷資料科學家的研究表明,絕大多數的資料科學家最討厭的作業其實就是資料清理,但是命運弄人,他們花最多時間的部分也就在這個部分。雖然這部分很無聊,也沒什麼技術,不過很多時候卻扮演著極為重要的角色,俗話說garbage in, garbage out!所以這個部分可能也會花一點時間說明。
所謂的特徵值,也稱屬性,在表格上面通常是column的header,在統計學上叫做解釋變數。舉例來說,我們有一張資料表如下:
Name | IsStudent | Old | Income | BuyComputer |
---|---|---|---|---|
Jake | True | 20 | 0 | True |
Jane | False | 45 | 25000 | False |
... | ... | ... | ... | ... |
Mark | False | 65 | 80000 | True |
假設我們透過這張資料表進行訓練,希望訓練好的模型,可以在得到某位會員資料後,就可以預測出他會不會買電腦。而這裡所謂的特徵值也就是「名稱」、「是學生」、「年紀」、「收入」這些欄位,而「會不會買電腦」也就是上面我們所說需要被標註的資料,不過因為這已經被記錄在電腦中,也就無須再另外標註。
至於特徵值的篩選,則是機器學習領域當中極度重要、也極具藝術性的環節,這個部分就留待相關章節說明啦。
訓練資料目前比較常被討論的方法有三個: 機器學習、深度學習、迴歸分析。迴歸分析一般用來處理練續變數的參數估計與結果預測,所謂連續型變數指的是可以加減且具有倍數關係的變數,像是價格、身高或是重量,通常社會課學領域中比較喜歡使用,因為他們大多時候比較關注某一解釋變數對於被解釋變數的影響,而相對不在意預測的結果,好玩的是,依但你希望預測的準,很多時候解釋變數之間的關係已經複雜到很難被用文字的方式表達出來了;
而所謂機器學習,則是汲取數學、統計以及資訊三大領域的智慧所打造出的技術,這門技術最性感的地方莫過於一樣樣值得讚嘆感恩的演算法;至於最近最火紅的深度學習,則是透過極度複雜的函式,做出最多種可能的預測,並透過逐步挑整函式中每個變數的權重,逼近最準預測的可能,當然深度學習的運用已經遠遠超出純粹的預測,很多創造性的工作,寫文章、產生圖片、玩遊戲等等,不過這就不再這個文章集討論的範疇了。
Method | variable type of y | field |
---|---|---|
Regression | continuous or categorical | social science |
Deep Learning | continuous or categorical | cs, statistics, math |
Machine Learning | categorical(generally) | cs, statistics, math |
總體來說,我想這會是這整個資料集中最精華的部分。
Day1 資料分析師的學習之路
Day2 資料分析師的學習之路(續)
Day3 網路爬蟲Day1-概述
Day4 網路爬蟲Day2-html檔的取得及常見問題
Day5 網路爬蟲Day3-html檔的取得及常見問題(續)
Day6 網路爬蟲Day4-html檔的解析
Day7 網路爬蟲Day5-爬蟲進階:非同步爬蟲程式的撰寫
Day8 網路爬蟲Day6-爬蟲進階:非同步爬蟲配上多執行續
Day9 Python與MongoDB的互動
Day10 Pandas(Python中的Excel)Day1-資料類型與讀寫檔案
Day11 周末特別節目-iThome鐵人文章分析
Day12 Pandas(Python中的Excel)Day2-DataFrame的資料描述與屬性
Day13 Pandas(Python中的Excel)Day3-DataFrame的索引與更新
Day14 Pandas(Python中的Excel)Day4-DataFrame的新增、迴圈與刪除
Day15 英文自然語言處理基礎
Day16 中文自然語言處理基礎
Day17 文件檢索概述-理論
Day18 周末特別節目-iThome鐵人文章分析(續)
Day19 文件檢索概述-實作出LineBot檢索引擎
Day20 文件檢索的評價
Day21 資料前處理
Day22 資料前處理(續)
Day23 機器學習系列概述
Day24 分群演算法理論
Day25 分群演算法實作-區辨不同演算法的意義
Day26 產品標籤分群實作-Word2Vec
Day27 分類演算法理論-傳統演算法
Day28 分類演算法理論-SVM及XGB+CV
Day29 分類演算法實作-LineBot專案
Day30 2017資料分析師的練成之路