【Python】 機器學習入門與 Python 機器學習實作

NTU Data Analytics Club
NTU Data Analytics Club
14 min readJul 14, 2022

前幾堂 Python 社課社員學會運用 Python 做資料視覺化與處理數據,接下來邁入更進階的資料分析學習:使用 Python 進行機器學習。NTUDAC 除了邀請現為 KKLab Senior Data Scientist、畢業於臺大經研所的 Tairung Chen 帶來三堂精采的 Python 機器學習社課;也邀請到 NTUDAC 共同創辦人、第三屆社長 Chenghong Chou 在機器學習系列社課開始前,為社員簡介機器學習的基礎概念,以幫助社員順利銜接機器學習實戰的操作。

若你已經能掌握機器學習的基礎概念,歡迎直接觀看 Tairung Chen 學長紮實豐富的三堂 Python 機器學習實戰社課系列文章,以掌握機器學習的實戰技巧!

本篇會更聚焦於機器學習的入門基本概念,適合沒有基礎、不知道機器學習是什麼的人,跟著我們一起從零開始了解機器學習!

Key Takeaways

  • 了解機器學習是什麼、帶來的好處、常用領域
  • 了解機器學習的使用時機、使用方式(分類、迴歸、分群任務)、監督/非監督式學習
  • 機器學習相關文章、書籍、課程資源推薦

一、機器學習是什麼?

機器學習(Machine Learning)是訓練電腦從資料中學習,並根據該分析做出最佳決策和預測。一般來說,所運用的有效資料越多,機器學習模型的準確度越高。

機器學習可以帶來什麼好處?

機器學習有很多好處,也能應用在企業不同職能與面向,以下列舉最直觀常見的兩大好處:

  1. 應用廣泛:在電腦運算能力能接受的資料量下,都可以產出有效的預測或分析結果。以商業應用場景而言,不論是 To B 或 To C 的產業都有機器學習應用於輔助商業決策的案例。
  2. 快速產出預測結果:機器學習可以快速產出全面而精準的預測結果,除了加快決策速度,以管理角度而言,因為短時間內能產生結果而有助於管理客戶/老闆的期待,避免對方等待過久產生過高期待的情況。

機器學習是什麼?

人們相信自然的規律無所不在,因此希望能透過歷史資料找出潛藏的規律性。聽起來很玄妙,但其實可以使用國中數學中的「函數」概念 y=f(x) 來理解。機器學習就是利用過往資料,找出其中函數的一種手段。

舉例而言,假設有某個函數,輸入一個數字可以得到相對應的值。試想以下情況:

「我們輸入 1 ,得到 1;輸入 2,得到 4 ;輸入 3, 得到 9。那麼當輸入 4 時,根據規律,我們猜測會得到 16 。」

以上情況以函數 f (x) = y 表達便是:f(1)=1, f(2)=4, f(3)=9, f(4)=?,機器學習可以想像成我們希望能輸入 X,去找到對應的 Y。而這個例子中,機器學到的函數就是:y=f(x)=x2

但有時候函數運算起來更為複雜,例如:f(1) =1 , f(2)=3, f(3)=5, f(4)=7, f(5)=? 若直接觀察規律,我們會合理地推測是 9。但也有可能因為這個函數十分複雜,而得到217341 等超乎預期的結果,有時我們又必須考慮多變數 x 1, x 2, ……x 100 等。這時便是機器學習派上用場的時刻!

機器學習常用領域

機器學習既然可以使用函數來理解,以下舉出幾個常見的機器學習應用場景,並試著使用函數來解釋:

a. 語音辨識:例如 f (一段聲音) = 我很喜歡冰淇淋

b. 影像辨識:例如 f (貓的圖片) = 這是一隻可愛的貓

c. 顧客購買行為預測:f (某電商的購物車頁面) = 某位顧客有多高的機率購買

d. 推薦系統:f (用戶歷史行為資料、商品特徵) = 推薦《咒術迴戰》影片給某位用戶。

二、機器學習怎麼用?

機器學習的使用時機

做資料分析的目的是希望能從過往的資料找出規則幫助決策,但有些時候這些規則不太容易找到,因此需要機器學習來幫助我們找出規則,以下列出常見的複雜情況:

  1. 語音辨識:語音有很多不同形式的資料,包含音調、咬字、語氣、文字含意等,十分複雜。
  2. 圖像辨識:一隻貓的圖像有很多特徵,例如:尖耳、有鬍鬚、有爪子,特徵太多很難列完。
  3. 顧客購買行為預測:資料量十分龐大,可以包含的變數有:最常購買類別、歷史購買金額、活躍度等等。

由以上的例子,大致可歸類出兩種可以使用機器學習來協助資料分析的時機:

  1. 函式過於複雜:當我們不容易看出規則、函式較難運算時。例如:資料與預測存在二次以上的關係較難直接運算。
  2. 特徵值太多:當我們需要納入的規則實在太多,例如:資料與預測存在多維度關係,比如有 x 1, x 2, ……x 100 特徵太多列不完的狀況發生時。

這些概念很好理解,但要怎麼快速判斷適不適合使用機器學習呢?可以參考這 3 個原則去做初步判斷,評估機器學習是否能夠幫助分析手上的擁有的資料/題目。

  • 原則一:我們相信資料存在某種潛在規律,只是我們還不知道而已

反例:資料不存在規律的例子像是隨機開獎的大樂透,它不存在規律因此較難使用機器學習預測是否會中大樂透。

  • 原則二:目前沒有簡單的定義或是公式解

反例:一元二次方程式 Y=f(x) = X2已經有公式可以求出答案,就不用花力氣使用機器學習在已經被解決的問題上。

  • 原則三:對於潛在規律,我們已經或能夠蒐集一些資料

反例:若公司老闆想要建立預測模型,但公司沒有資料,機器學習也無法派上用場。

實戰演練:

可以練習看看使用這三個原則判斷以下題目與資料使用機器學習分析是否能夠協助解決問題?

情境一:有貓咪的圖片,也有狗狗的圖片,想判斷其他圖片裡有沒有貓咪。

A:使用機器學習或許有幫助圖片辨識,因為圖片資料符合複雜的資料,且圖片形式不存在簡單規律。

情境二:想找到兩個城市之間的最短路徑

A:不需要使用機器學習,因為有現成的演算法可以使用。

情境三:想知道下個月的熱賣商品是什麼,資料只有下個月的商品清單與庫存量。

A:沒辦法使用機器學習,因為沒有過往資料。

機器學習的使用方式

若初步判斷某個題目可以用機器學習,有哪些常見任務是可以使用機器學習分析結果回答的呢?

  • 分類任務 (Classification):這類型任務的答案通常是類別
  1. 二元分類 (Binary Classification):設定問題只有兩個答案,非 A 即 B。問題舉例:「這是一張貓還是狗的圖片?」、「這位顧客會不會點最上面的連結?」。而對應的答案形式會是「是貓/是狗」、「會點這個連結/不會點這個連結?」。
  2. 多元分類 (Multi-class Classification):答案超過兩個。問題舉例:「這句話是誰講的?」、「這是哪種動物的圖片?」。而對應的答案形式會是「派大星/珊迪/海綿寶寶」、「狗/貓/馬/天竺鼠/老鼠」。值得注意的是,若給二元或多元分類器分類一隻熊的圖片,它可能依然會跑出「狗」,意即結果會比較像狗,但實際上的圖片其實不屬於分類器可以辨識的類別中任何一類。
  3. 異常偵測(Anomaly Detection):針對不確定的領域,答案可能包含「不知道」。
  • 迴歸任務 (Regression):答案是數字

I. 線性迴歸(Linear Regression):答案通常是數字

線性迴歸可以用來預測一個連續的值,找出接近真實資料的一條直線y = f(x) = ax+b。例如:「利用昨天的銷售量去預測明天的銷售量」、「明天天氣幾度?」、「這則廣告會帶來多少訂單?」、「下週有多少新客戶」。

II. 非線性回歸:對數機率迴歸 (Logistic Regression):答案通常是機率

對數機率迴歸常被用來做分類任務,目的是要找出一條直線能夠將兩個類別分開。例如問題「這是一張貓還是狗的圖片?」當輸入貓狗圖片會得到一個介於0與1之間的數,可能的答案會是「有 0.87 的機率是貓」。

  • 分群任務 (Clustering):沒答案

概念類似「物以類聚」。舉例而言,班上的同學分群,有讀書群、打球群、線上遊戲群,但這並沒有固定答案。同理在分類任務時,我們並不知道有什麼特徵要定義刪減或增加。

【同場加映小補充:迴歸和分類問題的互相轉換】

有時候迴歸和分類任務界線並不是那麼分明,兩者之間可以互相轉換,取決如何定義問題,選用哪類型的任務對於解決問題較有幫助。

  1. 分類換成迴歸
  • 例子1:讀者對哪則新聞最感興趣(分類)→對讀者來說,每則新聞的有趣程度為何?(迴歸)。假設某新聞平台有一百萬條新聞,一一計算點擊率發現大多< 1%,最高者也只有 2%,使用分類任務做機器學習並沒有特別意義,但若使用迴歸任務,較有可能發現有趣的洞察。
  • 例子2:哪些客戶明年會流失(分類)→每個客戶的流失機率為何?(迴歸)。假設某軟體公司有一萬名客戶,使用迴歸任務預測客戶會流失的機率,再定義出臨界值採取對應策略(例如:流失機率 40%-60% 使用留存策略)。

2. 迴歸轉換成分類

  • 例子 1:同學學期成績為何→同學是否通過課程(大於 60 分視為及格
  • 例子 2:用戶點擊廣告的機率為何→用戶是否點擊廣告(大於 0.5 視為點擊)

三、機器學習的學習方式

1. 監督式學習

告訴電腦正確答案是什麼,電腦就可以透過資料學習,並在往後匯入資料時判斷答案。

例如:分類模型 (Classification)、迴歸模型 (Regression) 。

通常監督式的題目相對容易處理,因為有答案和對錯能夠優化模型。缺點是需要資料標註(例如:以圖像辨識而言,就是將圖片裡面的物體標上名稱的過程),這本身會耗費不少時間與成本。

【同場加映小補充:監督式學習如何迭代和評估模型】

由於我們希望模型能夠幫助解決問題,因此要不斷評估並優化它。監督式機器學習的模型評估方式,可以利用大學準備期中考的過程來理解。同學平常下課後回家自己念書複習所學(訓練集),在期中考前會練習題、考古題(驗證集),最後參加期中考(測試集)。平常念書可以累積實力(模型訓練);練習考古題可以發現自己不懂的地方,進而修正(調整超參數)在期中考獲得高分。

在評估模型時,為了避免作弊(正常狀況下,教授的期中考卷不會外流,同學也無法看到),會將資料切分成訓練集、驗證集、測試集三個部分。以下我們使用大學準備期中考的方式來講解類比如何評估模型:

訓練集 (Training Data):

  • 平常聽教授在課堂講課,回家自己念書複習。
  • 使用時機:模型訓練

驗證集 (Validation Data):

  • 在期中考前練習的習題、考古題、模擬考。
  • 使用時機:評估、調整超參數。通常會以驗證集來挑選超參數,並選擇最好的一次。調整超參數就像是做完考古題後,發現自己讀得太少(有沒有學到東西)、沒有讀到重點(學得好不好),就可以根據結果調整。

測試集 (Testing Data):

  • 期中考、期末考。這像是教授的考卷,通常考試前無法看到。
  • 使用時機:評估模型真正的預測能力。

2. 非監督式學習

不告訴電腦正確的答案,讓電腦自行判斷資料特徵值,並自行找尋規則,例如:分群模型 (Clustering)。

非監督式的題目較為困難,因為沒有標準答案,需要自行解釋,且可能需要非常了解題目的相關知識背景 (Domain knowledge)。

補充知識:分群模型在商業決策上的幫助

分群的目的是可以幫助決策者簡化思考,試想兩萬名顧客若分成五群有相似行為的消費者(例如:沉睡用戶、忠實用戶),便能更快速地針對每群顧客制定相應策略。再舉產品為例,若我們發現有幾十樣商品有類似的風格,我們或許可以把這些相似風格的產品分類在同一個產品促銷頁面。

四、機器學習 JASP 實作

剛開始了解機器學習的概念後,我們使用 JASP 免費統計軟體來簡單實作機器學習,不需要寫程式也可以完成簡單的機器學習。本篇將完成 K-Nearest Neighbors Classification (KNN) 與K-means Clustering 兩個模型。

使用資料集

免費下載完 JASP 統計軟體後,至操作介面首頁選擇:Open→Data Library →10.Machine Learning→打開兩個資料集 Iris Flowers (鳶尾花資料集)以及 Telco Customer Churn (電信業資料集)

K-Nearest Neighbors Classification (監督式學習)

KNN 的意思是最近的鄰居,模型可以使用「近朱者赤、近墨者黑」的概念來解釋。

a. 決定 K 值還有距離度量

b. 針對想要預測的資料,找到訓練集中和它最接近的 K 個樣本

c. 以多數決的方式進行投票來決定類別

關於 K值選擇:通常是 K 越大,模型越穩健;然而 K 不能太小,K=1 意即只挑最近的鄰居,根本沒有投票,而且模型太複雜會有 Over-fitting 的問題;但 K 也不能太大,K=N 相當於直接預測眾數,失去模型意義。此外,K 盡量不要使用偶數,因為容易出現平票的情況(實務上,K=3, 5, 7 都很常用)。

K-means Clustering (非監督式學習)

可以用「物以類聚」概念解釋。適合使用於沒有答案、不確定要怎麼分類的情況。通常 KNN 要有答案才能做,而 K-means 大多是缺乏資訊的情況下做的。

a. 步驟 1: 決定把資料分成 K=2 群

b. 隨機選取 K=2 個點,稱為分群中心

c. 計算與這 2 個中心的距離,歸類到比較近的那群

d. 重複步驟 2–3

e. 圖片上的點會隨著時間改變,大約過了 10–20 輪,演算法停下來後,會較穩定。

提醒:由於資料是隨機選擇的,所以每次結果不一樣是很合理的。分完群之後是最困難的部分,需要先特別觀察這 N 群在哪些地方有什麼不一樣,才能解釋結果。

五、機器學習資源

-Python 機器學習實戰系列課程 — by Tairung Chen

看完本篇機器學習的入門介紹後,開始使用 NTUDAC 社課精華觀看 Tairung Chen 學長帶來的 Python 實戰機器學習系列課程吧!

-推薦書籍

-臺大機器學習相關課程推薦

  • 資工所林軒田副教授開設的《機器學習》:重視理論、熟悉經典模型推導
  • 電機所李宏毅教授開設的《機器學習》:重視實作、了解最新模型發展
  • 資工所陳縕儂副教授開設的《深度學習之應用》:理論實作並重、聚焦自然語言處理。
  • 財金所石百達教授開設的《金融科技 文字探勘與機器學習》:與業界合作專案 、重視實作

感謝 Tairung 與 Chenghong 帶來的機器學習系列課程,帶領社員們由淺入深一步步了解機器學習的基礎知識與實作,並且能實際將所學應用在學期專案上,幫助專案業主解決問題。

歡迎各位拍手交流,NTUDAC 也會持續在 Medium、Facebook 與 LinkedIn 更新每週社課的資訊,歡迎對資料有興趣的大家持續關注,跟我們交流想法!!!

--

--

NTU Data Analytics Club
NTU Data Analytics Club

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