官术网_书友最值得收藏!

2.2 理解機器學習的工作流程

如前所述,機器學習就是通過建立數學模型來理解數據。當我們賦予機器學習模型調整其內部參數的能力時,學習就進入了這個過程;我們可以調整這些參數,以使模型更好地解釋數據。在某種意義上,這可以理解為模型從數據中學習。一旦模型掌握了足夠多的知識——不管這意味著什么——我們可以要求模型解釋新觀測到的數據。

一個典型的分類過程,如圖2-1所示。

圖2-1 一個典型的分類過程

讓我們一步一步分解吧!

首先,需要注意的是,總是把機器學習問題分成(至少)兩個不同的階段:

  • 訓練階段:在這個階段,我們的目標是在一組數據(我們稱為訓練數據集)上訓練一個機器學習模型。
  • 測試階段:在這個階段,我們在一組新的、從未見過的數據上(我們稱為測試數據集)評估學習到(或最終確定)的機器學習模型。

將數據分解成訓練集和測試集的重要性不容小覷。我們總是在一個獨立的測試集上評估我們的模型,因為我們感興趣的是我們的模型對新數據的泛化能力。最后,無論是機器學習還是人類學習——這難道不是學習的全部意義嗎?回憶一下你在學校的時候,那時你還是個學生:在家庭作業中解決的問題,在期末考試中幾乎不會以完全相同的形式出現。這同樣也應該適用于機器學習模型;我們對模型記憶一組數據點的能力不太感興趣(比如一道家庭作業題),但是我們想知道模型如何利用所學的知識來解決新問題(比如在期末考試中出現的試題)并解釋新的數據點。

注意

通常,高級機器學習問題的工作流程包括一個稱為驗證數據集的第三組數據。目前,這種區分并不重要。通常通過進一步劃分訓練集形成一個驗證集。驗證集用于模型選擇等高級概念,當我們熟練地構建機器學習系統時,我們將討論驗證集(見第11章)。

接下來要注意的是:機器學習實際上是關于數據的。數據以原始形式輸入前面描述的工作流程圖(不管這意味著什么)并在訓練階段和測試階段使用。數據可以是從圖像和電影到文本文檔和音頻文件的任何形式。因此,在數據的原始形式中,數據可能由像素、字母、單詞,甚至更糟糕的純比特構成。顯而易見,使用這種原始形式的數據可能不太方便。我們必須找到對數據進行預處理的方法,以便把數據轉換成易于解析或易于使用的形式

數據預處理分為兩個階段:

  • 特征選取:這個階段識別數據中的重要屬性(或特征)。圖像的特征可能位于邊緣、角點,或脊的位置。你可能對OpenCV提供的一些更高級的特征描述符——例如,快速魯棒性特征(Speeded Up Robust Features,SURF);或者方向梯度直方圖(Histogram of Oriented Gradients,HOG)——已經很熟悉了。盡管這些特征可以應用于所有圖像,但是對于特定的任務來說,這些特征可能并不是那么重要(或者這些特征工作得并不是那么好)。例如,如果我們的任務是區分清水和臟水,那么最重要的特征可能是水的顏色,使用SURF或者HOG特征對我們的幫助可能不是很大。
  • 特征提取:這個階段實際上是將原始數據變換到所期望的特征空間的過程。Harris運算符就是一個例子,它允許我們提取一張圖像中的角點(即一個選中的特征)。

一個更高級的主題是創造有用信息特征的過程,即特征工程。畢竟,在人們可以選擇主流特征之前,必須先有人創造出這些特征。通常,對于算法的成功,特征工程比算法本身的選擇更重要。我們將在第4章中全面地討論特征工程。

提示

不要讓命名約定把你弄糊涂了!有時,很難區分特征選擇和特征提取,這是由命名方式導致的。例如,SURF既表示特征提取又表示特征的實際名稱。尺度不變特征變換(Scale Invariant Feature Transform,SIFT)也如此,這是一個特征提取器,可以生成SIFT特征。可是,這兩種算法都申請了專利,不能夠用于商業目的。我們不會共享這兩種算法的代碼。

最后需要說明的一點是:在監督學習中,每個數據點都必須有一個標簽。標簽識別一個數據點屬于某一類事物(如貓或狗),或者具有某個特定的值(如房價)。最終,監督學習系統的目標是預測測試集中所有數據點的標簽(如圖2-1所示)。我們通過使用帶標簽的數據在訓練數據中學習規則,然后在測試集中測試性能來實現這一任務。

因此,要構建一個有效的機器學習系統,我們必須先學習如何加載、存儲和操作數據。如何使用OpenCV和Python來實現這個目標呢?

主站蜘蛛池模板: 绥芬河市| 永济市| 新绛县| 阳城县| 永和县| 尚义县| 西畴县| 连平县| 镇平县| 定远县| 池州市| 兴城市| 祁连县| 雷州市| 太仆寺旗| 台山市| 都昌县| 梧州市| 绥滨县| 皮山县| 临沂市| 安康市| 乌审旗| 大埔县| 沙河市| 淅川县| 东兴市| 理塘县| 长泰县| 商水县| 公主岭市| 丹巴县| 泽普县| 灵石县| 邢台市| 吴忠市| 治多县| 庆城县| 揭东县| 寿宁县| 鄄城县|