特徵工程中使用的 6 大技術 [機器學習]

已發表: 2021-03-12

目錄

介紹

特徵工程是任何數據科學項目最重要的方面之一。 特徵工程是指用於從原始數據中提取和細化特徵的技術。 特徵工程技術用於為模型創建適當的輸入數據並提高模型的性能。

這些模型是基於我們從原始數據中獲得的特徵進行訓練和構建的,以提供所需的輸出。 可能會發生我們擁有的數據不足以讓模型從中學習一些東西。 如果我們能夠推導出找到解決我們潛在問題的特徵的特徵,那麼它將證明是數據的良好表示。 更好的是數據的表示,更好的模型擬合,更好的結果將由模型展示。

任何數據科學項目的工作流程都是一個迭代過程,而不是一次性過程。 在大多數數據科學項目中,基礎模型是在從原始數據中創建和細化特徵之後創建的。 在獲得基礎模型的結果後,可以調整一些現有的特徵,也可以從數據中衍生出一些新的特徵來優化模型結果。

特徵工程

特徵工程過程中使用的技術可以以相同的方式為所有算法和數據集提供結果。 特徵工程過程中使用的一些常用技術如下:

1. 價值轉換

通過使用對數函數、根函數、指數函數等參數,可以將特徵的值轉換為其他度量。這些函數有一些限制,可能不適用於所有類型的數據集。 例如,根變換或對數變換不能應用於包含負值的特徵。

最常用的函數之一是對數函數。 對數函數可以幫助減少可能偏向一端的數據的偏斜。 對數轉換傾向於規範化數據,從而減少異常值對模型性能的影響。

它還有助於減少特徵中值的大小。 當我們使用一些算法認為具有較大值的特徵比其他特徵更重要時,這很有用。

2. 數據插補

數據插補是指用一些統計值填補數據集中的缺失值。 這種技術很重要,因為某些算法不適用於限制我們使用其他算法或估算這些缺失值的缺失值。 如果特徵中缺失值的百分比較小(大約 5% 到 10%),則最好使用它,否則會導致數據分佈的更多失真。 對於數值和分類特徵,有不同的方法可以做到這一點。

我們可以使用指定範圍內的任意值或使用平均值、中位數等統計量度來估算數值特徵中的缺失值。這些估算值必須謹慎進行,因為統計量度容易出現異常值,而這會降低模型的性能. 對於分類特徵,我們可以用數據集中缺失的附加類別來估算缺失值,或者如果類別未知,則簡單地將它們估算為缺失。

前者需要良好的領域知識才能找到正確的類別,而後者更多是泛化的替代方案。 我們還可以使用模式來估算分類特徵。 如果缺失值的數量過多,使用模式對數據進行插補也可能導致最頻繁標籤的過度表示。

加入來自世界頂級大學的在線人工智能課程——碩士、高級管理人員研究生課程和 ML 和 AI 高級證書課程,以加快您的職業生涯。

3.分類編碼

許多算法的要求之一是輸入數據本質上應該是數字的。 事實證明,這是在此類算法中使用分類特徵的一個約束。 要將分類特徵表示為數字,我們需要執行分類編碼。 將分類特徵轉換為數字的一些方法如下:

1. One-hot 編碼: - One-hot 編碼創建一個新特徵,它為分類特徵中的每個標籤取一個值(0 或 1)。 此新功能指示每個觀察是否存在該類別的標籤。 例如,假設一個分類特徵中有 4 個標籤,那麼在應用 one-hot 編碼時,它將創建 4 個布爾特徵。

也可以用 3 個特徵提取相同數量的信息,就好像所有特徵都包含 0,那麼分類特徵的值將是第 4 個標籤。 如果數據集中有許多具有大量標籤的分類特徵,則該方法的應用會增加特徵空間。

2. 頻率編碼: - 此方法計算分類特徵中每個標籤的計數或百分比,並將其映射到同一標籤。 這種方法沒有擴展數據集的特徵空間。 這種方法的一個缺點是,如果兩個或多個標籤在數據集中具有相同的計數,它將為地圖提供所有標籤的相同編號。 這將導致關鍵信息的丟失。

3. 序數編碼: - 也稱為標籤編碼,此方法將分類特徵的不同值映射為從 0 到 n-1 的數字,其中 n 是特徵中標籤的不同數量。 這種方法不會擴大數據集的特徵空間。 但它確實在特徵的標籤內創建了序數關係。

4. 異常值的處理

異常值是其值與批次的其餘部分非常不同的數據點。 為了處理這些異常值,我們需要先檢測它們。 我們可以使用 Python 中的箱線圖和散點圖等可視化來檢測它們,或者我們可以使用四分位距 (IQR)。 四分位距是第一季度(第 25 個百分位)和第三個季度(第 75 個百分位)之間的差值。

不在 (Q1 – 1.5*IQR) 和 (Q3 + 1.5*IQR) 範圍內的值稱為異常值。 在檢測到異常值後,我們可以通過將它們從數據集中刪除、應用一些變換、將它們視為缺失值以使用某種方法對其進行估算等來處理它們。

5. 特徵縮放

特徵縮放用於改變特徵的值並將它們置於一個範圍內。 如果我們使用對值的大小敏感的算法,如 SVM、線性回歸、KNN 等,則應用此過程非常重要。 為了縮放特徵,我們可以執行標準化、歸一化、最小-最大縮放。 歸一化將特徵值的範圍從 -1 重新調整到 1。它是每個觀察值的減法與平均值與該特徵的最大值和最小值的減法之比。 即[X – 平均值(X)]/[最大值(X) – 最小值(X)]。

在 min-max 縮放中,它使用特徵的最小值而不是平均值。 這種方法對異常值非常敏感,因為它只考慮特徵的最終值。 標準化將特徵的值從 0 重新調整為 1。它不會標準化數據的分佈,而前一種方法會做到這一點。

6. 處理日期和時間變量

我們遇到了許多以不同格式表示日期和時間的變量。 我們可以從日期中獲取更多特徵,例如月份、星期幾/月份、年份、週末與否、日期之間的差異等。這可以讓我們從數據集中提取更多有洞察力的信息。 從時間特徵中,我們還可以提取小時、分鐘、秒等信息。

大多數人錯過的一件事是所有日期和時間變量都是循環特徵。 例如,假設我們需要檢查星期三 (3) 和星期六 (7) 之間的哪一天更接近星期日(為 1)。 現在我們知道星期六更近,但從數字上看,這將是一個星期三,因為 3 和 1 之間的距離小於 7 和 1 之間的距離。當時間格式為 24 小時格式時,同樣可以應用。

為了解決這個問題,我們可以將這些變量表示為 sin 和 cos 函數。 對於“分鐘”功能,我們可以使用 NumPy 應用 sin 和 cos 函數以循環性質表示它,如下所示:

minute_feature_sin = np.sin(df['minute_feature']*(2*π/60))

minute_feature_cos = np.cos(df['minute_feature']*(2*π/60))

(注:除以 60 因為一小時有 60 分鐘。如果要連續做幾個月,除以 12 以此類推)

通過將這些特徵繪製在散點圖上,您會注意到這些特徵之間呈現出循環關係。

另請閱讀:機器學習項目的想法和主題

結論

本文重點介紹了特徵工程的重要性,同時引用了特徵工程過程中使用的一些常用技術。 這取決於算法和手頭的數據來決定上面列出的所有技術中的哪些技術可以提供更好的見解。

但這確實是一個難題,並且不能安全地假設,因為數據集可能不同,並且用於數據的算法也可能不同。 更好的方法是遵循增量方法並跟踪已構建的模型及其結果,而不是魯莽地執行特徵工程。

如果您有興趣了解有關機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和 AI 執行 PG 計劃,該計劃專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業、IIIT -B 校友身份,5 個以上實用的實踐頂點項目和頂級公司的工作協助。

使用基於平均中位數的數據插補技術有什麼缺點?

當使用平均插補時,變量之間的聯繫和相關性不會被保留。 但是估算平均值會保持觀察到的數據的平均值。 結果,即使所有數據都隨機丟失,平均估計值仍將保持無偏。 使用均值插補減少插補變量的方差。 平均插補減少了標準誤差,導致大多數假設檢驗和置信區間計算不准確。 像這樣,第一類錯誤是在不知不覺中犯下的。

為什麼需要特徵提取?

特徵提取用於定位最小且信息量最大的特徵集合(不同的模式),以提高分類器的有效性。 特徵提取有助於減少數據收集中不必要的數據,以便僅將重點放在相關信息和特徵上。 最後,減少數據使機器更容易以更少的努力開發模型,並加快機器學習過程中的學習和泛化過程。 特徵工程最重要的應用是在生物醫學信號分類中,其中特徵提取是一個重要元素,因為如果不仔細選擇特徵,分類性能可能會受到影響。

使用特徵提取技術有什麼缺點嗎?

特徵提取提出了一些普通人無法閱讀或理解的新特徵。 可擴展性是特徵提取過程中面臨的另一個挑戰。 如果數據集很大,一些特徵提取技術將無法執行。 特別是複雜的非線性特徵提取方法是不可能實現的。 大多數技術依賴於某種形式的近似來有效地處理特徵選擇問題,這在某些情況下無法解決精確的問題。