《按圖索驥學機器學習》-《A01什麼是機器學習》

程序員技術提升營 發佈 2020-01-07T06:39:15+00:00

這是《按圖索驥學機器學習》-《A01什麼是機器學習》的講義 這門課程之所以叫按圖索驥,是因為學習資料都放到了思維導圖當中,大家可以根據自己的情況,選擇合適的學習路徑,自主學習點擊文末,查看更多,可以看到本節的視頻教程導圖和有關學習資料都放在了github(git.code946.

這是《按圖索驥學機器學習》-《A01什麼是機器學習》的講義 這門課程之所以叫按圖索驥,是因為學習資料都放到了思維導圖當中,大家可以根據自己的情況,選擇合適的學習路徑,自主學習

點擊文末,查看更多,可以看到本節的視頻教程

導圖和有關學習資料都放在了github(git.code946.com)上,並且在不斷疊代和更新中

1、傳統編程模式

這節課是A系列(A系列是一組從應用方向介紹機器學習的課程,偏基礎)第一節課,給大家介紹一下什麼是機器學習,和網上類似課程不一樣的地方是,先不講理論先從一個任務出發: 現在我們要求一個圓形的周長,這個時候可能很多同學說太簡單了,迅速給出了代碼:

ok,這是傳統的編程模式,也就是數據+算法,計算機依據算法,傳入數據,得出運算結果,我們得先知道有2PIr這個公式,接下來才能編寫程序去計算任意半徑長度的圓周長 好了,現在我們開一個腦洞:假設人類從來沒有發現2PIr這個公式,我們可以利用程序推導出這個圓周長的計算公式嗎?

2、機器學習模型推導圓周長公式

首先:圓周長是可以測量的,比如找個線團,環繞一個圓形物體(如手鐲,圓形的碗碟等),再捋直 其次:圓半徑不好測量,但可以測量直徑 因此我們可以找出一堆的圓形,分別測出圓直徑和圓周長,形成如下的數據集,當然在這個過程中會有誤差

半徑為2的圓形周長為:12.560000


接下來程序就可以通過這些數據,發現周長與直徑的聯繫,總結出規律 這就是機器學習的神奇之處

具體怎麼做呢? 第一步,讀取周長和直徑的測量數據,然後將具體數值用matplotlib畫出散點圖

上圖中的橫坐標是直徑,縱坐標是圓周長,藍色點就是樣本點,可以看出隨著直徑的增長,圓周長也隨著增大,二者呈線性關係,這點很重要,它決定著我們接下來採用的是哪種機器學習的模型去總結圓周長的計算規律 因為直徑和圓周長是線性關係,所以用線性回歸算法去預測圓周長,這裡大家不用去管線性回歸等陌生名詞的含義,你可以簡單的認為這裡要調用框架中的一個類,然後調用其中的fit方法,把測試數據集傳進去

第二步:引入sk-learn框架中的線性模型包中的LinearRegression類 LinearRegression翻譯過來就是線性回歸的意思

第三步調用LinearRegression中的fit方法訓練模型

當fit方法執行完畢後,程序也就完成了學習過程, 是不是簡單得想哭 那麼它的訓練結果是咋樣的呢 因為LinearRegression是線性模型,並且從散點圖上可以看出,我們這裡學習到的模型就是一條直線 對應的就有直線的斜率和截距,可以將它們列印輸出出來進行查看

所以這裡我們訓練出來的模型就是 周長 = lr.coef_ * 直徑 + lr.intercept_ 而我們數學中總結出的計算公式是:周長= PI * 直徑 + 0 可見此處的lr.coef對應的就是PI,而lr.intercept是一個誤差項 coef的數值為3.09對比PI的3.14還是有點小誤差的,之所以是這樣,是因為我們用於訓練模型的數據本身是有誤差的,如果有同學感興趣,可以在生成數據集的時候去掉誤差項,直接用精確數據去訓練模型,那麼得到的coef就是和PI的數值一致了

3、模型評估

至此我們的模型是做出來了,因為我們已經先知先覺的知道了PI的精確值,所以很容易對這個模型進行評價,認為這個模型還是可以的,誤差不大,但是這是一道腦洞題,PI是不會預先得知的,所以我們得有個評價系統來對機器訓練出的模型進行評估

要對模型進行評價,需要有專門對模型進行測試的數據 這裡我們用numpy直接生成了一組數據,為了清楚表達這裡的誤差值大小,此處用到的是精確值 這和實際情況是不符的,事實上測試數據和訓練數據來源是一樣的,訓練數據有誤差,測試數據同樣有誤差

接下來用機器訓練出的模型,算一下直徑為10的圓周長

可以看出,用模型算出的值(這個值可以叫做預測值),和數據集中的真實值,是有差距的,這個差距就是誤差了,此處的誤差自然是越小越好 在LinearRegression中有個score方法可以評價模型的好壞,我們一起試試看

此處score的具體含義,對應的計算公式,後面再說 我們只需要記住score的分值越接近於1,越好

4、傳統編程模式 VS 機器學習編程模式

4.1、傳統編程模式

傳統編程其實是基於規則和數據的,目的是通過計算機的運算的能力,快速的得到一個答案。 還記得前輩們總結的公式嗎:電腦程式=算法+數據結構。說的就是這個道理 但在機器學習的領域,這個模型就發生改變了

4.2、機器學習編程模式


機器學習的模式其實是從已知的數據和答案出發找出某種規則,接下來就可以利用這個規則去處理新的數據,有些同學可能會說通過這種方式得出來的規則有誤差怎麼辦,首先我們可以用更加精準的數據和更加合適的算法,不斷去調整我們的模型,得出更加精確的結論,其次在實際的工程項目中出現誤差是很普遍的,只要誤差的範圍是能夠接受的就可以了,比如PI本身就是一個無理數,就不是一個精確的數值,在實際工程中,是採用3.14還是使用3.1415926這就要看具體的應用場景了



點擊文末,查看更多,可以看到本節的視頻教程

關鍵字: