機器學習任務分類、訓練測試集

林紘宇
數據領航員
Published in
12 min readFeb 19, 2023

目錄

◎ 前言
◎ 常見案例
◎ 怎麼做資料切分?
◎ 常見的4個分類模型
◉ KNN
◉ SVM
◉ RandomForest
◉ Decision Tree
◎ 常見的迴歸模型
◉ 線性迴歸
◉ 邏輯迴歸
◎ 參考資料

前言

傳統機器學習可以大致分為兩類,分別是監督式學習和非監督式學習。兩者最大的差異就是在於資料是否被標記,也可以理解為資料有沒有被定義,監督式學習又可分為『分類問題」和『迴歸問題』。兩個問題分別對應『離散資料」和『連續資料』。分類 (Classification) 方法會透過已被標記的離散型資料訓練模型,也就是人類給定分類的標籤和分類後的結果讓機器學習,目的是讓機器分析標籤與結果的關聯,訓練預測模型。

連續型資料則不能使用分類進行分析,試著想一下身高、體重、房屋價格,這些資料要怎麼進行分類呢,光用想的都覺得不太可能,因此當遇到連續型資料時我們會使用另外一種分析方法 - - 迴歸,常見的連續型資料除了上面提到的以外還有有股價、油價、房屋價格等會連續變化的數值。迴歸(Regression) 方法會透過已被標記的連續型資料訓練模型,預測一條理想的連續函數,所謂理想的意思是預測出的連續函數能盡量通過所有的點,目的是比較理想結果和實際數值的差異。

常見案例

分類 (Classification)

舉個簡單的分類案例 : 給機器看過 500 張貓狗的照片後,請機器判斷新照片是貓還是狗。
範例中的貓和狗即為標籤,照片就是我們要匯入的資料,機器在接收這些資料後分析貓和狗的特徵,再將標籤的特徵分類到我們選擇的類別中,用來當作判斷新圖片是貓或是狗的標準,這便是分類 (Classification) 的運行方法。
監督式學習所運用的數據就是來自這些被定義 (貓 or 狗) 的數據,而非監督式學習運用的資料不須被定義,數據裡的資料只有特徵,演算法僅能根據特徵區分出兩大類型,然而,我們卻無法得知哪一個類型分別為哪一種動物。

圖片來源:https://www.javatpoint.com/classification-algorithm-in-machine-learning

迴歸 (Regression)

在我們的生活中就有個經典的案例:房價預測,我們要如何知道該區的理想房價呢?
上面說過,迴歸分析就是畫出一條盡量通過所有點的預測線,因此理所當然的我們必須先畫出一張散布圖,先選定 X 軸和 Y 軸的單位,這裡我們就以坪數作為 X 軸的單位,總價作為 Y 軸的單位, X 軸的數值當作特徵也可以理解為上面提到的標籤, Y 軸的數值則作為觀測值。如果我們將看房的目標鎖定在同樣坪數的物件,總價就可以很明顯的作為觀察值用來比較。做完散布圖後就可以繪製迴歸線啦,迴歸線當然不是簡單畫一條直線而已,之後的文章會詳細介紹這邊就不細講了。

圖片來源:https://ithelp.ithome.com.tw/articles/10192810

怎麼做資料切分?

對於監督式學習來說,我們必須使用被標註資料來做訓練,但蒐集到的資料並不能全部拿來做訓練,因為我們必須留一些做測試來驗證我們模型的準確度。
這些資料必須跟訓練資料是完全不同的,就像考題不能和答案寫在一起,對於機器學習來說也是一樣的道理。
所以最簡單的方式,我們會把我們的資料切分成測試集跟訓練集,通常會保留比較多當作訓練資料 (60%~80%),其餘作測試資料。

import numpy as np              #資料處理套件
import matplotlib.pyplot as plt #圖表製作套件
import pandas as pd #資料處理套件

dataset = pd.read_csv('top_insta_influencers_data (1).csv') #匯入檔案
X = dataset.iloc[:,3:6].values
y = dataset.iloc[:,-8].values #選出想要的行和列
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.25,random_state=0)
#隨機切分資料,將測試集的比例抓在0.25

這裡我們先導入必要的模型後,使用 pandas 套件將資料匯入,接著在資料表中選出我們所需要的行列,最後使用 sklearn.model_selection 中 import 切分模型的功能建立訓練集和測試集,將測試集的比例抓在 0.25,也就是說在資料中隨機切分訓練集和測試集,其比例為 3:1,利用隨機切分的測試集去驗證我們模型的精準度。

常見的4個分類模型

1.KNN (K-近鄰演算法)

2.SVM (支持向量機)

3.RandomForest (隨機森林)

4.Decision Tree (決策樹)

圖片來源:https://medium.com/說說5分鐘/機器學習任務-分類-迴歸-分群-ad1a3b56660b

下面簡單介紹一下上面提到的四個模型:

1.KNN

KNN 的全名 K Nearest Neighbor (K-近鄰演算法)是監督式學習的其中一種模型,也就是 k 個最接近我們想要的分析結果鄰居。
在分類問題中 KNN 演算法利用 k 個最近的鄰居來判定新的資料是在哪一類。使用者先決定 k 的大小。接著計算新的資料與鄰近的資料間的距離。找出跟自己最近的 k 個鄰居,觀察哪一組鄰居數量最多,再決定分入哪一類。

  • KNN 與 k-means 不一樣

雖然兩者都有 k 值要設定但其實兩者無任何關聯。KNN 的 k 是設定鄰居的數量採多數決作為輸出的依據。而 K-means 的 k 是設定集群的類別中心點數量。

圖片來源:https://ithelp.ithome.com.tw/articles/10269826

2.SVM

SVM 可分為以下兩種:

  • 線性可分支持向量機
  • 非線性可分支持向量機

支持向量機 (support vector machine, SVM) 是一種監督式演算法,透過找出一個最佳分類點,將兩個不同的集合分開。但在一般狀況下這個分隔線非常複雜且有很多種可能。然而 SVM 就是要在這很多種的可能當中找出最佳的解。簡而言之,SVM 就如繩圈,需要準確將兩種不同的集合劃分開來

3.Decision Tree

決策樹會根據訓練資料產生一棵樹,依據訓練出來的樹預測新樣本。Decision Tree可以使用不同的演算法來評估 Branch 的好壞,決策樹依據貪婪法則 (Greedy Method,是一種在每一步選擇中都採取在當前狀態下最好或最佳(即最有利)的選擇,從而希望導致結果是最好或最佳的演算法) 來決定每一層的問題,目標是分類過後每一群能夠很明顯的知道是屬於哪一種分類。依據訓練資料找出合適的規則,最終生成一棵樹來決策所有事情,其目的使每一個決策能夠使效益最大化。換句話說,就是用條件去篩選歸類出最佳的模型,生成最精準的預測模型。
一般來說,樹高越高會導致分類結果越接近。

圖片來源:https://ithelp.ithome.com.tw/articles/10271143?sc=hot

4.Random Forest

隨機森林是由許多樹木組成,所謂的 Random Forest 就是由很多棵 Decision Tree 所組成。如上所說,當模型的樹高過高時,分類結果會太過接近。因此Random Forest 藉由多棵不同樹所組成,透過不同的分類標準讓結果比較不容易過度擬合,並使得預測能力更提升。

圖片來源:https://ithelp.ithome.com.tw/articles/10272586?sc=hot

常見的迴歸模型

1.線性迴歸 (Linear Regression)

2.邏輯回歸 (Logistic Regression)

1.線性迴歸

線性回歸是知名度最高的方法之一。線性回歸,它的因變數 (觀測值) 是連續的,自變數 (特徵) 則可以是連續的或是離散的。函數是一個或多個回歸係數的模型組成的線性組合。只有一個的情況稱為簡單線性回歸(Simple linear regression),大於一個自變量情況的叫做多元線性迴歸(multivariable linear regression)。

圖片來源:https://zh.wikipedia.org/zh-hant/%E7%B7%9A%E6%80%A7%E5%9B%9E%E6%AD%B8

2.邏輯迴歸

邏輯迴歸一般用於判斷事件成功或失敗的概率,它可顯示不同特徵之間的關係,然後計算某個結果的發生機率。邏輯迴歸用於機器學習可幫助建立準確預測,它類似線性迴歸,不同的在於其目標變數是二元的,數值為 1 或 0。

odds = p/ (1-p) = 事件發生概率 / 事件未發生概率 ln(odds) = ln(p/(1-p)) logit(p) = ln(p/(1-p)) = b0+b1×1+b2×2+b3×3….+bk×k

圖片來源:https://www.finereport.com/tw/data-analysis/7-huigui-ff.html

以上是對迴歸和分類模型的簡單介紹,接下來我們還會有對這些模型使用方法和程式碼更加詳細的介紹,想了解更多或是對這類介紹有興趣的別忘記繼續關注我們哦!

參考資料:

https://medium.com/說說5分鐘/機器學習任務-分類-迴歸-分群-ad1a3b56660b

https://ikala.cloud/supervised-learning-classification-regression

https://ithelp.ithome.com.tw/articles/1021658

https://ithelp.ithome.com.tw/articles/10217849

https://wiki.mbalib.com/zh-tw/离散变量

https://ithelp.ithome.com.tw/articles/10271143?sc=hot

https://ithelp.ithome.com.tw/articles/10269826

https://ithelp.ithome.com.tw/articles/10272586?sc=hot

https://medium.com/jameslearningnote/資料分析-機器學習-第3-4講-支援向量機-support-vector-machine-介紹-9c6c6925856b

https://zh.wikipedia.org/zh-tw/贪心算法

https://ithelp.ithome.com.tw/articles/10192810

https://zh.wikipedia.org/zh-hant/%E7%B7%9A%E6%80%A7%E5%9B%9E%E6%AD%B8

https://www.finereport.com/tw/data-analysis/7-huigui-ff.html

教育部補助大專院校STEM領域及女性研發人才培育計畫目標為建構一個「以智慧物聯技術與實務應用為基礎的教育環境和實作場域」,並規劃出符合此STEM教育領域的創新特色課程,以畢業前進入企業實習的方式,讓學生了解相關產業界所面對的問題,再輔以業界實作場域的教育訓練活動,共同帶領學生發展出動手做、判斷與解決問題的相關技能;本計畫也規劃讓學生以專題實作的組隊方式,跟業界協力領導學生對外參與智慧物聯技術的應用競賽,不僅可以累積學生實務開發的能力,更能激發其潛能來幫助企業解決所面臨的難題。

Data Science Meetup 台灣資料科學社群的使命是「為資料科學人士與企業創建經濟機會」。我們相信大數據蘊藏著巨量的信息和價值,如何處理好大數據並發掘其潛藏的商業價值,就要靠資料科學有效的應用。21世紀是資料科學決勝時代,我們社群將為大家提供與資料科學相關的最新技術和資訊實戰攻略,並透過全球業界人士和學者幫助相關職業規劃與挑戰,社群活動包含

  • 台北實體版聚
  • 線上版聚
  • Mentorship Program

歡迎加入我們社團瞭解更多資訊:
https://www.facebook.com/groups/datasciencemeetup

--

--