15分鐘開啟你的機器學習之旅——隨機森林篇

15分鐘開啟你的機器學習之旅——隨機森林篇

新智元編譯

15分鐘開啟你的機器學習之旅——隨機森林篇

機器學習模型可用於提高效率,識別風險或發現新的機會,並在許多不同領域得到應用。它們可以預測一個確定的值(e.g.下週的銷售額),或預測分組,例如在風險投資組合中,預測客戶是高風險,中等風險還是低風險。

值得注意的是,機器學習不是在所有問題上都工作得非常好。如果模式是新的,模型以前沒有見過很多次,或者沒有足夠的數據,機器學習模型的表現就不會很好。此外,機器學習雖然可以支持各種用例,但仍然需要人類的驗證、感覺檢查和專門領域知識。

話雖如此,我們可以通過解決上述用例之一來看看機器學習可以實現哪些目標。讓我們通過機器學習技術的一個基本應用,看看將一組客戶數據轉變為風險水平評估這個預測涉及了哪些過程。

訓練模型

我們可以使用分類模型——預測每個項分別屬於哪個類或組。可以很好地實現這個任務的一類算法是隨機森林。這種類型的模型是基於決策樹,即一種使用不同的變量(有關客戶的信息)來分割一組對象(在這個用例中是客戶),並繼續分割,直到每個對象都被放置到特定的類別。隨機森林是這樣的決策樹的集合。使用多個樹可以降低過擬合(模型對於第一組特定的訓練數據集工作得非常好,但對後續數據集工作不好)的風險。

創造像這樣複雜的模型似乎令人望而生畏。但好消息是,許多語言都有預構建這種類型的模型的庫。在這個用例下,我使用的是python庫scikit-learn(以及用於管理數據集的pandas和numpy庫)。

在繼續之前,請確保你已經安裝了Python(我使用的是Python2),並且在上面提到的3個包裝中加載。這個可以在終端做,用pip安裝pandas(numpy和sklearn也是一樣)。

下面的示例都使用 Jupyter Notebook,這是數據科學家很常用的工具。相同的代碼段直接在Python控制檯或其他任何Python IDE中工作。

導入的語句使庫對當前的段可用。然後,繼續將數據從csv文件加載到dataframe(這是pandas使用的特定格式的數據結構),然後添加標題名字。

15分鐘開啟你的機器學習之旅——隨機森林篇

現在,數據保存在 pandas 的 dataframe(df),如下圖所示,選擇前5行作為樣本。

15分鐘開啟你的機器學習之旅——隨機森林篇

為了讓模型進行預測,需要“訓練”。也就是說,模型被顯示一組已經具有相關分類的數據。從這些數據,模型可以瞭解有關數據主體(在這個case是客戶)本身的信息與它的標籤(高風險、中風險、低風險)之間的關係。

在隨機森林模型的情況下,是通過數據集特徵來對數據進行劃分或分割,從而找到相關性。例如,根據“使用的設備數量”來進行劃分,可以把使用一個設備的和使用兩個設備的分成兩組(根據數據集的基數,可能有兩個以上的組)。進一步的分類要使用不同的信息,直到可以將所有記錄劃分到最終的類別(在這個case是風險級別)。

準備訓練集和測試集

模型訓練好之後,使用模型未遇見過的其他數據對其進行測試。新的數據已經沒有原始標籤,要求模型自己去預測值。

為了實現這一點,數據集需要分成兩部分。一部分用於訓練,另一部分用於測試。下面的代碼段為每個觀察值隨機分配1到100之間的值,並將分配到低於70的隨機數的那些行分到訓練集,其餘的作為測試集。因此,大約70%的數據用於訓練。在每個數據集print一個值,可以顯示這是有效的。

15分鐘開啟你的機器學習之旅——隨機森林篇

現在,應該為這個模型準備好訓練集。創建一個變量來保存對特徵(有助於確定最終類別的信息)的引用和另一個變量來保存類別本身。

首先,為類別創建變量。下面示例中的變量 train_labels 保存了數據集中的risk_label 列的內容。這些是風險級別的“高”,“中”或“低”,但是使用“因數分解”函數轉變為數字(0, 1, 2)。

15分鐘開啟你的機器學習之旅——隨機森林篇

接下來,特徵的名稱被捕捉到一個單獨的變量中,即下面示例的columns_for_features。同時,隨機森林分類器被創建並存儲在名為classifier 的變量中。

現在,訓練模型的一切都準備好了。分類器有一個函數 fit,通過訓練數據集(train_df)被告知要注意的行,以及訓練標籤,或已經可用的類別。

15分鐘開啟你的機器學習之旅——隨機森林篇

所以現在模型可以訓練了。它將會確定“features”與“labels”之間的關係,並且只有當features可用時才能確定數據未知的label。

測試模型

使用測試數據集,可以測試模型的執行性能。分類器有一個叫做predict的函數,它從前面準備的test_df數據集傳遞特徵數據。它的輸出是一組整數(0, 1, 2),分別表示標籤('high','med','low'),即模型預測出的類別。

15分鐘開啟你的機器學習之旅——隨機森林篇

這很令人興奮,但意義不是很大。幾個快速步驟可以將值解碼迴文本標籤,然後將模型得出的類別與測試數據集中的原始標籤進行比較。

15分鐘開啟你的機器學習之旅——隨機森林篇

下面的表格顯示了每個真實的組與預測組的比較。這裡顯示的是,對於高風險的10個觀察值,該模型預測其中9個是高風險,1個是中等風險。對於18個的低風險的觀察值,該模型的預測完全一致。對於最後10箇中等風險的觀察值,模型的預測有7項正確,另外3項被錯誤地預測為高風險。

15分鐘開啟你的機器學習之旅——隨機森林篇

這是一個不錯的結果。幾個小步驟,我們就能夠創建一個模型,訓練它識別數據中的模式,並基於這些訓練,模型能夠預測新數據的類別。這意味著,你的公司可能不再需要人去人工審查所有的客戶資料,你可以簡化過程並只關注高風險客戶。

在這個case中,分類器預測的是風險水平。同樣的技術也可以應用於預測客戶流失,機器故障以及其他各種業務問題。

在實際應用中,這個過程要花更多的時間,但這是理解機器學習的基本原理和關鍵步驟的很好的第一步。

此外,使用預先準備好的數據集有很大好處。在大多數情況下,要做大量的工作將數據變為易於建模的形式之後,機器學習的榮耀才會顯現。這些工作包括數據清洗,特徵選擇,轉換和格式化等。

原文:https://www.theregister.co.uk/2017/06/21/15_minutes_in_machine_learning/

點擊閱讀原文查看新智元招聘信息

相關推薦

推薦中...