機器學習應用實踐難?看完這十大訣竅瞬間懂了!
點選上方 ⬆ 藍字關注七月線上實驗室
來源InfoWorld | 作者Alexander Gray
對於開發人員而言,基於雲的機器學習工具帶來了使用機器學習創造和提供新的功能的可能性。然而,開發者想要在它們的應用程式中融入機器學習,通常會犯一些錯誤,本文列了十條注意點以饗讀者。
在提供發現埋藏資料深層的模式的能力上,機器學習有著潛在的能力使得應用程式更加的強大並且更能響應使用者的需求。精心調校好的演算法能夠從巨大的並且互不相同的資料來源中提取價值,同時沒有人類思考和分析的限制。對於開發者而言,機器學習為應用業務的關鍵分析提供了希望,從而實現從改善客戶體驗到提供產品推薦上升至超個性化內容服務的任何應用程式。
像Amazon和Micorosoft這樣的雲供應商提供雲功能的機器學習解決方案,承諾為開發者提供一個簡單的方法,使得機器學習的能力能夠融入到他們的應用程式當中,這也算是最近的頭條新聞了。承諾似乎很好,但開發者還需謹慎。
對於開發人員而言,基於雲的機器學習工具帶來了使用機器學習創造和提供新的功能的可能性。然而,當我們使用不當時,這些工具會輸出不好的結果,使用者可能會因此而感到不安。測試過微軟年齡檢測機器學習工具(www.how-old.net)的人都會發現,伴隨即插即用的易用性而來的是主要的精度問題——對於關鍵應用程式或者是重大決策,它應該不值得信賴。
想要在應用程式中成功地融入機器學習的開發者,需要注意以下的一些關鍵要點:
1.演算法使用的資料越多,它的精度會更加準確,所以如果可能要儘量避免抽樣。機器學習理論在預測誤差上有著非常直觀的描述。簡而言之,在機器學習模型和最優預測(在理論上達到最佳可能的誤差)之間的預測誤差的差距可以被分解為三個部分:
由於沒有找到正確函式形式的模型的誤差
由於沒有找到最佳引數的模型的誤差
由於沒用使用足夠資料的模型的誤差
如果訓練集有限,它可能無法支撐解決這個問題所需的模型複雜性。統計學的基本規律告訴我們,如果我們可以的話,應該利用所有的資料而不是抽樣。
2. 對給定的問題選擇效果最好的機器學習演算法是決定成敗的關鍵。例如,梯度提升樹(GBT)是一個非常受歡迎的監督學習演算法,由於其精度而被業內開發人員廣泛使用。然而,儘管其高度受歡迎,我們也不能盲目的把這種演算法應用於任何問題上。相反,我們使用的演算法應該是能夠最佳地擬合數據特徵同時能夠保證精度的演算法。
為了證明這個觀點,嘗試做這樣一個實驗,在資料集 the popular text categorization dataset rcv1 上測試GBT演算法和線性支援向量機(SVM)演算法,並比較兩者的精度。我們觀察到在這個問題上,就錯誤率而言,線性SVM要優於GBT演算法。這是因為在文字領域當中,資料通常是高維的。一個線性分類器能夠在N-1維當中完美的分離出N個樣本,所以,一個樣本模型在這種資料上通常表現的更好。此外,模型越簡單,通過利用有限的訓練樣本來避免過擬合的方式學習引數,並且提供一個精確的模型,產生的問題也會隨之越少。
另一方面,GBT是高度非線性的並且更加強大,但是在這種環境中卻更難學習並且更容易發生過擬合,往往結果精度也較低。
3. 為了得到一個更好的模型,必須選擇最佳的的演算法和相關的引數。這對於非資料科學家而言可能不容易。現代的機器學習演算法有許多的引數可以調整。例如,對於流行的GBT演算法單獨的就有十二個引數可以設定,其中包括如何控制樹的大小,學習率,行或列的取樣方法,損失函式,正則化選項等等。
一個特有的專案需要在給定的資料集上為每一個引數找到其最優值並且達到最精準的精度,這確實不是一件容易的事。但是為了得到最佳的結果,資料科學家需要訓練大量的模型,而直覺和經驗會幫助他們根據交叉驗證的得分,然後決定使用什麼引數再次嘗試。
4. 機器學習模型會隨著好的資料而變得更好,錯誤的資料收集和資料處理會降低你建立預測和歸納的機器學習模型的能力。根據經驗,建議仔細審查與主題相關的資料,從而深入瞭解資料和幕後資料的生成過程。通常這個過程可以識別與記錄、特徵、值或採樣相關的資料質量問題。
5. 理解資料特徵並改進它們(通過創造新的特徵或者去掉某個特徵)對預測能力有著高度的影響。機器學習的一個基本任務就是找到能夠被機器學習演算法充分利用的豐富特徵空間來替代原始資料。例如,特徵轉換是一種流行的方法,可以通過在原始資料的基礎上使用數學上的轉換提取新的特徵來實現。最後的特徵空間(也就是最後用來描述資料的特徵)要能更好的捕獲資料的多複雜性(如非線性和多種特徵之間的相互作用),這對於成功的學習過程至關重要。
6. 在應用中,選擇合適的靈感來自商業價值的目標函式/損失函式對於最後的成功至關重要。幾乎所有的機器學習演算法最後都被當成是一種優化問題。根據業務的性質,合理設定或調整優化的目標函式,是機器學習成功的關鍵。
以支援向量機為例,通過假設所有錯誤型別的權重相等,對一個二分類問題的泛化誤差進行了優化。這對損失敏感的問題並不合適,如故障檢測,其中某些型別的錯誤比重可能比其它型別的要高。在這種情況下,建議通過在特定的錯誤型別上,增加更多的懲罰來解釋它們的權重,從而調整SVM的損失函式。
7. 確保正確地處理訓練資料和測試資料。如此當在生產中部署該模型時,測試資料能夠模擬輸入資料。例如,我們可以看到,這對於時間依賴性資料是多麼的重要。
在這種情況下,使用標準的交叉驗證方法進行訓練,調整,那麼測試模型的結果可能會有偏差,甚至會不準確。這是因為在實施平臺上它不能準確的模擬輸入資料的性質。為了糾正這一點,在部署時我們必須仿照模型來部署使用。我們應該使用一個基於時間的交叉驗證,用時間較新的資料來驗證訓練模型。
8. 部署前理解模型的泛化誤差。泛化誤差衡量模型在未知資料上的效能好壞。因為一個模型在訓練資料上的效能好並不意味著它在未知的資料上的表現也好。一個精心設計的模擬實際部署使用的模型評估過程,是估計模型泛化誤差所需要的。
一不留心就很容易違反交叉驗證的規則,並且也沒有一種顯而易見的方法來表現交叉驗證的非正確性,通常在你試圖尋找快捷方式計算時發生。在任何模型部署之前,有必要仔細注意交叉驗證的正確性,以獲得部署效能的科學評估。
9. 知道如何處理非結構化和半結構化資料。如文字、時間序列、空間、圖形或者影象資料。大多數機器學習演算法在處理特徵空間中的資料時,一個特徵集代表一個物件,特徵集的每一個元素都描述物件的一個特點。在實際當中,資料引進時並不是這種格式化的形式,往往來自於最原始的格式,並且最後都必須被改造成機器學習演算法能夠識別的理想格式。比如,我們必須知道如何使用各種計算機視覺技術從影象中提取特徵或者如何將自然語言處理技術應用於影片文字。
10. 學會將商業問題轉換成機器學習演算法。一些重要的商業問題,比如欺詐檢測、產品推薦、廣告精準投放,都有“標準”的機器學習表達形式並且在實踐當中取得了合理的成就。即使對於這些眾所周知的問題,也還有鮮為人知但功能更強大的表達形式,從而帶來更高的預測精度。對於一般在部落格和論壇中討論的小例項的商業問題,適當的機器學習方法則不太明顯。
如果你是一個開發者,學習這十個通往成功的訣竅可能似乎是一個艱難的任務,但是不要氣餒。事實上,開發者不是資料科學家。認為開發人員可以充分利用所有的機學習工具是不公平的。但是這並不意味著開發人員沒有機會去學習一些有水準的資料科學從而改進他們的應用。隨著適當的企業解決方案和自動化程度的提高,開發人員可以做模型構建到實施部署的一切事情,使用機器學習最佳實踐來保持高精度。
自動化是在應用程式中擴充套件機器學習的關鍵。即使你能夠供得起一批小的資料科學家團隊和開發者攜手合作,也沒有足夠的人才。像Skytree的AutoModel(自動化模型)能夠幫助開發者自動地確定最佳的引數並且使得演算法得到最大的模型精度。一個易於使用的介面可以引導開發人員通過訓練加工,調整並且測試模型來防止統計上的錯誤。
自動化機器學習過程,有許多方式,包括資料科學家或開發者的人工智慧原理,允許演算法去思考,學習並且承受更多的建模重任。也就是說,認為資料科學家能夠從機器學習中解耦是錯誤的,特別是在關鍵任務模型上。謹防這種能夠簡單使用機器學習功能的承諾,即能夠在不需要正確複雜的思考下或者可擴充套件的應用技術下就使用機器學習——這通常並不會得到高預測精度和機器學習提供的高商業價值結果。更糟糕的是,在應用程式中使用不好的模型實際上可能會適得其反,並迅速在其使用者之間建立不信任的產品或服務。
End
今日學習推薦
我們的【機器學習集訓營第六期】正在火熱報名中,10月22日開班,三個月挑戰年薪四十萬,甚至更高薪資!
我們【機器學習集訓營第四期】學員,更是拿到了高薪offer,和大家分享一下他們的面試經驗和學習心得(點選下方直接檢視):
本月底最後3天優惠價,10.1開始即將漲價500元,有意的親們抓緊時間嘍,報名即送兩門輔助課程《機器學習工程師 第八期》、《深度學習 第三期》,更好的助力你學習機器學習。且兩人及兩人以上組團還能各減500元,想組團/諮詢者可新增微訊號:julyedukefu_02
長按識別二維碼
更多資訊
請戳一戳
往期推薦
拼團,諮詢,檢視課程,請點選【閱讀原文】
↓↓↓