想象一下未來美好的一天,你學完了菜菜的課程,成為乙個精通各種演算法和調參調庫的資料探勘工程師了。某一天你從你的同事,一位藥物研究人員那裡,得到了乙份病人臨床表現的資料。藥物研究人員用前四列資料**一下最後一資料,還說他要出差幾天,可能沒辦法和你一起研究資料了,希望出差回來以後,可以有個初步分析結果。於是你就看了看資料,看著很普通,**連續型變數,好說,導隨機森林回歸器調出來,調參調呀調,mse很小,跑了個還不錯的結果。
幾天後,你同事出差回來了,準備要一起開會了,會上你碰見了和你同事在同乙個專案裡工作的統計學家。他問起你的分析結果,你說你已經小有成效了,統計學家很吃驚,他說:「不錯呀,這組資料問題太多,我都分析不出什麼來。」
你心裡可能咯噔一下,忐忑地回答說:「我沒聽說資料有什麼問題呀。」
於是統計學家說:「誒?沒人告訴你說,最後一列資料如果取個對數,結果會更好嗎?」
你內心毫無波動:「沒。」
統計學家:「誒那你肯定聽說了第四列資料有點問題吧,這個特徵的取值範圍是1~10,0是表示缺失值的。而且他們輸入資料的時候出錯,很多10都被錄入成0了,現在分不出來了。」
你:」…「
你:」這個我發現了,不過這兩個特徵在**中的重要性都不高,無論其他特徵怎樣出錯,我這邊結果裡顯示第一列的特徵是最重要的,所以也無所謂啦。「
統計學家:「啥?第一列不就是編號嗎?」
你:「不是吧。」
統計學家:「哦我想起來了!第一列就是編號,不過那個編號是我們根據第五列排序之後編上去的!這個第一列和第五列是由很強的聯絡,但是毫無意義啊!」
老血噴了一螢幕,資料探勘工程師卒。
這個悲慘又可愛的故事來自《資料探勘導論》,雖然這是故事裡的狀況十分極端,但我還是想把這段對話作為今天這章的開頭,博大家一笑(雖然可能聽完就淚流滿面了)。在過去兩周,我們已經講了兩個演算法:決策樹和隨機森林,我們通過決策樹帶大家認識了sklearn,通過隨機森林講解了機器學習中調參的基本思想,現在可以說,只要上過前面兩堂課的,人人都會調隨機森林和決策樹的分類器了,而我呢,也只需要跟著各大機器學習書籍的步伐,給大家一周乙個演算法帶著講解就是了。如果這樣的話,結果可能就是,大家去工作了,遇到了乙個不那麼靠譜的同事,給了你一組有坑的資料,最後你就一螢幕老血吐過去,犧牲在資料行業的前線了。
資料不給力,再高階的演算法都沒有用。
我們在課堂中給大家提供的資料,都是經過層層篩選,適用於課堂教學的——執行時間短,**效果好,沒有嚴重缺失等等問題。尤其是sklearn中的資料,堪稱完美。各大機器學習教材也是如此,都給大家提供處理好的資料,這就導致,很多人在學了很多演算法之後,到了現實應用之中,發現模型經常就調不動了,因為現實中的資料,離平時上課使用的完美資料集,相差十萬八千里。所以我決定,少講一兩個簡單的演算法,為大家專門拿一堂課來講解建模之前的流程,資料預處理和特徵工程。這樣大家即可以學到資料探勘過程中很重要但是卻經常被忽視的一些步驟,也可以不受課堂的限制,如果自己有時間,可以嘗試在真實資料上建模。
資料探勘的五大流程:
1. 獲取資料
2.資料預處理
資料預處理是從資料中檢測,糾正或刪除損壞,不準確或不適用於模型的記錄的過程
可能面對的問題有:資料型別不同,比如有的是文字,有的是數字,有的含時間序列,有的連續,有的間斷。也可能,資料的質量不行,有雜訊,有異常,有缺失,資料出錯,量綱不一,有重複,資料是偏態,資料量太大或太小
資料預處理的目的:讓資料適應模型,匹配模型的需求
3.特徵工程:
特徵工程是將原始資料轉換為更能代表**模型的潛在問題的特徵的過程,可以通過挑選最相關的特徵,提取特徵以及創造特徵來實現。其中創造特徵又經常以降維演算法的方式實現。
可能面對的問題有:特徵之間有相關性,特徵和標籤無關,特徵太多或太小,或者乾脆就無法表現出應有的資料現象或無法展示資料的真實面貌
特徵工程的目的:1) 降低計算成本,2) 提公升模型上限
4. 建模,測試模型並**出結果
5. 上線,驗證模型效果
3 6 11 資料探勘中的資料預處理
data mining concepts and techniques 是經典的資料探勘入門書籍,內容囊括資料探勘的基本概念 資料的預處理 資料的儲存 資料中模式的挖掘 分類 聚類 異常檢測等方面,作者是著名的韓家煒教授。資料的預處理在真實世界資料中是非常關鍵的一步,它既是不同資料探勘應用的共同起點...
基於FSL的DTI資料預處理流程
我用的資料是philips的資料,如果是ge或者西門子的資料可能會有所不同。原始資料 包括3dt1資料和高解析度dti資料,均是dicom格式。工具 mricron和fsl,所有的命令均在linux的終端中執行。1.格式轉換 將字尾名為dcm的原始資料轉換為字尾名為nii.gz格式的資料。nii.g...
Redis的五大常用資料型別
redis命令大全 redisdoc.com 鍵 鍵 keys 查詢當前資料庫的所有金鑰 exists key的名字 判斷某個key是否存在 move key的名字資料庫 移動當前的某個key到指定資料庫 ttl key的名字 檢視key還有多少時間過期,1表示永不過期,2表示已經過期 type k...