實際上特征工程是一個面向十分廣的概念,只要是在處理數據就可以認為是在做特征工程。個人理解中,真正意義上的特征工程還是數據降維和數據升維的過程。
而前期對數據的處理過程:
1、需要哪些數據?
2、數據如何存儲?
3、數據如何清洗?
這三步個人將其歸納到數據準備的過程。
1、需要哪些數據?
根據領導提出的一個分析要求,我們需要構思自己需要哪些數據,這個時候我們要和企業中的運維人員進行溝通,看看運維人員能夠提供哪些數據。
2、數據如何存儲?
一般如果不是那種需要一個人頂十個人的超級創業公司,像數據存儲的工作一般不會交給我們去完成。
3、數據如何清洗?
對我們來說,數據準備過程中最關鍵的第一步操作是如何對數據進行清洗。比如數據庫中存的是作者和文章所在的url地址。我們可以對作者進行啞編碼的操作,對url地址返回的文章進行詞袋法的處理,等等。
4、數據特征工程
數據特征工程和數據清洗有時候概念的邊界比較模糊。有些在數據清理過程中也會遇到特征選擇的問題,但很多時候數據本身特征就少,你再做個特征選擇就更加欠擬合了。總的來說實際情況實際分析。
一、需要哪些數據?
在進行機器學習之前,收集數據的過程中,我們主要按照以下規則找出我們所需要的數據:
1、業務的實現需要哪些數據?
? 基于對業務規則的理解,盡可能多的找出對因變量有影響的所有自變量數據。
2、數據可用性評估
? 在獲取數據的過程中,首先需要考慮的是這個數據獲取的成本;
? 獲取得到的數據,在使用之前,需要考慮一下這個數據是否覆蓋了所有情況以及這個數據的可信度情況。
3、一般公司內部做機器學習的數據源:
? 用戶行為日志數據:記錄的用戶在系統上所有操作所留下來的日志行為數據...
? 業務數據:商品/物品的信息、用戶/會員的信息...
? 第三方數據:爬蟲數據、購買的數據、合作方的數據...
PS:入職第一周可能就是讓你拿數據,熟悉數據來源,這樣后續工作也好上手。
二、數據如何存儲?
一般情況下,用于后期模型創建的數據都是存在在本地磁盤、關系型數據庫或者一些相關的分布式數據存儲平臺的。
1、本地磁盤
2、MySQL
3、Oracle
4、HBase
5、HDFS
6、Hive
三、數據清洗
數據清洗(data cleaning)是在機器學習過程中一個不可缺少的環節,其數據的清洗結果直接關系到模型效果以及最終的結論。在實際的工作中,數據清洗通常占開發過程的30%-50%左右的時間。
數據清洗過程:
1、數據清洗--預處理
在數據預處理過程主要考慮兩個方面,如下:
1、選擇數據處理工具:關系型數據庫或者Python;
2、查看數據的元數據以及數據特征:一是查看元數據,包括、
等一切可以描述數據的信息;另外是
,通過人工查看的方式,對數據本身做一個比較直觀的了解,并且初步發現一些問題,為之后的數據處理做準備。
再用data.describe()
抽取一部分數據通過人工查看,進一步分析。
作為研究者,我們不能為了完成任務而完成任務,至少在數據層面上必須要嚴謹,做出來的模型必須要起到作用。很多時候,客戶要求模型的準確率達到98%,不過也許我們能給出的模型一般在91%~92%,但是必須保證我們分析的數據是絕對有用的,有解釋意義的。這樣的模型也許在指標上沒有完成客戶的需求,但模型也是有價值的。
反之有些分析師為了獲得更好的模型評分,強行加入一些沒有意義的奇怪數據,這樣一來在當前的數據集中能夠跑出很好的評分,到了實際運用中結果會很差。這就是過擬合。
2、數據清洗--格式內容錯誤數據
一般情況下,數據是由用戶/訪客產生的,也就有很大的可能性存在格式和內容上不一致的情況,所以在進行模型構建之前需要先進行數據的格式內容清洗操作。格式內容問題主要有以下幾類:
1、時間、日期、數值、半全角等顯示格式不一致:直接將數據轉換為一類格式即可,該問題一般出現在多個數據源整合的情況下。
2、內容中有不該存在的字符:最典型的就是在頭部、中間、尾部的空格等問題,這種情況下,需要以半自動校驗加半人工方式來找出問題,并去除不需要的字符。
3、內容與該字段應有的內容不符:比如姓名寫成了性別、身份證號寫成手機號等問題。
3、數據清洗--邏輯錯誤清洗
主要是通過簡單的邏輯推理發現數據中的問題數據,防止分析結果走偏,主要包含以下幾個步驟:
1、數據去重。
2、去除/替換不合理的值。
3、去除/重構不可靠的字段值(修改矛盾的內容)
4、數據清洗--去除不需要的數據
一般情況下,我們會盡可能多的收集數據,但是不是所有的字段數據都是可以應用到模型構建過程的,也不是說將所有的字段屬性都放到構建模型中,最終模型的效果就一定會好,實際上來講,字段屬性越多,模型的構建就會越慢,所以有時候可以考慮將不要的字段進行刪除操作。在進行該過程的時候,要注意備份原始數據。
5、數據清洗--關聯性
如果數據有多個來源,那么有必要進行關聯性驗證,該過程常應用到多數據源合并的過程中,通過驗證數據之間的關聯性來選擇比較正確的特征屬性。
比如:汽車的線下購買信息和電話客服問卷信息,兩者之間可以通過姓名和手機號進行關聯操作,匹配兩者之間的車輛信息是否是同一輛,如果不是,那么就需要進行數據調整。