特徵工程(1)特徵工程的簡介

特徵工程入門與實踐筆記

特徵工程是什麼

將數據轉換爲能更好的表示潛在問題的特徵,從而提高機器學習性能

特徵工程內容

轉換數據的過程

特徵工程適用於任何階段的數據,通常將數據處理成表格形式,數據組織成行(觀察值)列(屬性)的形式。

特徵

特徵是對機器學習的過程有意義的數據屬性。
無意義的只是普通屬性,而有意義的才稱之爲特徵

更好的表示潛在問題

需要使用的數據代表了某領域內的某問題,轉換數據的目的是爲了更好的表達更大的問題

提高機器學習性能

特徵工程不僅需要獲得更乾淨的數據,而且最重要在機器學習流水線中使用這些數據。
特徵工程的目的是讓我們獲取更好的數據,以便學習算法從中挖掘模式,取得更好的效果

數據和機器學習的基礎知識

監督學習(預測分析)

監督學習算法專門處理一個值的任務,通常是用數據中的其他屬性來預測餘下的一個屬性

  • 響應(response):希望預測的屬性
  • 特徵(feature):剩餘屬性

也可以認爲監督學習是一種利用數據結構的算法:利用漂亮的數據提取模式。 通過探索結構進行預測

漂亮的數據:使用特徵工程處理的數據

無監督學習

從數據中提取結構,一般對數據的數值矩陣或迭代過程應用數學變換,提取新特徵
例如聚類:從一堆數據中對一些相似的值,將其劃分成爲某一類,成爲一個新的特徵

機器學習算法和特徵工程的評估

  • 特徵和屬性是有明顯的區分的
    • 特徵:對機器學習有益的類
    • 屬性:表格數據的列(可能存在某些屬性對機器學習系統不一定有益,甚至有害)

特徵工程的評估步驟

  1. 在應用任何特徵工程前,得到機器學習模型的基準性能
  2. 應用一種或多種特徵工程
  3. 對於每種特徵工程,獲取一個性能指標,並與基準性能進行對比
  4. 如果性能的增量大於某個閾值(自己定義),則認爲該特徵工程有益,並在機器學習上應用
  5. 性能的改變一般按照百分比計算(基準性能從40%上升到76%的準確率,那麼改變就是90%)

評估監督學習算法

將監督學習分爲兩種更具體的類型:分類和迴歸

分類(預測定性響應)

使用5折交叉驗證計算邏輯迴歸模型的準確率

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
X = some_data_in_tabular_format
y = response_variable
lr = LinearRegression()
scores = cross_val_score(lr, X, y, cv=5, scoring='accuracy')
scores

迴歸(預測定量 響應)

使用均方誤差(MSE)進行評估,使用五折交叉驗證

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
X = some_data_in_tabular_format
y = response_variable
lr = LinearRegression()
scores = cross_val_score(lr, X, y, cv=5, scoring='mean_squared_error')
scores
  • 使用這兩個線性模型的原因是因爲可以更加確定,性能的增長直接和特徵工程相關

評估無監督學習算法

因爲無監督學習不做出預測,所以無法直接更具模型預測的準確率進行評估。

  • 聚類:將數據按特徵行爲進行分類
    • 主要使用輪廓係數作爲測量指標
attributes = tabular_data
cluster_labels = outputted_labels_from_clustering

from sklearn.metrisc import silhouette_score
silhouette_score(attributes, cluster_labels)

統計檢驗

相關係數、t檢驗、卡方檢驗、以及其他方法評估並量化原始數據和轉換後數據的的效果

特徵理解

  • 結構化與非結構化數據
  • 數據的四個等級
  • 識別數據的缺失值
  • 探索性數據分析
  • 描述性統計
  • 數據可視化

特徵增強:清洗數據

利用對數據的理解修改數據集,使用數據變換增強給定數據,但是並不刪除或插入新數據

  • 對非結構化數據進行結構化
    判斷數九是否具有機構,數據表格化工具
  • 數據填充-缺失數據填充
    • 刪除缺失值
    • 在其他特徵上進行機器學習,填充缺失值
    • 填充大量數據之後可以測量缺失值對機器學習算法的影響
  • 數據歸一化:
    • 標準化(z分數標準化)
    • 極差法(min-max標準化)
    • L1和L2正則化(將數據投影到不同的空間)

特徵選擇

屬性在何種程度上才能成爲真正的特徵
哪些列對機器學習沒有幫助且有害,如何決定刪除數據集中的哪些數據

  • 相關係數
  • 識別並移除多重共線性
  • 卡方檢驗
  • 方差分析
  • 理解p值
  • 迭代特徵選擇
  • 用機器學習測量熵和信息增益

特徵構建

構建全新的特徵,並正確插入數據集
目的:生成新的模式
構建特徵來源:

  • 現有特徵構建新特徵,對現有特徵進行轉換,將結果向量和原向量放置在一起
  • 從其他系統中引入特徵
    例如基於購物行爲對顧客羣進行聚類,加入人口普查數據
    - 該方法有可能增加這個步驟的維度,但是也經常會創造出一個非常密集、數據豐富的環境

如何通過高度非結構化的數據手動創建特徵(文本-圖像)

特徵轉換

自動創建特徵,如果數據理解爲一個n維空間的向量,考慮創建一個k維(k<n)的子集,完全或幾乎完全表示願數據,從而提升機器學習速度或者性能
其實就是降維算法:PCA主成分分析法或者LDA

特徵學習:以AI促AI

用算法自動構建特徵,以改善機器學習和AI流水線
嘗試對數據進行理解和建模的一種架構,從而發覺數據的模式並創建新數據

  • 神經網絡算法
  • RBM 受限玻耳茲曼機
  • Word2Vec算法

小節

  • 特徵理解:學習如何事變定量數據和定性數據
  • 特徵增強:清洗和填充缺失值,最大化數據集的價值
  • 特徵選擇:通過統計方法選擇一部分特徵,以減少噪聲
  • 特徵構建:構建新的特徵,探索特徵間的聯繫
  • 特徵轉換:提取數據中的盈倉結構,用數據方法轉換數據集、增強效果
  • 特徵學習:利用深度學習,以全新的視角看待數據,從而揭示新的問題,並解決
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章