「01」機器學習流程

機器學習(Machine Learning),顧名思義,就是讓機器去進行學習,學習完成後,就可以去解決新的問題。

那麼問題來了,機器從什麼地方進行學習?機器如何進行學習?機器學習到了什麼?

總的來說,機器學習就是藉助機器學習算法(Machine Learning Algorithm),從訓練數據集(training set)中,學得預測函數(hypothesis),有了預測函數後,我們就可以將新的問題抽象為變量X,代入預測函數,就可以得到預測的結果Y,如下圖所示:

「01」機器學習流程

下面通過一個簡單的例子,來說明機器學習整個的一個過程,當然這是一個簡化的過程。

房價預測案例

假如我們現在有一套房子(180平)要出售,但是不知道賣多少錢合適,想借助機器學習來幫我們預測一下。

Training Set

機器要進行學習,就要有訓練數據集(training set)。對於房價預測案例,training set就是已經成交房屋的價格信息,這些信息是比較抽象的,機器可能看不懂,比如三室兩廳兩衛、交通便利、人車分流、自帶小學等等,因此需要我們對這些數據進行提取,整理為機器可以看懂的數據。假如我們整理出如下的數據:

「01」機器學習流程

可以看到,影響房價的因素有很多很多,實際的房價預測中,這些因素都需要考慮進去,這樣預測出來的房價才比較準確。為了方便大家理解,我們這裡只關注一個因素:房屋面積,同時只保留序號1/2/3/4的數據(屬於同一個小區)。簡化的training set如下表

「01」機器學習流程

Machine Learning Algorithm

有了training set,就可以利用machine learning algorithm進行學習。由於我們的房價(y)只受房屋面積(x)影響,因此machine learning algorithm會學得一個線性函數(作為入門,大家可以忽略為什麼算法認為這是一個線性函數):

hθ(x) = θ0+ θ1 * x

我們只要解出上面函數中的θ0和 θ1,就能得到我們想要的hypothesis function了。

要解出θ0和 θ1,就需要用到前面的training set。

我們首先將training set中的數據,在座標系中列出來:

「01」機器學習流程

通過計算,我們可以得到θ0=2.22, θ1=1.43;因此,我們的hypothesis function為:

hθ(x) = 2.22+ 1.43 * x

有了hypothesis function,我們就可以預測我們的房子(180平)可以賣多少錢了

hθ(180) = 2.22+ 1.43 * 180 = 259.62 (w)

在上面的例子中,我們只有一個變量x(實際中,這個變量被稱為feature,下文使用feature),因此使用一元一次函數作為hypothesis function就可以比較好的進行預測。但是在實際的房價預測中,提取出的feature可能有很多個:x1,x2,x3 .... xn,面對這麼多的features,機器學習怎麼知道hypothesis function的格式呢?

在臺灣國立大學林田軒老師的機器學習課程中,是這樣描述機器學習流程的:

1:我們有一堆的訓練數據集,稱為training examples

2:在這堆training examples中,存在一個target function,這個target function是一個完美的函數,即training example中所有的數據都滿足這個函數,我們稱這個target function為f,但是很不幸,這個f是什麼,我們並不知道。

3:雖然我們不知道f長什麼樣,但是我們可以找一個hypothesis function(稱之為g),其中g與f近似相等

4:我們事先已經有一堆的hypothesis function,稱為hypothesis set

5:機器學習算法,就是要基於training example,從hypothesis set中選擇一個hypothesis function,作為final hypothesis(即g)

流程如下圖:

「01」機器學習流程

根據林老師的理解,機器學習算法訓練的過程,就是從hypothesis set中,挑選最合適的hypothesis function。

通過上面的講解,我們已經大概知道機器學習工作的流程,接下來我們就可以開發機器學習之旅了,不過在開始之前,讓我們先問自己幾個問題:

1:training set如何得到

巧婦難為無米之炊,作為練習,我們可以自己構造一些數據,但是實際應用中,該如何得到真實的數據?

當前很多公司,比如阿里、騰訊、Google....都有很多很多的數據,這些數據應該都是商業機密吧。不過在一些機器學習競賽平臺中,會有很多的數據供大家使用,留意一下,你會找到很多。

當然對於初學者來說,重要的是學習機器學習的算法,數據相對來說倒沒那麼重要。

2:hypothesis set如何得到?

這個問題,筆者當前理解也不夠深入。不過在學習機器學習算法過程中,我們就會接觸到一些可用的hypothesis function

3:機器學習如何從hypothesis set中挑選hypothesis function?或者,我們如何知道我們挑選的hypothesis function是最優的呢?

這個問題就比較複雜了,接下來的章節,我們會簡單的介紹下,機器學習算法如何保證找到的hypothesis function是比較好的。


分享到:


相關文章: