mhout in action : 13.4.1 階段1(訓練分類模型)的流程

邊看邊譯.

13.4.1 階段1(訓練分類模型)的流程

 

在分類項目的第一個階段, 你需要把目標變量記在心裏, 這既能幫助你選擇合適的歷史數據(用於訓練過程), 也能幫你選擇合適的算法. 這些選擇密切相關.

在下面的討論中, 我們將考察幾個特定的例子,  在這些例子中,你選擇的特性(feature)將會影響哪一個mahout學習算法在你的分類器中可以工作。

爲目標變量定義分類:

定義目標變量,帶出定義目標變量分類。目標變量並不是一個開放集合。你對分類的選擇,會影響你對學習算法的選擇,因爲一些算法只適用於二元目標變量。強烈推薦較少的目標變量分類,如果你可以把目標變量分類減少到只有兩個值,就可以使用更多的學習算法。

如果目標變量“抵制”縮減爲簡單形式,你可能需要建立多個分類系統, 每個針對某個方面的目標變量。在最終的系統中,你可以把上述分類系統的輸出結合,生成你需要的選擇或預測。

收集歷史數據

你選擇的歷史數據源會因爲需要通過已知值(爲目標變量使用的)收集歷史數據而被部分地導向。對於某些問題,困難在於確定目標變量的值。

俗語“垃圾導向垃圾”用到這裏很貼切,需要特別關注確保歷史數據的目標變量的值是正確的。許多忠實複製錯誤目標變量或者數據收集過程機制的模型都已經有了,你不肯定不想再建一個。

定義預測變量

選擇好目標變量、定義了目標變量的值的集合之後,你需要定義預測變量。這些變量是從培訓和測試例子中抽取的特徵的具體編碼。

再次強調,你需要檢查你的例子,確信它們包含有用的特徵,這些特徵的值在記錄中可以保存成合適的格式。就象你在圖13.3中看到的, 預測變量出現在培訓數據、測試數據和生產數據的記錄中。

警告 選擇和定義預測變量中的錯誤,將在預測變量中包含所謂的“目標泄露”問題。定義預測變量時一個重要的考慮就是避免“目標泄露”。正如其名,目標泄露是一個缺陷;在選擇預測變量時,該缺陷引入了與目標變量無關的數據。該缺陷不能與在訓練記錄中加入目標變量混爲一談。

目標泄露嚴重影響分類系統的準確性。當你告訴分類器(classifier)目標變量是預測變量,這個問題會相對明顯,顯而易見的錯誤更易傷人。

目標泄露也可能不易察覺。設想你在建立一個垃圾郵件攔截器,你把垃圾郵件例子和非垃圾郵件的例子保存在不同的文件中,然後在每個文件中爲樣本順序加標籤(label the examples sequentially within each file)。同一文件的樣本的連續的序號會侷限在一個範圍內並擁有相同的垃圾郵件狀態和非垃圾郵件狀態。這種類型的目標泄露,許多分類算法會很快計算出spam和non-spam序號的範圍,並找到一個特徵(因爲該特徵,在訓練數據中,表現得完全可靠)。這就是問題所在。當你把新的數據輸入模型,該模型完全基於序號,模型的最佳做法就是啥也不做(throw up its hands), 因爲新樣本中的序號會在前面所說的序號範圍之外。最可能的情況,模型會把新的樣本歸於任一個有最高序號的範圍。

目標泄露有可能很隱蔽,難於發現。最好的建議是,對效果太好的模型保持懷疑。

例1:使用位置作爲預測變量

讓我們看一個簡單的例子,使用綜合數據舉例說明怎麼選擇預測變量以使Mahout模型準確預測目標變量。圖13.4中的數據是歷史數據的集合。假定你要搜索填充圖形--顏色填充是你的目標變量。對這個問題,什麼特徵是最好的預測變量呢?

圖13.4 使用位置區分顏色填充形狀: 本例的歷史數據中,目標變量是顏色填充,可以用做預測變量的特徵包括形狀和位置。位置看起來比較靠普,水平(X)座標就足夠了。形狀並不敏感。

 

對分類問題,你必須爲你的目標變量選擇分類,當前實例的是顏色填充。 顏色填充是一個明確的分類,有兩個可能的值,你可以打上“填充”和“未填充”標籤。或者你可以把目標變量設置爲一個問題“該圖形填充了嗎?”,答案是“yes”,“no”。

任何事都不要想當然:要檢查歷史數據,確信該數據包含目標變量。這裏這一點比較明顯,確信無誤(好!),但是現實世界的情況,並不總是明顯的。

現在你必須選擇用作預測變量的特徵。什麼特徵比較合適呢?“顏色填充”已經out了(它是目標變量),但你可以使用位置或者形狀作爲變量。你可以通過x,y座標描述位置。你可以爲每一個樣本創建一個記錄,包括目標變量的字段、你考察的預測變量的字段。圖13.5顯示了兩個訓練樣例的記錄。(這個例子的完整數據可以在Mahout的例子模型中找到。)

再次審視圖13.4中的歷史數據,你會發現,雖然訓練數據擁有位置和形狀信息,但是x座標足以區分填充和非填充圖形。形狀和y座標則都做不到。

小提示: 並非所有特徵對每一個分類問題都有用。特定環境和你要解決的問題確定哪些特徵可以成爲預測變量。研究你的數據很關鍵。

當你設計分類系統的時候,你會根據你的經驗選擇最有效的特徵,你的模型的準確率會說明你的選擇是否明智。但是越少包含多餘或者無用的特徵,你的分類器的越準確。例如,圖13.4中的數據,你最好只使用x座標,忽略y座標和形狀。

圖13.5 兩個訓練數據記錄。  圖13.4中的數據的記錄擁有以下字段:目標變量的,預測變量的。在這個例子中,與位置相關的值(x,y座標)和形狀相關的值包含在兩條樣本的每一條中。

例2:不同數據需要不同的預測變量

因爲新的數據集證明,與以前的數據集擁有同樣的特徵,並不意味着你應該使用與之前數據集同樣的特徵,作爲預測變量。圖13.6說明了這個觀點。這裏你可以看到另一個歷史數據的集合,該集合擁有與圖13.4中的數據相同的特徵。但是,在此例中,x或者y座標都不能預測圖形是否填充。位置不在有用,但是形狀現在成了有用的特徵。

本例中,預測變量(形狀)的特徵有三個值(圓形、三角形、方形)。如果必要,你還可以通過方向進一步區分形狀(方形-->鑽石形;朝上三角形--〉朝下三角形)。

給訓練模型選擇學習算法

在任何項目中,考慮到參數,諸如訓練數據的量、預測變量的特性、目標變量的分類數,你都必須選擇使用哪一個算法。Mahout的分類算法包括:樸素貝葉斯,補充樸素貝葉斯隨機梯度下降(SGD隨機森林。樸素貝葉斯,補充樸素貝葉斯隨機梯度下降(SGD)在第14章詳述(14.5節)。

 

 

 

 

 

 

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章