- 機器學習實戰:基于Scikit-Learn、Keras和TensorFlow(原書第3版)
- (法)奧雷利安·杰龍
- 2917字
- 2024-09-11 17:33:02
2.2 放眼大局
歡迎來到機器學習房產公司!你的首要任務是使用加州的人口普查數據構建該州的房價模型。該數據包括加州每個街區組的人口、收入中位數和房價中位數等指標。街區組是美國人口普查局發布樣本數據的最小地理單位(一個街區組通常有600~3000人)。我將它們簡稱為“地區”。
你的模型應該從這些數據中學習,并能夠在給定所有其他指標的情況下預測任何地區的房價中位數。
由于你是一位井井有條的數據科學家,因此你應該做的第一件事就是拿出你的機器學習項目清單。你可以從附錄A中的那個開始;對于大多數機器學習項目,它應該可以工作得相當好,但請確保根據你的需求進行調整。在本章中,我們將經歷許多清單項目,但我們也會跳過一些,有些是因為它們是不言自明的,有些是因為它們將在后面的章節中討論。
2.2.1 框定問題
你問老板的第一個問題應該是業務目標到底是什么。建立模型可能不是最終目標。公司期望如何使用該模型并從中受益?了解目標很重要,因為它將決定你如何框定問題、你將選擇哪些算法、你將使用哪種性能指標來評估你的模型,以及你將花費多少精力來調整它。
老板回答說,你的模型的輸出(對一個地區房價中位數的預測)將連同許多其他信息一起輸入到另一個機器學習系統(見圖2-2)[2]。這個下游系統將決定在給定的區域是否值得投資。做到這一點至關重要,因為它直接影響收入。

圖2-2:用于房地產投資的機器學習流水線
下一個要問老板的問題是當前的解決方案是什么樣的(如果有的話)。當前的情況往往會給你一個績效參考,以及如何解決問題的見解。你的老板回答說,地區房價目前是由專家手動估算的:一個團隊收集有關地區的最新信息,當他們無法得到房價中位數時,會使用復雜的規則進行估算。
這既費錢又費時,估算也不好。在設法找出實際房價中位數的情況下,他們通常會意識到估計偏差會超過30%。這就是為什么公司認為,在給定有關該地區的其他數據的情況下,訓練一個模型來預測該地區的房價中位數會很有用。人口普查數據看起來是一個很好的數據集,可以用于此目的,因為它包括數千個地區的房價中位數以及其他數據。
流水線
一系列數據處理組件稱為數據流水線。流水線在機器學習系統中非常常見,因為有大量數據需要操作并且需要應用很多的數據轉換。
組件通常是異步運行的。每個組件都會拉取大量數據,對其進行處理,然后將結果輸出到另一個數據存儲器中。然后,一段時間后,流水線中的下一個組件拉取此數據并給出自己的輸出。每個組件都是相當獨立的:組件之間的接口就是數據存儲。這使得系統易于掌握(借助于數據流圖),不同的團隊可以專注于不同的組件。此外,如果一個組件發生故障,下游組件通常可以僅使用損壞組件的最后輸出繼續正常運行(至少一段時間)。這使得架構非常健壯。
另外,如果沒有實施適當的監控,損壞的組件可能會在一段時間內被忽視。數據變得陳舊,整個系統的性能會下降。
有了所有這些信息,你現在就可以開始設計你的系統了。首先,確定模型需要什么樣的訓練監督:它是監督學習、無監督學習、半監督學習、自監督學習還是強化學習任務?它是分類任務、回歸任務還是其他任務?你應該使用批量學習還是在線學習技術?在繼續閱讀之前,請暫且先嘗試自己回答這些問題。
你找到答案了嗎?讓我們來看看。這顯然是一個典型的監督學習任務,因為模型可以用已標記的樣例來進行訓練(每個實例都有預期的輸出,即該地區的房價中位數)。這是一個典型的回歸任務,因為模型被要求預測一個值。更具體地說,這是一個多元回歸問題,因為系統使用多個特征進行預測(地區人口、收入中位數等)。這也是一個單變量回歸問題,因為我們只是試圖預測每個地區的單個值。如果我們試圖預測每個地區的多個值,那將是一個多元回歸問題。最后,沒有連續的數據流進入系統,所以沒有特別需要來對快速變化的數據做調整,而且數據足夠小,可以放在內存中,所以普通的批量學習應該就能勝任。
如果數據量很大,你可以將批量學習工作拆分到多個服務器(使用MapReduce技術)或使用在線學習技術。
2.2.2 選擇性能指標
下一步是選擇性能指標。回歸問題的典型性能度量是均方根誤差(Root Mean Square Error,RMSE)。它給出了系統在其預測中通常會產生多大誤差,并為較大的誤差賦予較高的權重。公式2-1顯示了計算RMSE的數學公式。
公式2-1:均方根誤差

符號
這個公式引入了幾個非常常見的機器學習符號,我將在本書中使用這些符號:
· m是你測量RMSE的數據集中的實例數。
◆ 例如,如果你在2000個地區的驗證集上評估RMSE,則m=2000。
· x(i)是數據集中第i個實例的所有特征值(不包括標簽)的向量,y(i)是它的標簽(該實例的期望輸出值)。
◆ 例如,如果數據集中的第一個地區位于經度-118.29°,緯度33.91°,居民有1416人,收入中位數為38 372美元,房屋價值中位數為156 400美元(暫時忽略其他特征),那么

和
y(1)=156 400
· X是一個矩陣,包含數據集中所有實例的所有特征值(不包括標簽)。每個實例有一行,第i行等于x(i)的轉置,記為(x(i)))?[3]。
◆ 例如,如果第一個地區如前所述,則矩陣X如下所示:

· h是系統的預測函數,也稱為假設。當給系統一個實例的特征向量x(i)時,它會輸出該實例的預測值。
◆ 例如,如果系統預測第一區的房價中位數為158 400美元,則。該地區的預測誤差為
。
· RMSE(X,h)是使用假設h在樣例集上測量的代價函數。
我們對標量值(例如m或y(i))和函數名稱(例如h)使用小寫斜體,對向量(例如x(i))使用小寫粗斜體,對矩陣(例如X)使用大寫粗斜體。
雖然RMSE通常是回歸任務的首選性能度量,但在某些情況下,你可能更喜歡使用其他函數。例如,假設有很多異常地區。在這種情況下,你可以考慮使用平均絕對誤差(Mean Absolute Error,MAE,也稱為平均絕對偏差),見公式2-2:
公式2-2:平均絕對誤差

RMSE和MAE都是衡量兩個向量(預測向量和目標向量)之間距離的方法。各種距離度量或范數是可能的:
· 計算平方和的根(RMSE)對應于歐幾里得范數:這是我們都熟悉的距離概念。它也被稱為?2范數,記為‖·‖2(或簡稱為‖·‖)。
· 計算絕對值之和(MAE)對應于?1范數,記為‖·‖1,這有時被稱為曼哈頓范數,因為如果你只能沿著正交的城市街區行動,那么它會測量城市中兩點之間的距離。
· 一般而言,包含n個元素的向量v的?k范數定義為。?0給出向量中的非零元素的數量,?∞給出向量中的最大絕對值。
范數指數越高,它就越關注大值而忽略小值。這就是RMSE比MAE對異常值更敏感的原因。但是當異常值呈指數級減少時(例如在鐘形曲線中),RMSE表現非常好,并且通常是首選。
2.2.3 檢查假設
最后,列出并驗證到目前為止(由你或其他人)所做的假設是一種很好的做法。這可以幫助你盡早發現嚴重的問題。例如,你的系統輸出的地區價格被輸入到下游的機器學習系統中,并且你假設這些價格將被原樣使用。但是,如果下游系統將價格轉換為類別(例如,“便宜”“中等”或“昂貴”),然后使用這些類別而不是價格本身呢?在這種情況下,得到完全正確的價格根本不重要,你的系統只需要獲得正確的類別。如果是這樣,那么問題應該被定義為分類任務,而不是回歸任務。你肯定不想在回歸任務上工作幾個月后才發現這一點。
幸運的是,在與負責下游系統的團隊交談后,你確信他們確實需要實際的價格,而不僅僅是類別。很好!一切就緒,指示燈是綠燈,那現在可以開始編程了!