【Python】機器學習 — 實戰入門

NTU Data Analytics Club
8 min readMay 30, 2021

--

在大數據時代,機器學習(Machine Learning,簡稱 ML)這個詞彙非常火紅,簡單來說,機器學習是透過演算法將收集到的資料(即過往資料及經驗)進行分類學習並找到其運行的規則,建立出預測模型。

ML 應用範圍極為廣泛,可用於搜尋引擎結果推薦、各類辨識(圖像、影音、指紋、車牌等)、醫療診斷輔助、證券分析等。感謝 Tairung 學長再次答應本社講課邀請,讓我們一起來揭開 ML 的奧秘吧!

本篇文章 take away

  1. 了解機器學習的範疇,例如:Supervised learning
  2. 提升對資料的掌握性,例如類型及探索性分析方法
  3. 認識線性迴歸模型的基本概念與應用

目錄

講者介紹
機器學習的範疇
資料類型
探索性資料分析
線性迴歸模型
相關文章

講者介紹

Tairung Chen 學長畢業於臺大經研所,目前在 KKBOX Group 旗下 KKLab 擔任 Senior Data Scientist,負責建立各專案的機器學習模型,以及視覺化圖表。

機器學習的範疇

學長藉由網路曾瘋傳的梗圖「選擇圖片中含有夏于喬的圖片」來說明:

Supervised learning

Supervised learning 就像直接給機器正確解答,在一開始就提供被標註好的資料,讓它學習在輸出時如何判斷誤差。以梗圖舉例,則是預先餵給模型夏于喬和宋芸樺的照片,讓它學習判讀照片中的是哪個藝人。

若採取 Supervised learning,則須判讀資料的類型是迴歸(Regression)還是分類(Classification)。

簡單來說,當預測目標是連續的數值,並可以依據目標問出 “How many?”,則為迴歸;若預測目標為離散、不連續也不可加減計算,並可以依據目標問出 “What is?”,則稱為分類。

Unsupervised learning

Unsupervised learning 則是類似自學的概念,所有資料皆沒有標註,讓模型自己尋找資料特徵並進行分類。以梗圖舉例,就是直接給模型一些夏于喬和宋芸樺的照片,讓它自行辨認及判斷兩者差異。

Semi-supervised learning

Semi-supervised 則是上述兩種方式的混合,只為部分資料做標註,剩下的讓模型透過既有特徵自行判斷。以梗圖舉例,即為給幾張夏于喬的照片,讓模型找出其他張夏于喬。

Reinforcement learning

Reinforcement learning 可理解為先自學、後考試,也就是同樣不給模型任何有標註的資料讓它自行判斷,但模型可以得到辨別結果反饋,若是錯誤它會自行逐步修正,此模式常應用於電動車。

資料類型

在進行機器學習前,必須把資料清理乾淨,做出來的結果才會更準確,所以接下來我們要介紹資料類型,能妥善辨別資料類型才能準確做出分析結果唷!

Numeric

簡單來說就是數字這種可被量化的東西,能在數學上被加減乘除運算的都算,舉例而言:薪水、經濟成長率、溫度等。

Categorical

Categorical 又稱名義(nominal)屬性,資料中不同的觀察值代表著不同的分類,也就是質化的概念。舉例而言:True/ Fulse、非常同意/ 同意/ 普通/ 不同意/ 非常不同意等。

探索性資料分析 Exploratory Data Analysis

在資料清理過後,可能我們對於資料會沒什麼頭緒,這時就可以進行探索性資料分析(EDA),先觀察各欄位資料間的關係。最常見的的 EDA 方式有:表格 Tables、敘述統計 Descriptive Statistics、資料視覺化Data Visualization。

學長分享了幾個有趣的 EDA 範例,以下提供給大家做參考!

  1. 擊球落地位置視覺化

2. 鐵達尼號罹難者長條圖 EDA

[資料補充]Tairung 學長提供大家幾個能強化 EDA 能力的方式,這邊提供連結給大家參考:

Visualization with Pandas

Python Graph Gallery

Visualizing Data

Kaggle

The Economist Data Team

線性迴歸模型 Linear Regression

線性迴歸分析模型是分析變數間關係的工具,主要在研究自變數(x)與應變數(y)之間的線性關係。我們可以透過迴歸模型,推論和預測想知道的應變數(y)結果。

以上圖為例,可以明顯看出年資越高薪水越高的趨勢,這種線性相關的資料就很適合使用線性迴歸模型作分析。

接下來,跟大家分享課堂中學長帶我們實際操作的第一個模型 — — 線性迴歸分析模型,我們要用一個澳洲的資料集來探討離市中心遠近是否影響房價,因此自變數(x)是房子與市中心的距離,應變數(y)是房價。

首先,要先將資料集分成訓練集跟測試集,這樣在模型完成後才能確認模型表現。

載入 Scikit-learn 中的模型,並設定 fit_intercept 超參數來擬合截距。

在訓練模型前先看一下資料分布的情況。

接下來餵資料給模型做訓練,自變數(x)是房子與市中心的距離,應變數(y)是房價。

模型預測的房價為基準價(b_0)加上模型依據資料所計算出的預測係數(b_1)乘上距離。接下來輸出散布圖,觀察預測結果(紅色線)。

模型輸出的結果:

b_0 = 1259059.7488
b_1 = -17772.8388

從上圖可知這個模型並不完美,非常多筆資料沒有落在擬合線上。

由這個例子我們可以知道,在這個資料集中房價與其與市中心的關係並不大,我們必須在加入更多特徵,如:房間數、落成年份及土地大小,來幫助模型更有效的預測。

感謝 Tairung 學長用心準備的社課內容,帶領我們進入機器學習的世界,我們會持續努力學習!另外,機器學習的課程分享共有三篇,有興趣的朋友參見下方的相關文章列表。

歡迎各位讀者拍手交流,NTUDAC 也會持續在 MediumFacebookLinkedIn 更新每週社課的資訊,歡迎對資料有興趣的大家持續關注,跟我們交流想法~

相關文章

另外兩篇 Tairung 學長的機器學習課程分享:

謝謝 Tairung 學長第二次答應我們的講課邀約,對於上次學長的職涯分享有興趣的朋友詳見此篇文章!

其他 Python 系列文章

--

--

NTU Data Analytics Club

臺大資料分析與決策社 (NTUDAC) 為一群對資料科學抱有熱忱的臺大學生創立, 旨在教授學員如何利用數據分析解決商業問題的商業性社團,在 Medium 將分享社團課程與實作專案內容,以期推廣資料分析的相關資訊。