目錄
1.資料清洗
2.取樣
2.特徵工程
數值型:
(1) 幅度縮放(最大最小值縮放,歸一化。。。)
(2)離散化/分箱分桶(等距pd.cut ,等頻pd.qcut)(非線性,加速,特徵交叉,健壯性)
(3)統計值:(max,min ,quantile,均值,中位數,眾數,分位數)
(4)四則運算:(加減乘除)
(5)幅度變化:(有一些模型對於輸入資料有分布假設,lr假設輸入連續值特徵符合正態分佈,log1p/exp)
(6)監督學習分布(用決策樹建模,用決策樹學習連續值劃分方式,把決策樹中間節點取出來作為組合特徵)
類別型(1)label encoding
(2)onehot encoding(啞變數)
(3)雜湊技巧
(4)histogram對映
時間型文字型
統計型組合特徵
3.特徵選擇
我們為什麼要做特徵工程?
給我們一些資料,我們首先要了解這部分資料,然後對資料進行學習,得到我們想要的結果。
但是,給我們的資料適合我們學習嗎,是不是所有的資料都要用?特徵工程就是對資料進行一些處理,提取有效資訊,使資料符合模型的輸入要求,得到更好的結果。其實我們大部分時間都花在特徵工程上面,乙個好的特徵工程,也許並不需要特別複雜的模型,就能得到很好的效果。
原材料 + 機器 = 產品
乙個好的產品需要好的原材料和機器,特徵工程類似於原材料的加工過程,機器類似於我們的演算法模型。
在進行特徵工程之前,先對資料進行清洗:
為什麼需要取樣?
對於一些分類問題,有時候資料中正負樣本是不均衡的,而有些模型對於正負樣本比較敏感,(比如說邏輯回歸,正樣本多於負樣本,那麼正樣本的概率就大於負樣本概率,決策邊界可能會拉向正樣本)
常見的取樣方法:隨機取樣 分層取樣
怎樣解決正負樣本不均衡的問題?
數值型,類別型,時間型,文字型,統計型,組合特徵型
為什麼需要幅度縮放?
假如說乙個用邏輯回歸訓練模型,但是每個樣本不同屬性下的數值範圍差異很大(年齡:1-60 薪資:5000-10000)這樣的話根據邏輯回歸,不同的屬性下要配備不同的權重,可能薪資的權重就很大,這樣符合實際嗎?不一定吧。有可能年齡對最終的結果影響更大。所以我們要把這些屬性的值都劃歸到乙個數量級,有利於權重的劃分。
上圖為例:具有兩個特徵的邏輯回歸梯度下降,如果不進行歸一化,量綱不一樣,就會形成左圖瘦長圓,梯度下降時,沿著等高線垂直下降,就會形成之字形,走很多彎路,浪費時間。右圖是歸一化之後,訓練較快,加快梯度下降求最優解的速度。
常見的縮放方式(離散標準化):(實際值-min)/(max-min) 前提是單維資料符合正態分佈,數值比較集中
適用場景:(1)概率模型不需要歸一化,因為概率模型不關心變數的的取值,而是關心變數的分布和變數之間的條件概率
(2)svm,線性回歸類的最優化問題需要歸一化,是否歸一化取決於是否關心變數的取值
(3)神經網路模型需要標準化,是為了弱化某些變數的值較大對結果產生影響
(4)在k近鄰演算法中,如果不對解釋變數進行標準化,那麼具有小數量級的解釋變數的影響就會微乎其微。
為什麼需要離散化?連續值不好嗎?
對於一些連續值來說,它們每部分的重要程度是不一樣的,不能夠等同看待,這就需要把連續值離散化。比如說,年齡3-66歲的連續值,要給老人孩子讓座,我們該怎麼讓座,10歲以下的讓座,11-60歲的不需要,60歲以上的需要讓座,假如使用邏輯回歸模型,那麼10歲以下不需要讓座,60以上需要讓座,不符合常理,所以離散化,10歲以下的乙個特徵,11-60歲的不需要,60歲以上的乙個特徵,這樣才符合實際。
樹模型:不需要離散化,樹模型可以產生區間和規則。
神經網路:需要離散化。
常見的離散化方式有:(1)等距切分 只考慮邊界,最大與最小之間按照一定的比例切成幾段,比如0-100歲,等距切分:0-10 11-20 21-30. ...
(2)等頻切分:不考慮邊界,每段區間中的樣本點數量相同 比如比如0-100歲,等頻切分:每50人分一組
缺點:落在正確區間的偶然性比較大
比方說,紅黃藍綠,計算機是讀不懂的,所以給他們編碼(label encoding)為1,2,3,4,這樣計算機就能知道了,
但是顏色應該相等的,不應該有大小區別,這就有了one-hot 編碼。黃藍
綠紅黃1
000藍
0100
綠001
0紅00
時間點/時間段(星期幾,幾點鐘)
時間分組/時間分段(工作日,週末,法定節假日)
時間間隔(距離當前為止。。。)
和數值型一起做統計特徵的時候,會會選取不同的時間窗
組合(1)詞袋模型
(3)lda(主題模型)
(4)word2vec/word embedding(是乙個稠密向量)
加減平均,分位線,次序,比例
簡單的特徵組合:根據實際情況,自己拼接
模型特徵組合:用gbdt產生組合路徑,組合特徵和原始特徵一起放進lr訓練
原因:雜訊:部分特徵對**結果有負影響
方式:
機器學習 特徵工程
老師有多年的網際網路從業經驗,所以講解的過程中結合了很多任務業界的應用,更加的深入淺出。資料採集 資料採集前需要明確採集哪些資料,一般的思路為 哪些資料對最後的結果 有幫助?資料我們能夠採集到嗎?線上實時計算的時候獲取是否快捷?舉例1 我現在要 使用者對商品的下單情況,或者我要給使用者做商品推薦,那...
機器學習 特徵工程
資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已。通俗的說,就是盡可能的從原始資料中獲取更多資訊,從而使得 模型達到最佳。簡而言之,特徵工程是乙個把原始資料變成特徵的過程,這些特徵可以很好的描述資料,並且利用它們建立的模型在未知資料上表現效能可以達到最優。實驗結果取決於獲取的資料 ...
機器學習特徵工程
作用 對字典資料進行特徵值化 dictvectorizer語法 例項化了乙個物件 data dict fit transform x print dict get feature names print data return none if name main dictvec 結果 分析 使用di...