學習機器學習時需要儘早知道的三件事
作者簡介:
Peadar Coyle,資料科學家,開源軟體貢獻者,演講家與作家。先後就職於 Amazon、Vodafone、JOB TODAY、Channel 4、Elevate Direct 等,在資料驅動解決方案設計開發中具有豐富的經驗。
我已經在學術界和工業界進行了許多年的機器學習建模工作,在看了一系列討論“大資料”實用性問題的優秀視訊 Scalable ML 後,我開始思考總結一些在學習機器學習時,我希望能夠儘早明白的事情。視訊來源於 Mikio Braun,介紹了 Scala 和 Spark 相關的知識。
我希望在學習機器學習時能夠儘早明白的事情有三項:
- 將模型應用到產品中並不是一件簡單的小事;
- 在課本中我們很難學習到真正的特徵選擇和特徵提取技巧;
- 模型評估階段非常重要。
下面讓我一個一個地介紹它們。
1. 將模型應用到產品中並不是一件簡單的小事
我在 Data-Product 上有一場介紹如何將常微分方程應用到產品中的演講。之後我花了好一段時間才意識到,自己一個人來處理包括模型衰退、產品中模型評價、開發與運維溝通等事務是多麼的困難。Yhat 的 ScienceOps 是針對這個問題的一個解決方案。一開始我並沒有意識到它有多棒,現在我發現我很難在市場中找到該產品的直接競爭者,我真的覺得他們正在解決這個非常重要的問題。漸漸地,我意識到我沒有聰明到可以處理運維成員負責的事務——所以我很樂意將這項工作外包。
2. 在課本中我們很難學習到真正的特徵選擇和特徵提取技巧
特徵選擇和提取方法和技巧常常無法從課本中學習。這些技巧只能從像 Kaggle 競賽或現實世界中的專案中學習,甚至有時候需要實際應用這些技巧和方法才能學會它們。而這些工作在整個資料科學專案流程中佔據了相當一部分比重。
3. 模型評估階段非常重要
除非你已經將模型應用到測試集資料上了,否則你都不能說已經進入到預測分析階段。像交叉驗證、評估指標等評估技巧都是非常寶貴的,因為它們只需將你的資料分離成測試集和訓練集。但是實際生活通常並不會將已經定義好測試集、訓練集的資料給你,所以將真實世界中的資料劃分為測試資料和訓練資料,是一項充滿創造性的工作,其中可能包含許多情感因素。在 Dato 上有許多討論模型評估的優秀文章。
我認為 Mikio Braun 對訓練集和測試集的解釋值得一讀。我也很喜歡他畫的圖並將其包含在文中,方便不熟悉訓練集和測試集概念的讀者理解。
我們在論文、會議甚至在討論我們解決問題時所用的方法的時候,經常忽略了模型評價。“我們在其中使用了 SVM ”這句話並沒有告訴我任何資訊,這沒有告訴我你的資料來源,你選擇的特徵,你的模型評估方法,你如何將其應用到產品中,以及你在其中如何使用交叉驗證或模型查錯。我認為我們需要更多關於機器學習中這些“骯髒”的方面問題的討論。
我的朋友 Ian 在 Data Science Delivered 上有一個很好的筆記,適合需要為真實情況建立機器學習模型的任何層次的人員閱讀。同時也適合希望僱傭資料科學家的招聘人員或者與資料科學團隊打交道的經理閱讀——如果你正在找人詢問“你是如何處理這些骯髒的資料的”。
相關連線:
Scalable ML:
https://www.safaribooksonline.com/library/view/scalable-machine-learning/9781491939437/video233428.html
Data-Products:
http://pyvideo.org/pycon-italia-2015/how-to-get-data-science-models-into-production-on.html
ScienceOps:
http://www.yhathq.com/
Dato:
http://blog.dato.com/how-to-evaluate-machine-learning-models-the-pitfalls-of-ab-testing
Mikio Braun:
http://blog.mikiobraun.de/2015/03/three-things-about-data-science.html
(本文資料工匠有譯文:https://zhuanlan.zhihu.com/p/20235029)
Data Science Delivered:
https://github.com/ianozsvald/data_science_delivered
相關文章
- 學習swoole之前,你需要知道的幾件事
- 我希望自己儘早知道的 7 個 JavaScript 怪癖JavaScript
- 我希望自己儘早知道的7個JavaScript怪癖JavaScript
- 成為優秀Angular開發者所需要學習的19件事Angular
- 做資料分析需要學習機器學習嗎?機器學習
- 設計iOS應用時需要知道的 5 件事iOS
- SQL Server DBA需要知道的三件事XTSQLServer
- Python學習需要多長時間?學習週期Python
- 案例學習 – 為Soundwave設計Watch應用時學到的五件事
- 案例學習 - 為Soundwave設計Watch應用時學到的五件事
- 學習編碼需要多長時間?
- 機器學習個人筆記(三)之無監督學習機器學習筆記
- 學習Python之前,必須要搞定這三件事情!Python
- 機器學習中的元學習機器學習
- 機器學習-整合學習機器學習
- 如何學習機器學習機器學習
- Flex開發者需要知道的10件事Flex
- Flash開發者需要知道的10件事
- 【Python機器學習實戰】決策樹與整合學習(三)——整合學習(1)Python機器學習
- 機器學習整合學習—Apple的學習筆記機器學習APP筆記
- Java需要學習的東東Java
- Linux運維學習需要多長時間?都有哪些學習方式?Linux運維
- 學習和使用PHP應該注意的10件事PHP
- 機器學習的學習筆記1機器學習筆記
- 精讀《不再需要 JS 做的 5 件事》JS
- 機器學習之學習速率機器學習
- 機器學習學習筆記機器學習筆記
- 機器學習:監督學習機器學習
- 機器學習&深度學習之路機器學習深度學習
- 安裝完最小化 RHEL/CentOS 7 後需要做的 30 件事情(三)CentOS
- 學習大資料需要掌握的知識,需要學習的資料技術大資料
- 關於MySQL應該學習的6件事MySql
- python資料探勘需要的第三方庫學習Python
- 小白如何學習大資料?需要多長時間大資料
- 機器學習和深度學習的區別機器學習深度學習
- 機器學習——監督學習&無監督學習機器學習
- 學習Linux運維需要多長時間?學會要多久?Linux運維
- 關於MongoDB你需要知道的幾件事MongoDB