【Feature-Engineering-01】引言

引用來源:翻譯文檔

一、引言

機器學習將數據擬合到數學模型中來獲得結論或者做出預測。這些模型吸納特徵作爲輸入。特徵就是原始數據某方面的數學表現。在機器學習流水線中特徵位於數據和模型之間。特徵工程是一項從數據中提取特徵,然後轉換成適合機器學習模型的格式的藝術。這是機器學習流水線關鍵的一步,因爲正確的特徵可以減輕建模的難度,並因此使流水線能輸出更高質量的結果。從業者們認爲構建機器學習流水線的絕大多數時間都花在特徵工程和數據清洗上。然後,儘管它很重要,這個話題卻很少單獨討論。也許是因爲正確的特徵只能在模型和數據的背景中定義。由於數據和模型如此多樣化,所以很難概括項目中特徵工程的實踐。

儘管如此,特徵工程不僅僅是一種臨時實踐。工作中有更深層的原則,最好就地進行說明。本書的每一章都針對一個數據問題:如何表示文本數據或圖像數據,如何降低自動生成的特徵的維度,何時以及如何規範化等等。把它看作是一個相互聯繫的短篇小說集,而不是一本長篇小說。每章都提供了大量現有特徵工程技術的插圖。它們一起闡明瞭總體原則。

掌握主題不僅僅是瞭解定義並能夠推導出公式。僅僅知道這個機制是如何工作的以及它可以做什麼是不夠的。它還必須包括理解爲什麼要這樣設計,它如何與其他技術相關聯,以及每種方法的優缺點是什麼。掌握就是要準確地知道如何完成某件事,對底層原則有一個感覺,並將其整合到我們已知的知識網絡中。一個人通過讀一本相關的書並不會成爲某個東西的主人,儘管一本好書可以打開新的門。它必須涉及實踐——將想法用於實踐,這是一個反覆的過程。隨着每一次迭代,我們都會更好地瞭解這些想法,並在應用這些想法時變得越來越嫺熟和富有創造性。本書的目標是促進其思想的應用。

本書首先嚐試傳授感覺,其次是數學。我們不是隻討論如何完成某些事情,而是試圖引導發現原因。我們的目標是提供觀點背後的感覺,以便讀者瞭解如何以及何時應用它們。對於以不同方式學習的人們來說,有大量的描述和圖片。提出數學公式是爲了使感覺更加精確,並且還可以將本書與其他現有的知識結合起來。

本書中的代碼示例在 Python 中給出,使用各種免費和開源軟件包。NumPy 庫提供數字向量和矩陣操作。Pandas 是一個強大的數據框架,是 Python 中數據科學的基石。Scikit-learn 是一個通用機器學習軟件包,涵蓋了廣泛的模型和特徵變換器。Matplotlib 和 Seaborn 的樣式庫提供了繪圖和可視化。你可以在我們的 github 倉庫中找到這些例子作爲 Jupyter notebooks。

前幾章開始較緩慢,爲剛剛開始使用數據科學和機器學習的人們提供了一個橋樑。第 1 章從數字數據的基本特徵工程開始:過濾,合併,縮放,日誌轉換和能量轉換以及交互功能。第 2 章和第 3 章深入探討了自然文本的特徵工程:bag-of-words,n-gram 和短語檢測。第 4 章將 tf-idf 作爲特徵縮放的例子,並討論它的工作原理。圍繞第 5 章討論分類變量的高效編碼技術,包括特徵哈希和 bin-counting,步伐開始加速。當我們在第 6 章中進行主成分分析時,我們深入機器學習的領域。第 7 章將 k-means 看作一種特徵化技術,它說明了模型堆疊的有效理論。第 8 章都是關於圖像的,在特徵提取方面比文本數據更具挑戰性。在得出深度學習是最新圖像特徵提取技術的解釋之前,我們着眼於兩種手動特徵提取技術 SIFT 和 HOG。我們在第 9 章中完成了一個端到端示例中的幾種不同技術,爲學術論文數據集創建了一個推薦器。

概括提示

作者建議本書中的插圖最好以彩色顯示。真的,你應該在第 7 章中打印出彩色版本的“瑞士捲”,然後粘貼到你的書中。你的審美意識會感謝我們。

特徵工程是一個廣泛的話題,每天都在發明更多的方法,特別是在自動特徵學習方面。爲了將本書的範圍限制在一個可管理的大小,我們不得不做一些削減。本書沒有討論音頻數據的傅里葉分析,但它是一個與線性代數中的特徵分析密切相關的美麗主題(我們在第 4 章和第 6 章中會介紹)。我們也忽略了與傅立葉分析密切相關的隨機特徵的討論。我們通過對圖像數據的深度學習來介紹特徵學習,但不會深入到積極開發中的衆多深度學習模型中。超出範圍的還有先進的研究思路,如隨機投影,複雜文本特徵模型(如 word2vec 和 Brown 聚類)以及潛在空間模型(如潛在狄利克雷分析和矩陣分解)。如果這些話對你來說毫無意義,那麼你很幸運。如果特徵學習的前沿是你的興趣所在,那麼這可能不是爲你準備的書。

本書假設掌握了基本機器學習概念的知識,例如“什麼是模型”和“什麼是矢量”。它並不要求掌握了數學或統計學。線性代數,概率分佈和優化的經驗是有幫助的,但不是必需的。

機器學習流水線

在深入研究特徵工程之前,讓我們花點時間看看整個機器學習流水線。這將幫助我們更好地瞭解應用的大方向。爲此,讓我們從數據和模型等基本概念入手。

數據

我們所說的數據是對現實世界現象的觀察。例如,股票市場數據可能涉及對每日股票價格的觀察,個別公司的收益公告,甚至專家的意見文章。個人生物識別數據可以包括我們的心率,血糖,血壓等的測量數據。客戶情報數據包括諸如:“Alice 在週日買兩本書”,“Bob 瀏覽網站上的這些頁面”和“查理點擊了上週的特別優惠鏈接”。我們可以在不同領域得到無數的數據例子。

任務

我們爲什麼收集數據?因爲數據可以幫助我們回答很多問題。這些問題可能是:“我應該投資哪些股票?”,“我怎麼樣才能活得更健康?”,或者“我如何理解顧客變化的口味,以便我的企業能夠更好的服務他們?”。

從數據中獲取答案的路途充滿了謎題。最開始充滿希望的方法可能行不通。最初只是一個預感卻可能是最佳解決方案。數據的工作流程通常是一個多階段的迭代過程。例如,股票價格是在交易所觀察到的,由湯普森路透社等中間人彙總,存儲在數據庫中,由公司購買,在 Hadoop 集羣中轉換爲 Hive 存儲,通過腳本從商店中抽出,進行二次抽樣,由另一個腳本處理和清理,轉儲爲文件,轉換爲可以在 R,Python 或 Scala 中最喜歡的建模庫中嘗試的格式,將預測轉儲回 csv 文件,由評估程序分析,迭代多次,最後由生產團隊用 C++ 或 Java 重寫,運行所有數據,並將最終預測輸出到另一個數據庫。

然而,如果我們暫時忽略工具和系統的混亂,我們可能可以看到上述過程涉及到的兩個數學實體,它們是機器學習的黃油和麪包:模型和特徵。

模型

嘗試着從數據中瞭解世界就像用不完整的拼圖以及一堆額外的碎片拼湊出現實。這就是數學模型,特別是統計模型的由來。統計語言中包含許多頻繁數據特徵的概念:誤差,冗餘或者缺失。誤差數據是測量中的錯誤導致的。冗餘數據意味着數據的多個方面傳達完全相同的信息。例如,星期幾可以作爲“星期一”,“星期二”,…“星期天”的分類變量存在,並且再次被包括爲 0 到 6 之間的整數裏。如果某些數據點中不存在這種星期幾的信息,那麼這個數據就產生了缺失。數據的數學模型描述數據不同方面的關係。舉個例子。一個預測股票價格的模型可能是一個將公司收益歷史、過去股票價格和行業映射到預測股票價格的公式。推薦音樂的模型可能考量了用戶的相似處,然後給欣賞很多同樣歌曲的用戶推薦一樣的藝術家。

數學公式將數量相互關聯。但是原始數據通常不是數字。(“愛麗絲週三買了‘指環王’三部曲”的行爲不是數字,她後來對這本書的評論也不是。)必須有一樣東西把兩者連接在一起。這就是特徵的由來。

特徵

特徵是原始數據的數學表示。有很多方法可以將原始數據轉換爲數學測量值,這也是爲什麼特徵最終看起來與許多事情相似。自然的,特徵必須來自可用數據的類型。可能它們與模型相關聯的事實也沒那麼明顯;一些模型更適合某些類型的特徵,反之亦然。正確的特徵應該與手頭的任務相關並且容易被模型攝取。特徵工程是指給定數據、模型和任務是制定最佳特徵的過程。

特徵的數量也是很重要的。如果沒有足夠的信息特徵,模型就無法完成最終的任務。如果存在太多的特徵,或者如果它們大多數是無關緊要的,那麼訓練這個模型會更加的棘手並且代價更多。在訓練過程中可能會出現一些錯誤影響模型的表現。

模型評估

特徵和模型位於原始數據和期望的觀察結果之間。在機器學習工作流程中,我們不僅挑選模型,還挑選特徵。這是一個雙節杆,一個選擇會影響另一個。良好的特徵使後續的建模步驟變得簡單,並且所得到的模型能更容易實現所需的任務。糟糕的特徵可能需要更復雜的模型才能達到相同的性能水平。在本書的其餘部分中,我們將介紹不同類型的特徵,並討論它們對不同類型數據和模型的優缺點。不要猶豫,讓我們開始吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章