我理解的機器學習(1):簡介,初見線性迴歸,性能度量

簡介

2020了,機器學習的具體應用想必大家都不再陌生了。學機器學習是爲了解決問題的,在解決問題的過程中,我們會用到各種各樣的算法,這些算法匯聚到一起,就構成了我們目前看到的“機器學習”。

在解決不同的問題時,我們選擇算法前首先要考慮的就是:目的

比如,我們要根據已有的,並且有正確結果的數據集來判斷/預測另一個數據集的情況時,我們要用到監督學習算法,而這個已有的數據,叫訓練集;這另一個數據集,叫測試集。分別對應下圖(xi,yi)和(xt,yt):
在這裏插入圖片描述
在確定選用監督學習以後,我們還要再進一步分析問題:如果是像這個表格一樣,我們根據 5組(xi,yi) 來預測(xt,yt),這裏的目標" yt "是一個連續值,則要用到迴歸算法;
若我們的目標是“0/1”、“紅綠藍”、“A/B/C/D”這種離散的情況,那就要用到分類算法。
在這裏插入圖片描述
迴歸和分類是兩個特別典型的監督學習種類。若我們並沒有已知正確結果的訓練集,也不需要預測目標,而是要靠着算法自己完成對數據的分類,則要用到無監督學習算法。在這其中,最具有代表性的就是聚類了。
在這裏插入圖片描述
聚類算法把訓練集中的數據分爲若干個組,每個組被稱爲“簇”,這些簇對應着不同的規律,類似於b站和a站的這些分區:
在這裏插入圖片描述
若是我們需要估計數據與每個分組的相似度,我們也可以用密度估計算法等等。
當然,除了監督和無監督學習,還有半監督學習、強化學習等等等等,不過這些都是後話了。


線性迴歸

我們首先要了解的算法是:線性迴歸算法。
線性迴歸形式簡單,易於理解,又包含了一個完整的監督學習的流程,所以用它來作爲開端是非常合適的。
我們再來看一下前文提到的表格:
在這裏插入圖片描述
這裏的(xi,yi)也叫樣例,這裏總共有5個樣例。
而線性迴歸算法的目的就是找到一條最符合這個訓練集規律的直線,來預測接下來的趨勢。顯然不是什麼歪瓜裂棗都能符合這個規律的:
在這裏插入圖片描述
在這些五顏六色的直線中,對“規律”的符合程度顯然有好有壞,這個符合的程度該怎麼表示呢?

性能度量

最常用的性能度量是“均方誤差”(MSE),其中,m是樣例的個數,而 f 是我們自己或程序算出來的線性迴歸方程,然後我們把訓練集中的m個xi代入 f,求出與yi的差,然後平方求和再除以m就是均方誤差。
在這裏插入圖片描述
相似地,還有平均絕對誤差(MAE)
在這裏插入圖片描述
除了這兩個,還有其他的方式,這裏僅舉這兩個略有代表性的例子。
在評估一個算法性能的時候,選擇何種方式的性能度量也是很重要的,MSE和MAE的差別很簡單,只是少了平方這一步,但是實際的效果可能會相差很多:

現在假設我們已經得到了一個迴歸方程,但是在訓練集中有一個異常數據,導致f(xi)-yi變得特別大,如下表格的“5184”,“72”:

( f(xi)-yi )^2 f(xi) - yi
0.36 0.6
7.29 2.7
0.64 0.8
5184 72
1.44 1.2
0.25 0.5

我們用MSE與MAE計算得出的結果分別爲865.333與12.967。
可見,若是訓練集中有異常值,用MAE的評估的效果可能會略好一點;而若是訓練集中沒有異常值 / 異常值無影響,或者有處理異常的措施的話,用MSE往往能更好地反應一個模型性能的好壞。

現在我們就可以用性能度量來判斷模型的性能了,接下來,我們就能根據它來找出一個最符合“規律”的性能最好的線性迴歸方程。 至於這個方法,下期再說/doge


經過兩週的調整(咕咕咕),機器學習系列總算是開坑了!接下來的時間裏,我將以我的理解儘可能地把我心中的機器學習講清。自知段位不夠,遠遠不到“講”的層次,但我會盡力保證文章的準確,不過限於水平,文中或有不當之處還請海涵,若有大佬願意指出我的錯誤,我一定會及時改正!謝謝!

我是康.,希望做一名能幫助到各位的博主!機器學習系列剛剛開坑,請多指教!
除了機器學習,我偶爾還會做一些單片機/嵌入式、Python相關的文章,歡迎感興趣的小夥伴與我共同學習,一起進步!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章