MAE 和 MSE的差別
想問一下對於DAY1第一題卡了很久,一直不知道如何下手的新手有沒有什麼建議呢?
因為對於MAE、跟MSE都沒有概念,就先看了MAE的Sample code。
對於python雖然沒有很熟,但其實每一行程式大致都可以了解。
但不了解的在於其中為何要這麼做?例如MAE的Sample code中有一行程式碼如下。
y = (x_lin + np.random.randn(101) * 5) * w + b
想問的題為什麼要乘以5?再為何要再乘上w跟加b呢?
w跟b的用意為何?
MAE名詞解釋網路上很多,但看完還是沒辦法吸收,有沒有比較好理解的方式呢?
DAY1卡這麼久,說實在蠻灰心的,真個信心被打碎…
回答列表
-
2020/03/01 下午 11:44張維元 (WeiYuan)贊同數:4不贊同數:1留言數:3
嗨嗨,MannyWang 你好
從你的問題中看得出來你很盡力在理解題目並且想把問題問好,這個部分值得嘉獎!再來我們一起來看這個題目的脈絡:
## 題目在問什麼?
「仿造範例的MAE函數, 自己寫一個MSE函數」,我們先理解 MAE 和 MSE 是什麼東西。他們其實都是一種用來衡量分析結果好壞的一種計算規則,以下這邊是公式:
其中的 i 指的是所有的點, yi 是所有點的真實資料,y^ 是所有點的預測結果資料。從式子中,我們可以將 MAE 理解成「所有的真實資料與預測結果相減取絕對值,總和後取平均」;MSE 則是「所有的真實資料與預測結果相減取平方,總和後取平均」。簡單來說,我們可以把「真實資料與預測結果相減」想像成是「預測的好不好」,只是用絕對值或是平均的差異而已。
### 作業在幹嘛?
我們知道 MSE 跟 MAE 的公式與具體的意義之後,再回來看程式作業的部分。範例當中的
y 就是我們上面講的
真實資料 , 在這裡我們是用亂數的方法產生一百個點。範例當中的 y_hat就是我們上面講的
預測結果 , 在這裡我們是用斜直線的公式產生一條斜直線。在這裡,如果你不是很懂 y 跟 y_hat 的產生方式可以先當成是題目已知。那麼接下來,就是用題目給的 y 跟 y_hat 套用到mean_squared_error
函式,模仿mean_absolute_error
函式實作出上面的公式。### 那到底該怎麼做這題呢?
mean_absolute_error
是本題提供的範例:mae = MAE = sum(abs(y - yp)) / len(y) ,用來實作我們前面講的 MAE 公式,你可以關注 abs(y - yp) 這個部分,就是在取絕對值。因此,你只要把原本取絕對值的部分,改成平方就可以完成這個題目。如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的 GITHUB 帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃