5. 理解數(shù)據(jù)特征并改進它們(通過創(chuàng)造新的特征或者去掉某個特征)對預測能力有著高度的影響。機器學習的一個基本任務就是找到能夠被機器學習算法充分利用的豐富特征空間來替代原始數(shù)據(jù)。例如,特征轉換是一種流行的方法,可以通過在原始數(shù)據(jù)的基礎上使用數(shù)學上的轉換提取新的特征來實現(xiàn)。最后的特征空間(也就是最后用來描述數(shù)據(jù)的特征)要能更好的捕獲數(shù)據(jù)的多復雜性(如非線性和多種特征之間的相互作用),這對于成功的學習過程至關重要。
6. 在應用中,選擇合適的靈感來自商業(yè)價值的目標函數(shù)/損失函數(shù)對于最后的成功至關重要。幾乎所有的機器學習算法最后都被當成是一種優(yōu)化問題。根據(jù)業(yè)務的性質,合理設置或調整優(yōu)化的目標函數(shù),是機器學習成功的關鍵。
以支持向量機為例,通過假設所有錯誤類型的權重相等,對一個二分類問題的泛化誤差進行了優(yōu)化。這對損失敏感的問題并不合適,如故障檢測,其中某些類型的錯誤比重可能比其它類型的要高。在這種情況下,建議通過在特定的錯誤類型上,增加更多的懲罰來解釋它們的權重,從而調整SVM的損失函數(shù)。
7. 確保正確地處理訓練數(shù)據(jù)和測試數(shù)據(jù),如此當在生產中部署該模型時,測試數(shù)據(jù)能夠模擬輸入數(shù)據(jù)。例如,我們可以看到,這對于時間依賴性數(shù)據(jù)是多么的重要。在這種情況下,使用標準的交叉驗證方法進行訓練,調整,那么測試模型的結果可能會有偏差,甚至會不準確。這是因為在實施平臺上它不能準確的模擬輸入數(shù)據(jù)的性質。為了糾正這一點,在部署時我們必須仿照模型來部署使用。我們應該使用一個基于時間的交叉驗證,用時間較新的數(shù)據(jù)來驗證訓練模型。
8. 部署前理解模型的泛化誤差。泛化誤差衡量模型在未知數(shù)據(jù)上的性能好壞。因為一個模型在訓練數(shù)據(jù)上的性能好并不意味著它在未知的數(shù)據(jù)上的表現(xiàn)也好。一個精心設計的模擬實際部署使用的模型評估過程,是估計模型泛化誤差所需要的。
一不留心就很容易違反交叉驗證的規(guī)則,并且也沒有一種顯而易見的方法來表現(xiàn)交叉驗證的非正確性,通常在你試圖尋找快捷方式計算時發(fā)生。在任何模型部署之前,有必要仔細注意交叉驗證的正確性,以獲得部署性能的科學評估。
9. 知道如何處理非結構化和半結構化數(shù)據(jù),如文本、時間序列、空間、圖形或者圖像數(shù)據(jù)。大多數(shù)機器學習算法在處理特征空間中的數(shù)據(jù)時,一個特征集代表一個對象,特征集的每一個元素都描述對象的一個特點。在實際當中,數(shù)據(jù)引進時并不是這種格式化的形式,往往來自于最原始的格式,并且最后都必須被改造成機器學習算法能夠識別的理想格式。比如,我們必須知道如何使用各種計算機視覺技術從圖像中提取特征或者如何將自然語言處理技術應用于影片文本。
10. 學會將商業(yè)問題轉換成機器學習算法。一些重要的商業(yè)問題,比如欺詐檢測、產品推薦、廣告精準投放,都有“標準”的機器學習表達形式并且在實踐當中取得了合理的成就。即使對于這些眾所周知的問題,也還有鮮為人知但功能更強大的表達形式,從而帶來更高的預測精度。對于一般在博客和論壇中討論的小實例的商業(yè)問題,適當?shù)臋C器學習方法則不太明顯。
如果你是一個開發(fā)者,學習這十個通往成功的訣竅可能似乎是一個艱難的任務,但是不要氣餒。事實上,開發(fā)者不是數(shù)據(jù)科學家。認為開發(fā)人員可以充分利用所有的機學習工具是不公平的。但是這并不意味著開發(fā)人員沒有機會去學習一些有水準的數(shù)據(jù)科學從而改進他們的應用。隨著適當?shù)钠髽I(yè)解決方案和自動化程度的提高,開發(fā)人員可以做模型構建到實施部署的一切事情,使用機器學習最佳實踐來保持高精度。
自動化是在應用程序中擴展機器學習的關鍵。即使你能夠供得起一批小的數(shù)據(jù)科學家團隊和開發(fā)者攜手合作,也沒有足夠的人才。像Skytree的AutoModel(自動化模型)能夠幫助開發(fā)者自動地確定最佳的參數(shù)并且使得算法得到最大的模型精度。一個易于使用的接口可以引導開發(fā)人員通過訓練加工,調整并且測試模型來防止統(tǒng)計上的錯誤。
自動化機器學習過程,有許多方式,包括數(shù)據(jù)科學家或開發(fā)者的人工智能原理,允許算法去思考,學習并且承受更多的建模重任。也就是說,認為數(shù)據(jù)科學家能夠從機器學習中解耦是錯誤的,特別是在關鍵任務模型上。謹防這種能夠簡單使用機器學習功能的承諾,即能夠在不需要正確復雜的思考下或者可擴展的應用技術下就使用機器學習——這通常并不會得到高預測精度和機器學習提供的高商業(yè)價值結果。更糟糕的是,在應用程序中使用不好的模型實際上可能會適得其反,并迅速在其用戶之間建立不信任的產品或服務。