雖然Regression還有很多種方法沒有學跟實作,但我覺得再這樣下去會太無聊,其他的ML方式還有很多要學呢~因此把其他的回歸方法觀念統整在這兒,實作部分直接跳過,有需要再開課程講義時做就好XD
課程有教到的部分包含
Support Vector Regression
直接引用別人的總結
Concept of SVR: The gray-shaded region represents the ε-insensitive tube. Only data points lying outside this tube are penalized during the SVR optimization process.
0線性回歸會尋找一個模型,使預測值和實際資料之間的整體誤差盡可能小。SVR 則採用 ε-insensitive tube,在 tube 以內的誤差視為 0,不需要特別懲罰;只有超出 tube 的資料點才會產生損失。這讓模型不必為了追蹤每一個資料點而過度調整,而是更關注整體趨勢。超出 tube 的重要資料點會成為 support vectors,對最後的模型產生主要影響。
Decision Tree Regression
實在太有趣了、沒想過可以這樣做資料處理及預測。Decision Tree Regression是把資料切成多個組別,例如X1>20的一組,在這個基礎上X1>20 且 X2 > 70的再分組,根據這樣的邏輯不斷的切分資料(切的方式是考量變異,變異差越小的越容易被畫成一組、這對文組我來說太難了^^,知道怎麼用就好)。把資料分成很多組別後,再求每個組別預測值的平均值。例如組1是65.5、組2是70,而當資料隸屬組1時,得到的預測值就是65.5。以此類推。
請chatgpt根據以上邏輯幫我畫圖,應該清楚更多拉~
Random forest Regression
使用這個方法之前,要先了解 Decision Tree 的概念。而Random Forest Regression我引用 scikit-learn 的介紹:
A random forest is a meta estimator that fits a number of decision tree regressors on various sub-samples of the dataset and uses averaging to improve the predictive accuracy and control over-fitting.
Random Forest 可以想成是一個由很多棵 Decision Tree 組成的預測器。每一棵 Tree 都會各自進行 Decision Tree Regression,最後再把所有 Tree 的預測結果平均,藉此改善預測準確度、降低單一 Decision Tree 過度貼合的問題。Random Forest 的作法,是先從原始資料中進行隨機抽樣(scikit-learn 使用 bootstrap sampling),利用抽樣後的資料建立一棵 Decision Tree。接著再重新抽樣、建立另一棵 Tree,不斷重複這個過程,因此最後會得到很多棵彼此不完全相同的 Decision Trees。這裡有一個容易搞混的地方:每一棵 Tree 不需要分出相同的組別或葉節點。 真正進行預測時,是把「同一筆新的資料」分別帶入不同的 Decision Tree,讓每一棵 Tree 各自做出預測,最後再將這些預測結果平均。例如買房坪數=45,屋齡=5,不同決策樹得到的結果如下:
Tree 1 → 65 (一坪65萬)
Tree 2 → 72
Tree 3 → 68
Tree 4 → 75
Tree 5 → 70
最後多個決策樹的結果平均下來,一坪約為是70萬。這個方式的好處是把很多資料組跟預測值的結果平均,所以最終建出來的模型表現會很穩定。可以避免'見樹不見林'的狀況。
至於什麼情境要用到這個方法嘛....查了一些資料(含chatgpt給的回覆),我認為是:
1.有不少自變數(X)的時候,不過我覺得這結論又跟前頭做backwrad elimination的說法又打架了,那多自變數要怎麼做解釋呢? 我想X的解釋性應該是比較差。不過也許不用跟老闆講太多、就說我們考量了以下OOXX變數後,用random forest最終做出了以下的預測。也許通常模型強比可解釋性重要、因為一眼就看出預測結果的資料,就不需要這麼大費周章ㄌ嘛。
2.預測值可能不是線性的時候、例如資料結果有sin、COS 這種週期變化的狀況(https://tomohiroliu22.medium.com/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98%E7%B3%BB%E5%88%97-37-%E9%9A%A8%E6%A9%9F%E6%A3%AE%E6%9E%97%E5%9B%9E%E6%AD%B8-random-forest-regressor-a0f7a57c06c4)
到目前為止我們已經學了很多種 Regression,但看完一些實際研究後,我反而覺得沒有哪一種模型可以直接說是「最好」的。必須都要試試看,然後驗證。這篇是比較不同化學藥劑對於水質的影響,可以拿來做水處理廠的決策。
https://www.researchgate.net/publication/400312019_Chemical_Dosage_Prediction_for_Drinking_Water_Treatment_Using_Random_Forest_and_Polynomial_Regression
雖然結論是多項式回歸以及random forest預測的結果都很好,不過多項式回歸的預測更能解釋,預測出來的也更為穩定的。
所以下一章會討論如何評估模型適切性的方法。