機器學習 特徵工程

2021-08-07 19:13:00 字數 3204 閱讀 6135

*老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。

資料採集:資料採集前需要明確採集哪些資料,一般的思路為:哪些資料對最後的結果**有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?

舉例1:我現在要**使用者對商品的下單情況,或者我要給使用者做商品推薦,那我需要採集什麼資訊呢?

-店家:店鋪的評分、店鋪類別……

-商品:商品評分、購買人數、顏色、材質、領子形狀……

-使用者:歷史資訊(購買商品的最低價最**)、消費能力、商品停留時間……

資料清洗:資料清洗也是很重要的一步,機器學習演算法大多數時候就是乙個加工機器,至於最後的產品如何,取決於原材料的好壞。資料清洗就是要去除髒資料,比如某些商品的刷單資料。

那麼如何判定髒資料呢?

1) 簡單屬性判定:乙個人身高3公尺+的人;乙個人乙個月買了10w的發卡。

2) 組合或統計屬性判定:號稱在公尺國卻ip一直都是大陸的新聞閱讀使用者?你要判定乙個人是否會買籃球鞋,樣本中女性使用者85%?

3) 補齊可對應的預設值:不可信的樣本丟掉,預設值極多的字段考慮不用。

資料取樣:採集、清洗過資料以後,正負樣本是不均衡的,要進行資料取樣。取樣的方法有隨機取樣和分層抽樣。但是隨機取樣會有隱患,因為可能某次隨機取樣得到的資料很不均勻,更多的是根據特徵採用分層抽樣。

我們把特徵工程的資料分別下面幾種型別,分別來看一下其特點。

幅度調整/歸一化:python中會有一些函式比如preprocessing.minmaxscaler()將幅度調整到 [0,1] 區間。

統計值:包括max, min, mean, std等。python中用pandas庫序列化資料後,可以得到資料的統計值。

離散化:把連續值轉成非線性資料。例如電商會有各種連續的**表,從0.03到100元,假如以一元錢的間距分割成99個區間,用99維的向量代表每乙個**所處的區間,1.2元和1.6元的向量都是 [0,1,0,…,0]。pd.cut() 可以直接把資料分成若干段。

柱狀分布:離散化後統計每個區間的個數做柱狀圖。

類別型一般是文字資訊,比如顏色是紅色、黃色還是藍色,我們儲存資料的時候就需要先處理資料。處理方法有:

1.one-hot編碼,編碼後得到啞變數。統計這個特徵上有多少類,就設定幾維的向量,pd.get_dummies()可以進行one-hot編碼。

2.hash編碼成詞向量

3.histogram對映:把每一列的特徵拿出來,根據target內容做統計,把target中的每個內容對應的百分比填到對應的向量的位置。優點是把兩個特徵聯絡起來。

上表中,我們來統計「性別與愛好的關係」,性別有「男」、「女」,愛好有三種,表示成向量 [散步、足球、看電視劇集],分別計算男性和女性中每個愛好的比例得到:男[1/3, 2/3, 0],女[0, 1/3, 2/3]。即反映了兩個特徵的關係。

時間型特徵的用處特別大,既可以看做連續值(持續時間、間隔時間),也可以看做離散值(星期幾、幾月份)。資料探勘中經常會用時間作為重要特徵,比如電商可以分析節假日和購物的關係,一天中使用者喜好的購物時間等。

歷屆的kaggle/天池比賽, 天貓/京東排序和推薦業務線裡模型用到的特徵。統計的內容包括加減平均、分位線、次序型、比例類等。

比如「天池大資料之移動推薦演算法大賽」中,給比賽選手兩張表,介紹使用者和商品資訊,要求**把哪些商品推薦給使用者,使用者最有可能購買。下面是兩張表的內容:

下面舉例說明選手們是怎麼進行特徵處理的:

可見,選手需要進行制定規則、資料清洗、各個種類的特徵處理等,對特徵的研究是非常細化的。

1. 拼接型:簡單的組合特徵。例如挖掘使用者對某種型別的喜愛,對使用者和型別做拼接。正負權重,代表喜歡或不喜歡某種型別。

- user_id&&category: 10001&&女裙 10002&&男士牛仔

- user_id&&style: 10001&&蕾絲 10002&&全棉  

2. 模型特徵組合:

- 用gbdt產出特徵組合路徑

- 組合特徵和原始特徵一起放進lr訓練

特徵選擇,就是從多個特徵中,挑選出一些對結果**最有用的特徵。因為原始的特徵中可能會有冗餘和雜訊。

特徵選擇和降維有什麼區別呢?前者只踢掉原本特徵裡和結果**關係不大的, 後者做特徵的計算組合構成新特徵。

- 方法:  評估單個特徵和結果值之間的相關程度, 排序留下top相關的特徵部分。

- 評價方式:pearson相關係數, 互資訊, 距離相關度。

- 缺點:只評估了單個特徵對結果的影響,沒有考慮到特徵之間的關聯作用, 可能把有用的關聯特徵誤踢掉。因此工業界使用比較少。

- python包:selectkbest指定過濾個數、selectpercentile指定過濾百分比。

- 方法:把特徵選擇看做乙個特徵子集搜尋問題, 篩選各種特

徵子集, 用模型評估效果。

- 典型演算法:「遞迴特徵刪除演算法」。

- 應用在邏輯回歸的過程:用全量特徵跑乙個模型;根據線性模型的係數(體現相關性),刪掉5-10%的弱特徵,觀察準確率/auc的變化;逐步進行, 直至準確率/auc出現大的下滑停止。

- python包:rfe

機器學習公開課-特徵處理與特徵選擇

4月機器學習演算法班-特徵工程

特徵處理與選擇例項分析

機器學習 特徵工程

資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得 模型達到最佳。簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。實驗結果取決於獲取的資料 ...

機器學習特徵工程

作用 對字典資料進行特徵值化 dictvectorizer語法 例項化了乙個物件 data dict fit transform x print dict get feature names print data return none if name main dictvec 結果 分析 使用di...

機器學習 特徵工程

在之前學習機器學習技術中,很少關注特徵工程 feature engineering 然而,單純學習機器學習的演算法流程,可能仍然不會使用這些演算法,尤其是應用到實際問題的時候,常常不知道怎麼提取特徵來建模。特徵是機器學習系統的原材料,對最終模型的影響是毋庸置疑的。特徵工程的重要意義 資料特徵會直接影...