01 特征工程 - 概念

實際上特征工程是一個面向十分廣的概念,只要是在處理數(shù)據(jù)就可以認為是在做特征工程。個人理解中,真正意義上的特征工程還是數(shù)據(jù)降維和數(shù)據(jù)升維的過程。

而前期對數(shù)據(jù)的處理過程:
1、需要哪些數(shù)據(jù)?
2、數(shù)據(jù)如何存儲?
3、數(shù)據(jù)如何清洗?
這三步個人將其歸納到數(shù)據(jù)準備的過程。

1、需要哪些數(shù)據(jù)?
根據(jù)領(lǐng)導(dǎo)提出的一個分析要求,我們需要構(gòu)思自己需要哪些數(shù)據(jù),這個時候我們要和企業(yè)中的運維人員進行溝通,看看運維人員能夠提供哪些數(shù)據(jù)。

2、數(shù)據(jù)如何存儲?
一般如果不是那種需要一個人頂十個人的超級創(chuàng)業(yè)公司,像數(shù)據(jù)存儲的工作一般不會交給我們?nèi)ネ瓿伞?/p>

3、數(shù)據(jù)如何清洗?
對我們來說,數(shù)據(jù)準備過程中最關(guān)鍵的第一步操作是如何對數(shù)據(jù)進行清洗。比如數(shù)據(jù)庫中存的是作者和文章所在的url地址。我們可以對作者進行啞編碼的操作,對url地址返回的文章進行詞袋法的處理,等等。

4、數(shù)據(jù)特征工程
數(shù)據(jù)特征工程和數(shù)據(jù)清洗有時候概念的邊界比較模糊。有些在數(shù)據(jù)清理過程中也會遇到特征選擇的問題,但很多時候數(shù)據(jù)本身特征就少,你再做個特征選擇就更加欠擬合了??偟膩碚f實際情況實際分析。


一、需要哪些數(shù)據(jù)?

在進行機器學(xué)習(xí)之前,收集數(shù)據(jù)的過程中,我們主要按照以下規(guī)則找出我們所需要的數(shù)據(jù):

1、業(yè)務(wù)的實現(xiàn)需要哪些數(shù)據(jù)?
? 基于對業(yè)務(wù)規(guī)則的理解,盡可能多的找出對因變量有影響的所有自變量數(shù)據(jù)。

2、數(shù)據(jù)可用性評估
? 在獲取數(shù)據(jù)的過程中,首先需要考慮的是這個數(shù)據(jù)獲取的成本;
? 獲取得到的數(shù)據(jù),在使用之前,需要考慮一下這個數(shù)據(jù)是否覆蓋了所有情況以及這個數(shù)據(jù)的可信度情況。

3、一般公司內(nèi)部做機器學(xué)習(xí)的數(shù)據(jù)源:
? 用戶行為日志數(shù)據(jù):記錄的用戶在系統(tǒng)上所有操作所留下來的日志行為數(shù)據(jù)...
? 業(yè)務(wù)數(shù)據(jù):商品/物品的信息、用戶/會員的信息...
? 第三方數(shù)據(jù):爬蟲數(shù)據(jù)、購買的數(shù)據(jù)、合作方的數(shù)據(jù)...

PS:入職第一周可能就是讓你拿數(shù)據(jù),熟悉數(shù)據(jù)來源,這樣后續(xù)工作也好上手。


二、數(shù)據(jù)如何存儲?

一般情況下,用于后期模型創(chuàng)建的數(shù)據(jù)都是存在在本地磁盤、關(guān)系型數(shù)據(jù)庫或者一些相關(guān)的分布式數(shù)據(jù)存儲平臺的。
1、本地磁盤
2、MySQL
3、Oracle
4、HBase
5、HDFS
6、Hive


三、數(shù)據(jù)清洗

數(shù)據(jù)清洗(data cleaning)是在機器學(xué)習(xí)過程中一個不可缺少的環(huán)節(jié),其數(shù)據(jù)的清洗結(jié)果直接關(guān)系到模型效果以及最終的結(jié)論。在實際的工作中,數(shù)據(jù)清洗通常占開發(fā)過程的30%-50%左右的時間。

探索性數(shù)據(jù)挖掘和數(shù)據(jù)清洗 - Exploratory Data Mining and Data Cleaning
數(shù)據(jù)清洗過程:
1、數(shù)據(jù)清洗--預(yù)處理

在數(shù)據(jù)預(yù)處理過程主要考慮兩個方面,如下:

1、選擇數(shù)據(jù)處理工具:關(guān)系型數(shù)據(jù)庫或者Python;
2、查看數(shù)據(jù)的元數(shù)據(jù)以及數(shù)據(jù)特征:一是查看元數(shù)據(jù),包括\color{red}{字段解釋}\color{red}{數(shù)據(jù)來源}等一切可以描述數(shù)據(jù)的信息;另外是\color{red}{抽取一部分數(shù)據(jù)},通過人工查看的方式,對數(shù)據(jù)本身做一個比較直觀的了解,并且初步發(fā)現(xiàn)一些問題,為之后的數(shù)據(jù)處理做準備。

\color{red}{注意:建模、做特征前要將字段解釋、數(shù)據(jù)來源了解得滾瓜爛熟。}
再用data.describe() 抽取一部分數(shù)據(jù)通過人工查看,進一步分析。

作為研究者,我們不能為了完成任務(wù)而完成任務(wù),至少在數(shù)據(jù)層面上必須要嚴謹,做出來的模型必須要起到作用。很多時候,客戶要求模型的準確率達到98%,不過也許我們能給出的模型一般在91%~92%,但是必須保證我們分析的數(shù)據(jù)是絕對有用的,有解釋意義的。這樣的模型也許在指標上沒有完成客戶的需求,但模型也是有價值的。

反之有些分析師為了獲得更好的模型評分,強行加入一些沒有意義的奇怪數(shù)據(jù),這樣一來在當(dāng)前的數(shù)據(jù)集中能夠跑出很好的評分,到了實際運用中結(jié)果會很差。這就是過擬合。

2、數(shù)據(jù)清洗--格式內(nèi)容錯誤數(shù)據(jù)

一般情況下,數(shù)據(jù)是由用戶/訪客產(chǎn)生的,也就有很大的可能性存在格式和內(nèi)容上不一致的情況,所以在進行模型構(gòu)建之前需要先進行數(shù)據(jù)的格式內(nèi)容清洗操作。格式內(nèi)容問題主要有以下幾類:

1、時間、日期、數(shù)值、半全角等顯示格式不一致:直接將數(shù)據(jù)轉(zhuǎn)換為一類格式即可,該問題一般出現(xiàn)在多個數(shù)據(jù)源整合的情況下。

2、內(nèi)容中有不該存在的字符:最典型的就是在頭部、中間、尾部的空格等問題,這種情況下,需要以半自動校驗加半人工方式來找出問題,并去除不需要的字符。

3、內(nèi)容與該字段應(yīng)有的內(nèi)容不符:比如姓名寫成了性別、身份證號寫成手機號等問題。

3、數(shù)據(jù)清洗--邏輯錯誤清洗

主要是通過簡單的邏輯推理發(fā)現(xiàn)數(shù)據(jù)中的問題數(shù)據(jù),防止分析結(jié)果走偏,主要包含以下幾個步驟:

1、數(shù)據(jù)去重。
2、去除/替換不合理的值。
3、去除/重構(gòu)不可靠的字段值(修改矛盾的內(nèi)容)

4、數(shù)據(jù)清洗--去除不需要的數(shù)據(jù)

一般情況下,我們會盡可能多的收集數(shù)據(jù),但是不是所有的字段數(shù)據(jù)都是可以應(yīng)用到模型構(gòu)建過程的,也不是說將所有的字段屬性都放到構(gòu)建模型中,最終模型的效果就一定會好,實際上來講,字段屬性越多,模型的構(gòu)建就會越慢,所以有時候可以考慮將不要的字段進行刪除操作。在進行該過程的時候,要注意備份原始數(shù)據(jù)。

5、數(shù)據(jù)清洗--關(guān)聯(lián)性

如果數(shù)據(jù)有多個來源,那么有必要進行關(guān)聯(lián)性驗證,該過程常應(yīng)用到多數(shù)據(jù)源合并的過程中,通過驗證數(shù)據(jù)之間的關(guān)聯(lián)性來選擇比較正確的特征屬性。

比如:汽車的線下購買信息和電話客服問卷信息,兩者之間可以通過姓名和手機號進行關(guān)聯(lián)操作,匹配兩者之間的車輛信息是否是同一輛,如果不是,那么就需要進行數(shù)據(jù)調(diào)整。

6、數(shù)據(jù)清洗--采樣

02 特征工程 - 數(shù)據(jù)不平衡

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容