首頁>Club>
12
回覆列表
  • 1 # AI中國

    隨著大資料時代的到來,特徵工程發揮著越來越重要的作用。這篇文章將簡單介紹一下特徵工程的相關知識。

    介紹

    處理非結構化文字資料非常困難,尤其是當您嘗試構建智慧系統時,它可以像人類一樣解釋和理解自由流動的自然語言。您需要能夠處理並將嘈雜的非結構化文字資料轉換為一些結構化的向量化格式,這些格式可以被任何機器學習算法理解。

    來自自然語言處理、機器學習或深度學習的原則屬於人工智慧這一廣泛領域,是交易的有效工具。這裡需要記住的一個重點是任何機器學習演算法都基於統計學、數學和最佳化原理。因此,它們不夠智慧,無法以原始原生形式處理文字。

    動機

    在我們之前的文章中,已經多次討論過這個話題,特徵工程是創造卓越和效能更好的機器學習模型的秘訣。但需要注意的是,即使自動化特徵工程出現,您仍然需要了解應用這些技術的核心概念。否則,他們就只是黑箱模型,你仍不知道如何調整你想要解決的問題。

    傳統模式的缺點

    用於文字資料的傳統(基於計數)特徵工程策略涉及屬於通稱為Bag of Words模型的模型家族。這包括詞頻、TF-IDF(詞頻 - 逆文件頻率)、N-gram等。雖然它們是從文字中提取特徵的有效方法,但由於模型的固有特性只是一堆非結構化的單詞,因此我們會丟失附加資訊,如每個文字文件中附近單詞的語義、結構、序列和上下文。這為我們探索更復雜的模型提供了足夠的動力,這些模型可以捕獲這些資訊,併為我們提供以詞語為載體表示的特徵,俗稱嵌入。

    需要詞嵌入

    為什麼我們應該有足夠的動力來學習和構建這些詞嵌入?關於語音或影象識別系統,所有資訊已經以嵌入高維資料集中的豐富密集特徵向量的形式出現,如音訊光譜圖和影象畫素強度。然而,對於原始文字資料,尤其是基於計數的模型,如Bag of Words,我們正在處理可能具有自己的識別符號的單個詞並且不捕獲單詞之間的語義關係。這導致了文字資料的巨大稀疏詞向量,因此如果我們沒有足夠的資料,我們最終可能會得到糟糕的模型甚至過度擬合數據。

    比較音訊、影象和文字的特徵表示

    為了克服語義和特徵稀疏的缺點,我們需要利用向量空間模型(VSM),以便我們可以在這個連續的向量空間中嵌入基於語義和上下文相似的連續向量空間中嵌入詞向量。

    事實上,分散式語義學領域的分佈假設告訴我們,在相同語境中出現和使用的詞在語義上彼此相似並具有相似的含義。總之,有兩種主要型別的上下文單詞向量。基於計數的方法,如潛在語義分析(Latent Semantic Analysis,LSA)可用於計算詞彙在語料庫中與其相鄰單詞出現頻率的一些統計度量,然後為這些度量中的每個單詞構建密集單詞向量。像神經網路語言模型這樣的預測方法,試圖從它的相鄰單詞中預測單詞,並在語料庫中查詢單詞序列,在這個過程中,它學習了分散式表示,從而給我們提供了密集的單詞嵌入。

    特徵工程策略

    讓我們來看看處理文字資料並從中提取有意義的特徵的一些先進策略,這些策略可用於下游機器學習系統。可以在GitHub儲存庫中訪問本文中使用的所有程式碼(https://github.com/dipanjanS/practical-machine-learning-with-python/tree/master/bonus%20content/feature%20engineering%20text%20data),以備將來參考。在這裡我們將首先載入一些基本的依賴和設定。

    現在我們將收集一些我們將執行的所有分析的文件的語料庫。對於其中一個語料庫,我們將重提文字資料的傳統方法中的語料庫。為了便於理解,我們提供程式碼如下。

    我們的示例文字語料庫

    文字預處理

    可以有多種方法來清理和預處理文字資料。在自然語言處理(NLP)管道中大量使用最重要的技術。由於本文的重點是特徵工程,我們將重新使用我們的簡單的文字預處理程式,它側重於刪除特殊字元、額外的空格、數字、stopwords和更低的文字語料庫。

    一旦我們準備好了基本的預處理流程,我們首先將其應用於玩具語料庫。

    現在,我們使用NLTK(自然語言處理工具包)載入我們的另一個基於King James版本的語料庫並預處理文字。

    以下輸出顯示了我們語料庫中的總行數以及預處理如何處理文字內容。

  • 2 # 北航秦曾昌

    特徵工程(Feature Engineering)是傳統機器學習方法中十分重要的一環,甚至可以說是決定性的。有句話來形容特徵工程就是:資料和特徵工程決定了模型效果的上限,改進演算法只不過是在逼近這個上線而已。

    特徵工程就是利用已有的領域知識和現有資料,手動或者自動的創造新特徵或對特徵進行篩選,以更好的用於機器學習演算法。

    在傳統機器學習中,特徵工程是個十分龐大和繁雜的過程,而且很依賴於人的經驗和特定領域知識。特徵工程的內容包括:

    資料的預處理過程。原始資料進行數字化的表示,如將離散的特徵用亞編碼的方式來表示,比如對於西瓜的色澤而言可以分為青綠、烏黑和淺白,那麼就可以用向量來表為[1,0,0]、[0,1,0]和[0,0,1]。此外,還需對異常點和缺失值的處理。接著還需要對不同尺度和量綱的資料進行歸一化、標準化。最後還需進行特徵變換,如對資料進行多項式變換、指數對數變換等等。

    特徵的提取和篩選。根據任務的要求,可能還需要進一步的提取特徵,比如對於PM2.5的預測,可以利用一階差分來提取出每天的PM2.5變化資訊。另外,對於特徵數目過多為問題,還需要對特徵進行選擇,比如利用特徵之間的相關係數來剔除一些相關性過強的特徵。此外,還可以透過PCA等方法對特徵進行降維。

    但是隨著近幾年深度學習的發展,傳統的特徵工程正在逐漸被人們所拋棄。特別是在處理語音、文字和影象等非結構化資料,而在分析結構化資料中,特徵工程仍然佔據了重要的位置。

    比如對於28*28大小的手寫數字識別問題而言,原始資料是二維矩陣。但是由於如果對每個畫素值進行編碼,那就將有784維的特徵,這樣的特徵數目在傳統機器學習中已經是比較大的了,而輸出只有0到9十類。因此我們可以透過特徵工程來創造新的特徵,首先對二維矩陣進行二值化,在提起數字的形態特徵比如提取矩陣的畫素的對稱程度,畫素為1區域的長寬比等等。這樣不僅可以利用人為經驗篩選出有價值的特徵,來可以極大的減少特徵數量。但是透過神經網路,可以利用CNN自動來實現對原始影象特徵的提取,從而不依賴於人的經驗,實現最終的分類。但是神經網路的學習依賴於資料量,資料量越大,模型效果越好。

  • 中秋節和大豐收的關聯?
  • 沒有預算,如何做一場華麗的年會?