數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

我們先來看看下面這段人與AI 客服系統的對話。

數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

這種系統令人興奮,足以撼動市場,因為如此複雜的系統竟然可以十分簡潔。讓我們仔細分析一下。從表面上看,你有可能覺得,這問題很簡單啊!提問很簡單,回答也很簡單,只是接收一個請求,給出一個回覆。“您好,我的手機死機了,應該怎麼辦?”很簡單,重啟就好了。當然,表面上看起來一定是這樣的。

from Arty import AI
AI.respond_to("my phone froze, what should I do?")
>> "reset it."

問題的難點在於要從AI 的角度看問題。AI 沒有完整的人類經驗,它既沒讀過古希臘史詩《伊利亞特》,也沒看過兒童故事書《大紅狗克里弗》,沒辦法消化信息。核心問題就是,AI 沒有什麼閱讀的經驗。它怎麼能得出這種回覆呢?

人們給這個AI 幾十萬份(乃至幾百萬份)之前的人類聊天日誌,讓其從中發現規律。但這個過程中包含很多問題。

上文中AI 系統的訓練數據節選如下。

數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

數據分為兩列,請求表示最終用戶輸入客服聊天框的內容,回覆則表示客服對所收到消息的回覆。

在讀過數千條包含錯別字、髒話和中途掉線的聊天記錄後,AI 開始認為自己可以勝任客服工作了。於是,人類開始讓AI 處理新收到的消息。雖然人類沒有意識到自己的錯誤,但是開始注意到AI 還沒有完全掌握這項本領。AI 連最簡單的消息都識別不了,返回的消息也沒有意義。人類很容易覺得AI 只是需要更多的時間和更多的數據,但是這些解決方案只是更大問題的小修小補,而且很多時候根本不管用。

這個例子中的潛在問題很有可能是AI 的原始輸入數據太差,導致AI 認識不到語言中的細微差別。例如,問題可能出在這些地方。

  • 錯別字會無故擴大AI 的單詞量。“你哈哦”和“你好”是兩個無關的詞。
  • AI 不能理解同義詞。用來打招呼的“你好”和“嗨”字面上看起來毫不相似,人為地增加了問題的難度。

為了解決實際問題,數據科學家和機器學習工程師要收集大量數據。因為他們想要解決的問題經常具有很高的相關性,而且是在混亂的世界中自然形成的,所以代表這些問題的原始數據有可能未經過濾,非常雜亂,甚至不完整。

因此,過去幾年來,類似數據工程師的職位應運而生。這些工程師的唯一職責就是設計數據流水線和架構,用於處理原始數據,並將數據轉換為公司其他部門——特別是數據科學家和機器學習工程師——可以使用的形式。儘管這項工作和機器學習專家構建機器學習流水線一樣重要,但是經常被忽視和低估。

在數據科學家中進行的一項調查顯示,他們工作中超過80%的時間都用在捕獲、清洗和組織數據上。構造機器學習流水線所花費的時間不到20%,卻佔據著主導地位。此外,數據科學家的大部分時間都在準備數據。超過75%的人表示,準備數據是流程中最不愉快的部分。

上面提到的調查結果如下。

下圖展示了數據科學家進行不同工作的時間比例。

數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

從上圖可見,數據科學家的工作佔比如下。

  • 設置訓練集:3%
  • 清洗和組織數據:60%
  • 收集數據集:19%
  • 挖掘數據模式:9%
  • 調整算法:5%
  • 其他:4%

下圖展示了數據科學家最不喜歡的流程。

數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

在一項類似的調查中,數據科學家認為他們最不喜歡的流程如下。

  • 設置訓練集:10%
  • 清洗和組織數據:57%
  • 收集數據集:21%
  • 挖掘數據模式:3%
  • 調整算法:4%
  • 其他:5%

上面第一幅圖表示了數據科學家在流程中的不同部分所花費的時間比例。數據科學家有超過80%的時間花在了準備數據上,以便進一步利用數據。第二幅圖則表示了數據科學家最不喜歡的步驟。超過75%的人表示,他們最不喜歡準備數據。

數據源:https://whatsthebigdata.com/2016/05/01/data-scientists-spend-most-of-theirtime-cleaning-data/。

好的數據科學家不僅知道準備數據很重要,會佔用大部分工作時間,而且知道這個步驟很艱難,沒人喜歡。

很多時候我們會覺得,像機器學習競賽和學術文獻中那樣乾淨的數據是理所當然的。然而實際上,超過90%的數據(最有趣、最有用的數據)都以原始形式存在,就像在之前AI 聊天系統的例子中一樣。

準備數據的概念很模糊,包括捕獲數據、存儲數據、清洗數據,等等。之前的圖中顯示,清洗和組織數據佔用的工作時間十分可觀。數據工程師在這個步驟中能發揮最大作用。清洗數據的意思是將數據轉換為雲系統和數據庫可以輕鬆識別的形式。組織數據一般更為徹底,經常包括將數據集的格式整體轉換為更乾淨的格式,例如將原始聊天數據轉換為有行列結構的表格。

清洗數據和組織數據的區別如下圖所示。

數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

圖片上半部分的轉換代表清洗服務器日誌,包含數據和服務器狀態的描述文本。注意在清洗時,Unicode 字符&被轉換為了更可讀的&。清洗前後,文檔的格式基本保持不變。下半部分的組織轉換則徹底得多,把原始數據轉換為了行列結構,其中每行代表服務器的一次操作,每列代表服務器操作的屬性(attribute)。在這個例子中,兩個屬性是日期和文本。

清洗和組織數據都屬於更大的數據科學範疇,就是我們接下來要討論的主題——特徵工程。

特徵工程是什麼

特徵工程(feature engineering)是這樣一個過程:將數據轉換為能更好地表示潛在問題的特徵,從而提高機器學習性能。

為了進一步理解這個定義,我們看看特徵工程具體包含什麼。

  • 轉換數據的過程:注意這裡並不特指原始數據或未過濾的數據,等等。特徵工程適用於任何階段的數據。通常,我們要將特徵工程技術應用於在數據分發者眼中已經處理過的數據。還有很重要的一點是,我們要處理的數據經常是表格形式的。數據會被組織成行(觀察值)和列(屬性)。有時我們從最原始的數據形式開始入手,例如之前服務器日誌的例子,但是大部分時間,要處理的數據都已經在一定程度上被清洗和組織過了。
  • 特徵:從最基本的層面來說,特徵是對機器學習過程有意義的數據屬性。我們經常需要查看錶格,確定哪些列是特徵,哪些只是普通的屬性。
  • 更好地表示潛在問題:我們要使用的數據一定代表了某個領域的某個問題。我們要保證,在處理數據時,不能一葉障目不見泰山。轉換數據的目的是要更好地表達更大的問題。
  • 提高機器學習性能:特徵工程是數據科學流程的一部分。如我們所見,這個步驟很重要,而且經常被低估。特徵工程的最終目的是讓我們獲取更好的數據,以便學習算法從中挖掘模式,取得更好的效果。執行特徵工程不僅是要獲得更乾淨的數據,而且最終要在機器學習流水線中使用這些數據。

你一定在想:為什麼我應該花時間來了解特徵工程?我們覺得,很多人之所以不喜歡特徵工程,是因為他們常常看不到這些工作的益處。

大部分公司會同時招聘數據工程師和機器學習工程師。數據工程師主要關注準備和轉換數據,而機器學習工程師一般擁有算法知識,知道如何從清洗好的數據中挖掘出模式來。

這兩種工作一般是分開的,但是會交織在一起循環進行。數據工程師把數據集交給機器學習工程師,機器學習工程師則會說結果不好,讓數據工程師進一步轉換數據,反反覆覆。這種過程不僅單調重複,而且影響大局。

如果工程師不具備特徵工程和機器學習兩方面的知識,則整個流程很有可能不會那麼有效。特徵工程,這個方法是以結果為導向的,我們認為,只有能提高機器學習效果的技術才是有用的技術。

所以分享大家瞭解特徵工程的一本書。

數據科學家和機器學習工程師,為什麼一定要掌握特徵工程?

本書的主題是特徵工程。特徵工程是數據科學和機器學習流水線上的重要一環,包括識別、清洗、構建和發掘數據的新特徵,為進一步解釋數據並進行預測性分析做準備。

本書囊括了特徵工程的全流程,從數據檢查到可視化,再到轉換和進一步處理,等等。書中還會涉及各種或簡單或複雜的數學工具,數據要經過這些工具處理、轉換成適當的形式,才能進入計算機和機器學習流水線中進行處理。

作為數據科學家,我們將通過觀察和變換來獲取對數據的全新理解,這不僅會增強機器學習算法的效果,而且會增強我們對數據的洞悉力。

第1章 特徵工程簡介

  • 1.1 激動人心的例子:AI驅動的聊天
  • 1.2 特徵工程的重要性
  • 1.3 特徵工程是什麼
  • 1.4 機器學習算法和特徵工程的評
  • 1.5 特徵理解:我的數據集裡有什麼
  • 1.6 特徵增強:清洗數據
  • 1.7 特徵選擇:對壞屬性說不
  • 1.8 特徵構建:能生成新特徵嗎
  • 1.9 特徵轉換:數學顯神通
  • 1.10 特徵學習:以AI促AI
  • 1.11 小結

第2章 特徵理解:我的數據集裡有什麼

  • 2.1 數據結構的有無
  • 2.2 定量數據和定性數據
  • 2.3 數據的4個等級
  • 2.4 數據等級總結
  • 2.5 小結

第3章 特徵增強:清洗數據

  • 3.1 識別數據中的缺失值
  • 3.2 處理數據集中的缺失值
  • 3.3 標準化和歸一化
  • 3.4 小結

第4章 特徵構建:我能生成新特徵嗎

  • 4.1 檢查數據集
  • 4.2 填充分類特徵
  • 4.3 編碼分類變量
  • 4.4 擴展數值特徵
  • 4.5 針對文本的特徵構建
  • 4.6 小結

第5章 特徵選擇:對壞屬性說不

  • 5.1 在特徵工程中實現更好的性能
  • 5.2 創建基準機器學習流水線
  • 5.3 特徵選擇的類型
  • 5.4 選用正確的特徵選擇方法
  • 5.5 小結

第6章 特徵轉換:數學顯神通

  • 6.1 維度縮減:特徵轉換、特徵選擇與特徵構建
  • 6.2 主成分分析
  • 6.3 線性判別分析
  • 6.4 LDA與PCA:使用鳶尾花數據集
  • 6.5 小結

第7章 特徵學習:以AI促AI

  • 7.1 數據的參數假設
  • 7.2 受限玻爾茲曼機
  • 7.3 伯努利受限玻爾茲曼機
  • 7.4 在機器學習流水線中應用RBM
  • 7.5 學習文本特徵:詞向量
  • 7.6 小結

第8章 案例分析

  • 8.1 案例1:面部識別
  • 8.2 案例2:預測酒店評論數據的主題
  • 8.3 小結

相關推薦

推薦中...