全文共4559字,預計學習時長12分鐘
用谷歌搜索「數據科學家的基本技能」,搜索結果的前幾位是一長串技術術語,叫做硬技能,包括Python、代數、統計和SQL等最普遍的技能。然後是軟技能,包括溝通能力、商業頭腦、團隊合作能力等。
假設你是具備以上所有能力的超人,從五歲起就開始寫代碼,是一位Kaggle大師,你的會議論文必將獲得最佳論文獎。但你的項目仍然極有可能難以達到成熟並成為完全合格的商業產品。
最近的研究估計,超過85%的數據科學項目無法投入生產。一些研究提出了許多失敗的原因。筆者甚至從未把所謂的基本技能作為潛在的原因。
是上面的技能不重要嗎?當然不是。硬技能和軟技能都至關重要。關鍵是它們是必要的,但僅僅掌握這些還不夠。此外,它們很受歡迎,出現在每條谷歌搜索中。因此,你可能已經知道自己是否需要提高數學水平或團隊合作能力。
筆者想談談對現在流行的硬技能和軟技能起補充作用的技能,可稱之為工程技能。在與真正的客戶一起構建真正的產品時,它們會極其有用。遺憾的是,數據科學家們很少學習工程技能,這有助於豐富行業經驗。但大多數初級數據科學家缺少這些技能。
工程技能與數據工程領域無關。用「工程技能」這個詞來將其與純粹的科學或研究技能進行區分。《劍橋詞典》裡對於engineering(工程)的解釋是「運用科學原理來設計和建造機器、結構和其他物品。」
本文中,工程是將科學轉化為產品的促成因素。如果沒有合適的工程技能,模型將繼續在預定義的數據集上運行。但他們永遠也無法找到真正的顧客。
重要卻經常被忽視的技能包括:
1.簡單性。確保你的代碼和模型是簡單的,但不是過分簡單化的。
2.魯棒性。你的假設是錯誤的。做個深呼吸,繼續編碼。
3.模塊化,分而治之。深入研究最小的問題,然後找到一個開源解決它。
4.採摘果實。不要只關注低掛的水果。但要確保你總是有物可挑。
簡單性
· 「如無必要,勿增實體」——奧卡姆的威廉
· 「簡單是終極的複雜」——達文西
· 「一切都應該儘可能簡單,但不要太簡單」——愛因斯坦
· 「專注和簡單一直是我的秘訣之一」——史蒂夫·賈伯斯
關於「簡單」的名人名言多得可以佔滿本文篇幅。研究人員、設計師、工程師、哲學家和作者們都讚揚這種簡單性,並表示簡單性本身具有價值。他們的理由變了,但是結論是不變的。達到完美的程度不是沒有什麼要添加的,而是沒有什麼要刪除的。
軟體工程師絕對意識到簡單性的價值。有很多書籍和文章是關於如何簡化軟體的。筆者記得KISS的原則(讓事情變得簡單易懂),這甚至在筆者本科的一門課中講授過。簡單的軟體維護成本較低,易於更改,並且不易出現錯誤。人們普遍認同這一點。
在數據科學中,情況大不相同。有很多文章,例如Kristian Bondo Hansen的《簡單的優點:算法交易中的機器學習模型》或Alfredo Gemma的《簡單性在數據科學革命中的作用》。但它們是例外,而不是規則。主流的數據科學家們並不在乎最好的時候,而在最壞的時候更喜歡複雜的解決方案。
在討論數據科學家通常不關心簡單性原則的原因,為什麼他們應該關心,以及如何處理這些問題之前,讓我們看看簡單性意味著什麼。劍橋詞典的解釋為,它的本質是易於理解或操作,捨棄不必要或多餘的東西或修飾。
筆者發現定義簡單性的最直觀方法是通過「否定法」,這與複雜性相反。劍橋詞典:複雜性是由許多相互連接的部分或元素組成的;錯綜複雜。雖然我們不能總說某事很簡單,但我們通常可以說某事很複雜。我們的目標是不要太複雜,也不要創造複雜的解決方案。
在數據科學中尋求簡單性的原因與在所有工程學科中都一樣。更簡單的解決方案成本要低得多。現實生活中的產品不是Kaggle競賽。要求不斷修改。當複雜的解決方案需要適應新條件時,很快就會成為維護人員噩夢。
不難理解,為什麼數據科學家,尤其是應屆畢業生,更喜歡複雜的解決方案。他們剛從學術環境中走出來,完成了畢業論文,甚至可能發表了論文。學術出版物的評判標準是準確性、數學巧妙性、新穎性、方法論,但很少以實用性和簡單性為標準。
一個複雜的想法將準確度提高了0.5%,這對於任何一個學生來說都是一個巨大的成功。同樣的想法對於數據科學家來說卻是失敗的。即使它的理論是正確的,也可能隱藏著將被證明是錯誤的潛在假設。在任何情況下,增量改進都不值得付出複雜性的代價。
那麼,如果你、你的老闆、同事或下屬喜歡複雜而「最佳」的解決方案,該怎麼辦?如果是你的老闆,你很可能註定失敗,最好開始找一份新工作。
魯棒性
俄羅斯文化中有一個「avos」的概念。維基百科將其描述為「盲目相信神的旨意,指望純粹的運氣」。「Avos」是卡車司機決定讓卡車超載的幕後黑手。它隱藏在任何非魯棒解決方案的背後。
什麼是魯棒性?或者具體地說,什麼是數據科學中的魯棒性?與我們討論最相關的定義是Mariano Scain論文中的「算法的魯棒性是假設模型和現實之間差異的敏感度」。對現實的不正確假設是數據科學家問題的主要來源。也是上述卡車司機問題的根源。
細心的讀者可能會說,魯棒性也是算法在執行過程中處理錯誤的能力。這是對的。但這與我們的討論不太相關。這是一個有明確解決方案的技術話題。
在前大數據時代和前深度學習時代,建立強大系統的必要性顯而易見。特徵和算法設計都是手動的。測試人員通常對成百上千個例子進行操作。即使是最聰明的算法創造者也不敢說他們能想到所有可能發生的情況。
大數據時代是否改變了魯棒性的本質?為什麼要在意是否可以使用代表所有可想像場景的數百萬數據樣本來設計、訓練和測試我們的模型?
結果表明,魯棒性仍然是一個重要且尚未解決的問題。每年頂級期刊都會發表關於算法魯棒性的論文來證明這一點,例如,《提高深度神經網絡的魯棒性》和《基於模型的魯棒深度學習》。數據的數量還沒有轉化為質量。用於訓練的信息量之大並不意味著可以涵蓋所有的情況。
如果有人參與進來,現實總會出乎意料、難以想像。我們大多數人都很難說出午餐吃什麼,更別提明天了。數據很難幫助預測人類的行為。
那麼,如何使模型更穩固呢?第一種選擇是閱讀合適的論文並執行他們的想法。這很好。但這些論文並不總是概括性的。通常,不能把一個想法從一個領域複製到另一個領域。
筆者想介紹三種常規做法。遵循這些做法並不能保證創造強大的模型,但它大大降低了出現脆弱解決方案的機率。
性能安全裕度。安全裕度是任何工程的基礎。為了安全起見,通常的做法是增加20-30%的要求。一部能承載1000公斤的電梯很容易就能承載1300公斤。此外,測試時它的承載量為1300公斤,而不是1000公斤。工程師為意外情況做好準備。
在數據科學中,什麼才是安全裕度?筆者認為是關鍵績效指標或成功標準。即使發生意外,仍然會位於臨界點之上。
這種做法的重要結果是,你將不再追求漸進式的改進。如果模型關鍵績效指標增加了1%,將無法保持強大。在所有統計顯著性檢驗中,環境中任何微小的變化都會扼殺你的努力。
超多測試。忘記單一測試/訓練/驗證部門。你必須在所有可能的組合中交叉驗證你的模型。你有不同的用戶嗎?根據用戶ID進行劃分,並進行幾十次驗證。你的數據會隨著時間而改變嗎?根據時間戳劃分,並確保每天都在驗證組中出現一次。在數據點之間使用某些特徵的隨機值或交換值「濫用」你的數據。然後對髒數據進行測試。
不要在沙灘上建造城堡。減少對其他未經測試的組件的依賴。永遠不要在另一個高風險且未經驗證的組件上構建模型。即使該組件的開發人員發誓什麼也不會發生。
模塊化
模塊化設計是所有現代科學的基本原則。這是分析方法的直接結果。分析方法是將大問題分解為小問題的過程。分析方法是科學革命的基石。
問題越小越好。這裡的「越好」並不是完美,這是必須的。它將節省大量時間、精力和金錢。當問題很小、定義明確且沒有大量假設時,解決方案便是準確且易於測試的。
大多數數據科學家都熟悉軟體設計中的模塊化。但即使是最好的程式設計師,他們的python代碼非常清晰,也常常無法將模塊化應用於數據科學本身。
失敗是很容易證明的。模塊化設計需要一種將幾個較小的模型組合成一個大模型的方法,沒有這樣的機器學習方法。
但筆者發現一些實用的指導原則是有用的:
遷移學習。遷移學習簡化了現有解決方案的進程。可以將問題分為兩部分。第一部分創建低維特徵表示。第二部分直接優化相關的關鍵績效指標。
開源。儘可能使用現成的開源解決方案。它使代碼按定義模塊化。
忘記最佳。真應該從頭開始構建針對你的需求優化的系統,而不是調整現有的解決方案。只有當證明你的系統明顯優於現有系統時才發現這是值得的。
模型集成。不要害怕採取幾種不同的方法,然後將它們放到一起。這是大多數人在Kaggle競賽中獲勝的原因。
劃分數據。不要努力創建「一個偉大的模型」,雖然理論上,或許是可能的。例如,如果要預測顧客行為,不要為一個新顧客和已使用服務一年的人建立相同的模型。
採摘果實
產品經理和數據科學家之間始終存在緊張關係。產品經理希望數據科學家專注於低掛的果實。他們的邏輯很清晰,說企業只在乎果實的數量和在哪裡生長。擁有的果實越多,做的越好。他們拋出各種各樣的流行語——帕累託(Pareto)、最簡化可實行產品(MVP)、最好的是好的敵人等等。
另一方面,數據科學家指出,低掛的果實變質快、味道差。換句話說,解決簡單的問題影響有限,並且治標不治本。這通常是學習新技術的藉口,但又常常是正確的。
筆者個人觀點介於這兩者之間。讀完彼得·泰爾(P.Thiel)的《從0到1》後,筆者曾堅信那些低掛的果實是在浪費時間。在初創公司工作了將近7年之後,筆者確信創建一個低掛的最簡化可實行產品是正確的第一步。
最近,筆者開發了自己的方法,將兩個極端融合在一起。數據科學家的典型環境是一個充滿生機和怪異的世界,樹木向四面八方生長。樹木一直在變換方向。它們可以倒立或側向生長。
最好的水果確實是在最頂端的。但是,如果花太長時間建造梯子,那棵樹就會移走。因此,最好的方法是瞄準最高處,但要不斷監測最高處在哪裡。
把隱喻遷移到實踐中來看,在漫長的發展過程中事物總有可能會發生改變。原來的問題將變得無關緊要,新數據源將出現,原始假設將被證明是錯誤的,關鍵績效指標將被替換等等。
瞄準頂端是很棒的,但切記每隔幾個月推出一款有效產品時做到這一點。該產品可能不會帶來最好的果實,但是你會更好地了解果實的生長方式。
這些技能不被人談及,但卻是有助於你職業生涯發展的重中之重,一定要認真體會。
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範