
其實機器學習的入門知識很多,
為什麼上一篇會先挑「迴歸、分類、聚類」來整理,
一個很現實的原因是因為,
有非常多的 Artificial Intelligence 課程影片,
都會在開頭不久的地方,講到這三個概念。
而且通常還會搭配各種演算法(algorithm)一起解釋,
讓人很容易以為,
「某一種演算法,應該是對應某一種問題類型吧?」
蕾依奈爾一開始也是這樣理解的……
不過,果然事情不是我想的那樣單純。
學著學著,慢慢開始出現一些,
怎麼看都很難塞進原本那個「問題類型」的架構裡的東西,
像是「時間序列」或「降維」。
(這個考題超級無敵愛考😑)
雖然蕾依奈爾平常是個崇尚隨性的人,
但每當看到排列整齊的東西,心中就覺得無比療癒☺️
因此看到一堆資料在眼前亂飄的時候,「對齊癖」就會發作。
「對不上」,
是一件有點痛苦的事情。
正當我在疑惑為什麼放不進去架構裡的時候,
突然意識到一件事:
原來漏掉了一層,關於「資料特性」的整理。
也就是說,
迴歸、分類、聚類在說的,是機器學習的「任務類型」(task types),
但像「時間序列」或「降維」這些概念,
其實都跟「資料特性」(data characteristics)有關。
😯
難怪怎麼塞都塞不進去。
因為它們根本就不應該被放在同一格裡。
所以這一篇,
整理的是跟資料特性有關的這幾個名詞,
以及常常一起出現的相關演算法。
資料特性(data characteristics)
資料特性,其實應該在「任務類型」之前先說明才對,
不過因為蕾依奈爾是先接觸了迴歸、分類跟聚類之後,
才發現有些東西對不上心中的架構分類表,
所以這裡就依照我的學習筆記順序來整理。
任務類型,指的是機器學習模型要做什麼,
而資料特性,則是回頭看一件更基本的事情:
——「我們手上的資料,本身到底長什麼樣子?」
有些資料的差別,不在於要預測什麼答案,
而是在於資料的「結構」本身就不一樣。
例如,有些資料是沿著時間排列的,
前後順序本身就帶有意義。
也有些資料則是同一筆資料裡包含非常多欄位,
特徵多到讓人難以理解或處理。
所以在這一篇,
我想整理兩種常見、也很容易被混在一起的資料特性名詞:
- 一種是「時間序列」——資料具有順序
- 一種是「高維資料」——資料特徵很多、結構複雜
接下來,先從最直覺的「時間序列」開始。
時間序列(Time Series):有時間順序的資料
「時間序列」這個詞,乍看之下好像不難理解。
時間 + 序列
所以直覺上就是:「跟時間有關的資料,照順序排在一起。」
應該沒有錯吧?
初步看起來這樣理解是沒有錯,
不過,眉角就在這裡😯
如果只是一般的資料,
像是身高、年齡、收入這種欄位,
就算順序打亂,資料本身的意義也不會改變。
但「時間序列」不一樣。
時間前後的關係,本身就是資訊的一部分,
所以它的順序是不可以被打亂的。
比方說,
全球氣溫的逐漸升高,呈現一種長期的變化趨勢。
夏天的冰淇淋銷售量,是在「夏天」這個時間裡週期性重現。
因此時間的「序列」不能被隨意打亂,
如果把這些資料隨便打亂順序,
就等於把原本隱含在裡面的變化趨勢全部打散了。
也就是說,時間序列的關鍵,不只是「有時間」,
而是「時間的順序本身具有意義」。
(甚至可以說,順序才是重點😑)
這也是為什麼,在處理這類資料時,
不能把它當成一般資料來隨意洗牌或重排。
因為一旦順序被破壞,
很多原本存在的規律,也就跟著消失了。
嗯??這麼說的話,
《詐欺遊戲》裡面的男主角秋山,在《17張撲克牌》(17 Poker)裡使出的,
追蹤全部撲克牌順序、然後預測牌型的神技,
好像有點類似時間序列的概念囉?😆
哈哈,雖然秋山的神技不完全是時間序列的概念,
但在「順序本身帶有資訊」這一點上,兩者其實是相似的。
也正因為時間序列中的資料彼此之間存在前後的依賴關係,
這類資料常常會被用來做預測。
(就像秋山可以預測《17 Poker》的牌型一樣😆)

一旦資料之間存在時間上的連續性,
就代表裡面可能藏著某種規律或趨勢。
而這些規律,正是後續分析或預測的基礎。
例如,我們會根據過去幾天的氣溫變化,
推測接下來的天氣趨勢。
或是觀察一段時間內的數據變動,
來預估未來可能的走向。
高維資料(high-dimensional data):有大量特徵的資料
根據蕾依奈爾寫過的考題來看,
「時間序列」通常不會直接考你定義,
而是會用比較應用的方式出題。
例如問:「哪一種模型適合用來預測與時間有關的趨勢?」
(看到「時間」,第一直覺就會想到 RNN😆)
相較之下,「高維資料」則常常會搭配另一個關鍵字一起出現:
——主成分分析(PCA),
也就是一種常用來進行「降維」(Dimensionality Reduction)的方法。
那為什麼會需要「降維」呢?
先從這個問題反過來想:
既然要「降維」,
就代表原本的資料「維度太高了」。
也就是說,「降維」這個行為,
其實是為了處理「高維資料」而出現的。
所以在談降維之前,
我們應該先回頭看一件事:
什麼是「高維資料」?
所謂的「高維資料」,
指的是一筆資料中包含了大量的特徵(features)。
資料當中如果只含有幾個特徵的欄位,例如身高、年齡、收入,
這種資料通常還算直觀,
通常也比較容易理解它們之間的關係。
但當欄位數量開始變多的時候,事情就不太一樣了。
一筆資料可能同時包含幾十個、甚至上百個特徵。
然後每個特徵之間,可能還會互相影響。
這種情況下,資料雖然看起來很「完整」,
但也會變得越來越難理解、越來越難處理。
例如,一個人的資料可能同時包含:
- 年齡
- 收入
- 教育程度
- 消費習慣
- 興趣偏好
- 社交行為
- ……
當這些資訊全部放在一起時,
很難用直觀的方式去判斷,
到底哪些特徵才是真正重要的。
每一個特徵,就是資料的一個維度,
當資料中的特徵越多時,對應的維度也會越高。
維度越高,資訊不一定越清楚,
反而可能變得更混亂😑
(甚至有一種「資料很多,但看不懂」的感覺)
這也是高維資料最麻煩的地方。
所以在這種情況下,
通常不會直接處理這些複雜的資料,而是會嘗試做一件事:
——「降維」,
也就是把資料變簡單。
在各種降維的方法中,最常見的一種,
就是「主成分分析」(Principal Component Analysis, PCA)。
我一開始看到這個「主成分分析」的時候,第一個想法是:
主成分?
這東西可以吃嗎?
是什麼食物還是營養素的名字嗎?😆
但是原來不是。
降維(Dimensionality Reduction)與主成分分析(Principal Component Analysis, PCA)
主成分分析,是指把原本細節跟資訊很多的資料,
用類似投影或壓縮的方式,
轉換成幾個最有代表性的方向,
變成「儘管只剩下比較簡化的輪廓,但你還是認得出他是誰」的「主成分」,
再用這個比較簡化的版本來進行分析。
可以省時、又省腦力。
😯
這方法好像有點聰明😆
在我心中突然想到,
這好像有點像3D遊戲要動畫化的時候,
原本立體的人物角色,變成扁扁的 2D 形象。
雖然資訊變少了,但你還是認得出來這個人是誰。
而且細節也變少了,
畫起來也許更省力了😆
然後一點也不影響這個IP的商業化擴散😏
邪惡的聰明啊~
感覺每個上班族都應該學會這招,
適時進行一點「降維運作」😏
原來問題在這裡
如果用一句話來整理這一篇的重點:
- 迴歸、分類、聚類,是在回答「要做什麼任務」
- 時間序列、高維資料,則是在描述「資料本身長什麼樣」
當我把「任務」跟「資料」這兩個層次分開之後,
很多原本看起來混亂的概念,就變得清楚多了。
至少現在再看到「時間序列」或「降維」的時候,
比較不會下意識想把它們塞回原本那個分類表裡了😆
整理到這裡,其實會發現一件事:
目前只整理了「任務」跟「資料」這兩個層次,
但在機器學習裡,
其實還有另外兩個很容易被混在一起的概念:
- 模型(Model)
- 演算法(Algorithm)
這兩個東西在很多教材或課程中,
常常會被交錯使用。
一開始其實很難分清楚差別,
所以先簡單畫一張目前整理出來的「結構地圖」:

至於模型跟演算法之間到底差在哪,
如果有機會再繼續來整理😊
➡️延伸閱讀:
線性迴歸到底是在迴歸什麼?原來聚類跟分類不一樣!(機器學習入門)




















