機器學習之特徵工程

2022-05-18 20:49:13 字數 3277 閱讀 7799

一、特徵抽象

特徵抽象是指將資料來源抽象演算法可以理解的資料,我們期望的資料是一組可以表達資料某種特性的數字。

下面對幾種資料型別抽象舉例:

(1)時間戳

以某一天為基準值,採用演算法算出某數值,其他的採用和該基準值的差距。

(2)二值類問題

文字或其他描述的二值問題,可以量化為0和1表示。

(3)多值有序問題

類似二值,可以將幾個表示連續的幾個引數量化為幾個連續的數值。

(4)多值無序問題

一種是採用某種方式進行資訊閹割,犧牲非量化欄位的資訊,轉化為主觀測特徵,非主觀測特徵的二值方式。

另一種是採用one-hot編碼通過唯一數值標識每個字元資料在其特徵特徵列中的位置來實現特徵編碼。

(5)文字型別

一般是先分詞,然後按文字位置或者詞性來提取特徵。

(6)影象或語音資料

大體思路是將影象或語音轉換為矩陣結構,例如影象可以以畫素點切割。

二、特徵重要性評估

1、回歸模型係數法

一些線性模型的訓練結果是乙個數學公式,類似y=a1x1 + a2x2 + a3x3 + ...,a1,a2,a3就是係數,如果想用邏輯回歸的模型各特徵引數評估特徵重要性,需要對資料進行歸一化處理。

2、資訊熵判斷法

資訊熵:在信源中考慮的不是單一符號的發生的不確定性,而是要考慮這個信源所以可能發生情況的平均不確定性,若信源有n種可能u1,u2,u3,...,對應概率為p1,p2,p3...,且各自出現獨立,則平均不確定性為:

資訊熵越大,資訊量就越大,不確定性也越大,從資訊增益角度講,特徵帶來的資訊越多,特徵越重要,目標佇列和特徵佇列資訊熵之差表示特徵影響度,即目標列 - 特徵列資訊增益 = 特性影響度。

三、特徵衍生

特徵衍生是指利用現有特徵進行某種組合,生成新的具有含義的特徵。

舉例說明:統計使用者的購物行為:

原本如下是乙個二值問題,即購買或未購買,然而通過統計使用者歷史購買數量,可以衍生出購買總數;

通過購買總數與購買時間差可以衍生出購買頻率;

通過產品在時間段的購買分別可以衍生出產品旺季淡季;

通過產品重複購買時間可以衍生出產品更換頻率等等。

最終根據需求的不同得到很多資料,完善演算法入參。

四、特徵降維

1、概念

特徵降維就是挖掘其中的關鍵字段,減少輸入矩陣的維度。

目的是:

1)、確保變數間的相互獨立。

2)、減少計算量。

3)、去除雜訊。

常用的降維方法:

1)、主成分分析(principal component analysis,pca),通過線性對映投影的方式把高維資料對映到低維空間中。

2)、線性判別式分析(linear discriminant analysis, lda),將高維的模式樣本投影到最佳鑑別向量空間,以達到抽取分類資訊和壓縮特徵空間維數的效果,投影後保證模式樣本在新的子空間有最大類間間距和最小類內間距,即模式在該空間有最佳的可分離性。

3)、區域性線性嵌入((locally linear embedding, lle),非線性降維演算法,降維後可以繼續保持資料的流行結構。

2、主成分分析

pca基本思路是旋轉座標軸到方差最大的方向,設x是乙個變數,e(x)表示資料平均值,

表示方差,方差表示資料變化可能性最大的方向。

保留原始資料最大方差方向的資料主要是通過轉換座標系的方法,把源資料最大方差方向變為新座標系的乙個座標軸,另乙個軸選擇與新座標軸垂直的直線,一直重複這樣的操作就可以減小資料的維度。

通過pca數學公式進行降維:

1)求協方差矩陣

在概率論和統計學中,協方差用於衡量兩個變數的總體誤差。而方差是協方差的一種特殊情況,即當兩個變數是相同的情況。協方差的值如果為正值,則說明兩者是正相關的(從協方差可以引出「相關係數」的定義),結果為負值就說明負相關的,如果為0,也是就是統計上說的「相互獨立」。

協方差公式:

協方差矩陣表示為:

如果是三維矩陣,則表示如下:

2)提取特徵值和特徵向量

an階方陣,如果存在常數

及非零n向量x,使得

,則稱是矩陣a的特徵值,xa屬於特徵值

的特徵向量。

特徵值越大,說明矩陣在對應特徵向量上的方差越大,所以將特徵值都求出來,將特徵值從大到小排序,保留前n維特徵向量就是將矩陣降到n維。

3)**實現

def

pca(data_mat, dimen):

#numpy.mean 求均值:

#axis 不設定值,對 m*n 個數求均值,返回乙個實數

#axis = 0:壓縮行,對各列求均值,返回 1* n 矩陣

#axis =1 :壓縮列,對各行求均值,返回 m *1 矩陣

mean_value = numpy.mean(data_mat, axis=0)

mean_removed = data_mat - mean_value #

求每個元素與均值之差

#numpy.cov: 求矩陣協方差

#如果rowvar為true(預設值),則每行代表乙個變數,並在列中顯示(即每一列為乙個樣本)。

#否則,關係被轉置:每列代表變數,而行包含觀察值。

cov_mat = numpy.cov(mean_removed, rowvar=false)

vals, vects = numpy.linalg.eig(numpy.mat(cov_mat)) #

計算矩陣的特徵值和特徵向量

val_ind = numpy.argsort(vals) #

對特徵值排序,返回的是陣列值從小到大的索引值

val_ind = val_ind[: -(dimen + 1): -1] #

從後往前取目標尺寸

red_eig_vector = vects[:, val_ind] #

取對應的特徵向量

low_data_mat = mean_removed * red_eig_vector #

將資料對映到特徵向量空間上

return low_data_mat

機器學習之特徵工程

在工業界一直流行著一句話,資料的質量決定了模型的上線了,而特徵工程與模型的選擇只是盡可能的去逼近這個上線,當我們在資料無法改變的情況,特徵工程的優化便顯得尤為重要。我們輸入模型中,模型只認識資料,並不知道某一列所代表的含義,例如樹模型,它只會按照一定的規則去不停的分支,並不知道分支所代表的含義,而特...

機器學習之特徵工程

特徵工程是將原始資料轉化為更好代表 模型的潛在問題的特徵的過程,從而提高了對位置資料的 準確性。其包括特徵構建 特徵提取 特徵選擇三部分。資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已,成功的結果往往源自最開始對資料的處理。tf term frequency,詞的頻率,即出現的次...

機器學習之特徵工程簡介

特徵工程非常重要。對於模型的效果起大了極大的作用。實際開發中,大部分的時間都花費在特徵工程上面。特徵工程最重要的是對具體業務的深刻理解。減少資料儲存和輸入的代價,降低資料的維度 發現更多深入的特徵,提公升準確率。特徵工程和降維,是處理高維度資料的兩大主要手段。特徵變換 變 特徵提取 組 資料格式化 ...