---
# System prepended metadata

title: 各機器學習方法發展與介紹

---

# 各機器學習方法發展與介紹
## 時間序列
### 時間序列的應用主要分為以下兩種:

* **預測:** 基於過去的時間序列來**預測**未來的時間序列，
若中間序列有缺失，也能利用方法對缺失值進行補遺。
**如: 自回歸滑動平均(Autoregressive moving average, ARMA)**
![](https://i.imgur.com/lP0FVKi.png)
* **分析:** 將整個時間序列基於季節性、趨勢、雜訊進行分離，
借此觀察時間序列有無趨勢或混波現象，也能夠用於濾除雜訊。
**如: 奇異譜分析(Singular Spectrum Analysis, SSA)**
![](https://i.imgur.com/cau2s1B.png)


![](https://i.imgur.com/5YcfBfZ.png)

## 分類方法
### 分類方法主要分為以下五種:
* **關聯性方法:** 
*計算樣本間的距離(如:歐式距離、曼哈頓距離等...)，將距離較近的樣本分類為同類別。
**如:最近鄰居法(K-Nearest Neighbors, KNN)**
![](https://i.imgur.com/BXZcG6E.png)
* **線性模型:** 
**樸素貝氏分類(Naive Bayes, NB)** 假設特徵間彼此不相關，並計算每個樣本的類別先驗機率，將最高機率的類別標記給樣本。
![](https://i.imgur.com/EfrjE8Q.png)
**支援向量機(Support Vector Machine, SVM)** 利用樣本間的距離，將樣本利用核函數投影至高維度，並建立超平面區分樣本，使超平面盡可能區分更多樣本。
![](https://i.imgur.com/nQLBdf0.png)

* **樹模型:** 
**ID3:** 基於信息熵計算信息增益，利用信息增益最多的特徵分裂樹節點。
**C4.5:** 改進ID3的版本，增加信息增益率改善ID3容易將分裂點給予特徵類別較多的特徵
**CART:** 能夠進行分類與迴歸的二元樹模型，基於基尼係數(Gini index)使計算更有效率，是許多集成模型的基本單位。
![](https://i.imgur.com/uguifjN.png)
* **集成模型:** 利用多個弱分類器(如:CART)組合而成進行分類，最後結果通常由所有弱分類器投票所得。
**如:梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)**
![](https://i.imgur.com/93kZcof.png)

* **神經網路模型:** 多個神經元組合成神經網路，利用反向傳播更新神經元權重，神經元具有一定程度的特徵選取能力。
**CNN:** 通常應用於影像辨識，利用卷積層或池化對圖片進行降維後，在最後接上全連接層進行影像分類。(CNN的概念更早就被提出，圖裡面懶得改) 
![](https://i.imgur.com/y9NLLhr.png)
**DNN:** 使用多層全連接層進行訓練，通常應用於數據資料分類。
![](https://i.imgur.com/WiwWhGR.png)
**LSTM:** 常應用於與時間有相關性的項目，對影片、音樂、時間序列分類與處理均有較佳的表現，與一般神經網路差別是LSTM的神經元具有記憶能力，因此相同的輸入也會有不同的輸出。
![](https://i.imgur.com/hbwoGYb.png)


![](https://i.imgur.com/CYGagg8.png)

## 分群方法
### 分群方法主要分為以下四種:
(以下分群GIF均為二維，高維度的情況無法可視化也容易造成維度災難。)

**階層式:** 先將每個樣本都當成一個群體，之後對周遭的群體開始合併，直到群的數量達到設定的數。(凝聚式) **如: AGNES**
![](https://i.imgur.com/PWDzocs.gif)



**密度式:** 根據樣本間的密度合併資料，需要設定距離與樣本數，如果在距離內的樣本數大於或等於設定的樣本數，則將其分為一群，具有剔除離群點的功能，也能夠自動判斷有幾個群聚。 **如: DBSCAN**
![](https://i.imgur.com/ZqUUvO3.gif)

**切割式:** 需要設定起始中心點的位置與中心點數量，計算樣本與中心點的距離，與該中心點距離最近的樣本則為該群，中心點更新方式則是使用隸屬值來移動中心點。 **如: K-means** 
(如果圖不會動就F5)
![](https://i.imgur.com/kJwxWvM.gif)


**格子式:** 無須設定中心點即可判斷有幾個群聚的方法，二維的情況下對樣本周圍生成座標點，在判斷最近的樣本核心來更新座標點，直到所有座標點均收歛至各樣本群核心點時停止，最後與該座標點最近的樣本則為同一群。**如: STING**
![](https://i.imgur.com/aOLtCCc.gif)



分群方法屬於無監督式學習，也較少優劣之分，應用則需要都嘗試看看。
(下面這張圖是威翔做的)
![](https://i.imgur.com/EE8WeS6.png)

## 優化算法
### 優化算法主要分為...有點多 懶得寫了

優化算法是拿來解決最佳化問題(如:背包問題,TSP問題)用的，在機器學習上通常用來尋找參數或特徵選取，藉由最後所產生的目標函數來改變輸入數值藉此最小化(或最大化)目標函數的方法。

**PSO:** 優化算法介紹都很麻煩 自己找(粒子群演算法)
(下圖為尋找二維向量中的最低點)

![](https://i.imgur.com/HeD7FOG.gif)
**GA:** 交叉、變異等方法來最佳化。(基因演算法)
(下圖為TSP問題，尋找最短路徑)

![](https://i.imgur.com/whUN0qN.gif)

優化算法發展圖
![](https://i.imgur.com/kZq3hqw.png)




有趣的是PSO到現在還很多人用 1991~2001那邊
之前用2016年的鯨群演算法(WOA)，然後對兩個測試函數進行測試
分別為Sphere函數與Restrigin函數(測試時為30維)，結果如下:
(下圖表示兩種方法對函數的收歛速度)
![](https://i.imgur.com/OKiCf9A.png)

可以發現，WOA收歛速度比PSO快非常多。


![](https://i.imgur.com/PpFMV9x.png)
在運行時間與收歛值上也是WOA更佳。




# 迴歸方法(有空在補)