別大言不慚了!很多人其實只是偽數據科學家

全文共3862字,預計學習時長13分鐘


別大言不慚了!很多人其實只是偽數據科學家

圖源:unsplash


首先聲明,筆者並不是在貶低自學和有抱負的數據科學家,事實上,筆者認為這一領域特別適合有激情的自學者。


但你不得不承認,那些僅僅上過一門在線課程就自稱專家,卻對該領域的基本理論一無所知(或不感興趣)的人,確實該被敲打敲打。


作為21世紀最性感的高薪職業,數據科學家受到越來越多人的追捧。如今,似乎連與行業不相關的人都在推銷自己是數據科學家,這無可厚非。然而有一群“華而不實”的人,幾乎沒有實踐經驗,一些甚至沒有理論基礎,卻在一家家公司裡行騙,就有點兒過分了。


筆者在與現有或潛在數據科學家面試或合作的經歷中,發現了一些細節,能區分華而不實和真才實學的數據科學家。


筆者整理出了一份清單來區分這些人,這份清單有助於招聘經理進行人員篩選;你也可以用它進行自查,如果存在這些缺點,就要趕緊在變得華而不實之前加以改正啦。


別大言不慚了!很多人其實只是偽數據科學家

不費心去探索數據


數據探索是所有機器學習項目的第一步。如果不花時間熟悉數據,不瞭解其特性,在成品產出前,錯誤的決策樹將會浪費大量時間。


沒有將數據可視化


啟動任何數據相關項目的最佳方式是探索數據可視化。如果讀者正在實踐機器學習,那麼很可能要處理大量的高維數據;在Excel中讀取.csv或者使用df.describe()函數並不是合適的數據可視化替代方案。


弗朗西斯·安斯庫姆用著名的四重奏闡明瞭數據可視化的重要性:


別大言不慚了!很多人其實只是偽數據科學家

安斯庫姆四重奏


每個面板中的數據集都有基本相同的彙總統計數據:x和y均值、x和y樣本方差、相關係數、R平方值和最佳擬合線都(幾乎)相同。如果未將數據可視化,而是依賴於彙總統計數據,可能會認為這四個數據集有著相同的分佈,但看一眼就知道情況顯然不是這樣。


數據可視化允許識別數據中的趨勢、偽跡、異常值和分佈;如果跳過這一步,當然也可以盲人摸象般做項目的剩餘部分。


沒有清理數據


如果數據是混亂的會發生什麼?數值輸入錯誤;轉化出錯;傳感器紊亂。在為一個沒有前途的項目浪費數月時間之前,解決這些問題很重要。尤其關鍵的是,要在模型投入生產之前解決這些問題。記住:輸入垃圾就會輸出垃圾。


別大言不慚了!很多人其實只是偽數據科學家

圖源:unsplash


有很多很好的辦法以識別數據中的問題,但是沒有很好的辦法識別所有問題。數據可視化是很好的出發點,儘管這是一個相當繁複的手動過程,但是其回報相當豐富。


其他方法包括自動異常值檢測和條件摘要統計。例如,人類身高的柱狀圖:


別大言不慚了!很多人其實只是偽數據科學家

成人身高柱狀圖


用這些數據來訓練模型無疑會導致十分糟糕的結果。但是通過檢查數據,可以發現數值為100的異常值是以米而不是釐米為單位的。這可以通過將這些值乘以100進行修正。


正確地清理數據不僅可以防止模型接受錯誤數據的訓練,而且在這種情況下,還可以挽救100個原本可能被拋棄的數據點。如果不能正確地清理數據,往好了說,就是把錢留在了桌子上,往壞了說就是建立一個有缺陷的模型。


不必為特徵選擇和設計而煩惱


神經網絡最酷的一點是,可以直接將所有的原始數據輸入進去,它會學習到目標函數的一些近似值。實際上,這是最糟糕的一點。


這的確很方便,但是效率低而且易於崩潰。最糟糕的情況在於,這使得新手數據科學家依賴深度學習,造成其技術不斷下降,而通常情況下,更傳統的機器學習方法是更合適的。雖然沒有“正確”的方法來進行特徵選擇和設計,但是需要為幾個關鍵的結果努力:


· 數據格式化:計算機是死腦筋。數據需要被轉換為模型易於理解的格式:神經網絡,例如介於-1和1之間的數字;分類數據應為獨熱編碼;定序數據(可能)不應表示為單個浮點字段;對指數分佈的數據進行對數轉換可能是有益的。可以說,數據格式中存在很多依賴模型的細微差別。


· 降維:數據越多並不意味著越好。通常,在擬合模型之前,需要減少特徵的數量。這通常涉及到刪除不相關和冗餘的數據,或將多個相關字段合併為一個字段。


· 創建特定於域的功能:基於數據創建自有功能通常是高效的。如果有計數數據,就可能需要將其轉換為相關的二進制閾值,例如“≥100”對“<100”,或“是0”對“不是0”。如果有連續的數據x和z,則可能需要在特徵集中,除了x和z,還要包含x², xz, 和z²。這是一個高度依賴於問題的實踐,但是如果處理的好,就可以極大提高某類模型的模型性能。


大多數外行認為,機器學習就是黑箱,從原始數據中神奇地得出結果,事實並不是這樣。


別大言不慚了!很多人其實只是偽數據科學家

圖源:picography


別大言不慚了!很多人其實只是偽數據科學家

沒有選擇適當的模型類型


機器學習歷史悠久,在這段歷史的大部分時間裡,它被稱為“統計學習”。


隨著Scikit Learn和TensorFlow等易於使用的開源機器學習工具的出現,再加上現在收集的大量數據和無處不在的高速計算機,使用不同的機器學習模型類型進行實驗,變得前所未有的簡單。


然而,不再要求機器學習實操人員對不同模型類型工作方式的實際理解,也導致他們對不同模型類型的工作方式的不理解,這並非是巧合。


什麼都試試


GitHub庫中充斥著Kaggle項目和在線課程作業的組合,如下所示:


<code>

from

sklearn

import

*

for

m

in

[SGDClassifier, LogisticRegression, KNeighborsClassifier, KMeans,KNeighborsClassifier, RandomForestClassifier]: m.overfit(X_train, y_train)/<code>


這顯然是不知所云,但很多在線課程推薦了這個方案,真是羞恥。


這是在浪費時間,並且很容易誘導人們選擇不合適的模型類型,因為碰巧能在驗證數據上很好的運行。(記得要保留一個驗證集,對吧?)


選擇所使用的模型類型應根據基礎數據和應用程序的需要,並應該設計數據以匹配所選模型。選擇模型類型是數據科學過程中的一個重要部分,直接比較一定量的合適模型可能是有道理的,但是盲目的窮舉以找到“最佳數量”模型是一個危險信號。


別大言不慚了!很多人其實只是偽數據科學家

圖源:unsplash


實際上並不瞭解不同的模型類型是如何工作的


如果輸入“車齡以年計算”和“行駛公里數”,為什麼KNN(近鄰算法)分類器不能很好地工作?用線性迴歸預測全球人口增長有什麼問題?為什麼隨機森林分類算法不適用含1000個類別的獨熱編碼變量的數據集?


如果無法回答這些問題,沒關係!有很多很好的資源可以用來學習這些技術的工作原理;在申請一份此領域的工作之前,一定要閱讀並理解他們。


但更大的問題不在於人們不瞭解工作原理,而是在於對底層的原理不關心且不感興趣!


如果喜歡機器學習卻不喜歡原理,那麼就不會真正喜歡機器學習;這樣的人迷戀於自己所認定的概念。如果不想了解模型是如何工作的或者適合於數據的,那麼當它們不可避免地出錯時,排除故障將無法實現。


不知道想要準確性還是可解釋性,或者為什麼必須要抉擇


別大言不慚了!很多人其實只是偽數據科學家

圖源:unsplash


所有的模型都各有利弊。在機器學習中,一個重要的抉擇就是準確性和可解釋性之間的權衡。


一個模型可以預測很差但是容易理解,且可以解釋過程高效;也可以非常精確,但是內部運作方式卻是個謎,或者也可以選擇一個折中方案。


選擇哪種類型的模型應該根據以上兩者孰重孰輕來決定。


如果目的在於數據建模並且獲得可操作的洞察力,那麼顯而易見,應選擇可解釋的模型,比如決策樹或線性迴歸。如果應用於生產級預測,例如圖像註釋,那麼可解釋性就退居其次,隨機森林或神經網絡可能更合適。


以筆者的經驗而言,那些不理解這種權衡的數據科學家,那些甚至不考慮解釋性為什麼重要而直接追求準確性的數據科學家,並不適合訓練模型。


別大言不慚了!很多人其實只是偽數據科學家

圖源:unsplash


別大言不慚了!很多人其實只是偽數據科學家

沒有使用有效的度量和控制


儘管佔50%的單詞和64%的字母,數據科學(datascience)中的“科學”(science)一詞往往被忽略。


對於華而不實的數據科學家而言,在理想條件中盲目應用單一指標作為模型評估並不少見。不知情的利益相關者很容易被諸如“90%準確率”之類的大膽說法所引誘。儘管這些說法在技術上是正確的,但在當前任務中卻極不合適。


沒有建立一個基線模型


筆者有一個胰腺癌的檢測,準確率超99%。難以置信是嗎?但這是真的,點擊鏈接即可嘗試:https://upload.wikimedia.org/wikipedia/commons/3/31/ProhibitionSign2.svg


如果看到一個紅色的圓圈,上面有一條線,那麼測試結果是陰性的。如果你看到綠色的複選標記,那麼你在撒謊。


事實是,99%的人沒有胰腺癌(實際上比例更大,但是為了解釋,假設是99%),所以筆者愚蠢的小“測試”在99%的時間裡是準確的。


因此,如果我們關心的是準確性,那麼任何用於診斷胰腺癌的機器學習模型至少都應該和這種非信息性的基線模型一樣好。如果來應聘的應屆小帥哥聲稱他開發了一個準確率95%的工具,那麼與一個基準模型進行比較,請確保他的模型表現比概率更好。


用錯了度量


別大言不慚了!很多人其實只是偽數據科學家

圖源:unsplash


接著上面的診斷示例,確保正確的度量很重要。


對於癌症診斷來說,準確度實際上是一個糟糕的指標;降低準確度如果意味著敏感度的增加,通常這樣做更可取。假陽性的成本是多少?病人的壓力,以及浪費的時間和資源。假陰性的代價是什麼?死亡。


瞭解模型的實際含義,並瞭解這些含義如何控制度量選擇,就可以清晰地從人們的腳本中窺見真正的數據科學家。


搞砸了訓練/測試線


這是一個大問題,並且非常普遍。正確地測試一個模型對於數據科學過程是絕對必要的。


有很多出錯的可能性:不理解驗證和測試數據之間的區別,在拆分之前執行數據擴充,沒有制止數據洩露,完全忽略數據拆分......除此以外,如果不知道或者不關心如何創建一個合適的持久的集,那麼所有工作都是在浪費時間。


...將Tensorflow導入為tf


以上所述,僅僅是為了辨別篩掉此行業的一小部分人。只要經驗豐富,就很容易發現這些偽數據科學家。但是如果剛剛開始實操,也許很難把網紅AI老師SirajRavals和吳恩達區分開。


如果覺得上述任何一個例子內涵到你了,這是好事,因為這意味著你關心如何把事情做好。繼續學習,繼續攀登,別為這些裝模作樣的人所煩擾。


別大言不慚了!很多人其實只是偽數據科學家

留言點贊關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範


分享到:


相關文章: