從零構(gòu)建機(jī)器學(xué)習(xí)模型(一)數(shù)據(jù)預(yù)處理初階

這篇文章我將從兩個(gè)方面寫一些機(jī)器學(xué)習(xí)模型的事項(xiàng),一是如何從真實(shí)數(shù)據(jù)中抽取數(shù)據(jù)集蜗细,二是如何從數(shù)據(jù)集構(gòu)建機(jī)器學(xué)習(xí)模型怒详。因?yàn)榈谝徊糠制蚬I(yè)應(yīng)用昆烁,我們先從第二部分開始。內(nèi)容比較多白粉,大概要好幾篇文章才能寫完吧(╯‵□′)╯︵┻━┻

1.構(gòu)建機(jī)器學(xué)習(xí)模型

我們首先從最常見的Supervised Learning開始鼠渺,之后會(huì)介紹unsupervised Learning及Reinforce Learning算法的一些細(xì)節(jié)。

1.1 數(shù)據(jù)分析(Data Exploration)

一般來(lái)說(shuō)我們提取后的的數(shù)據(jù)集可能并不是像SPAM或者M(jìn)NIST的標(biāo)準(zhǔn)數(shù)據(jù)集鹃祖,我們需要在觀察數(shù)據(jù)的過(guò)程中思考以下幾個(gè)問(wèn)題:

  1. 數(shù)據(jù)應(yīng)該怎么清洗和處理才是合理的恬口?
  2. 數(shù)據(jù)中的哪些特征會(huì)對(duì)標(biāo)簽的預(yù)測(cè)有幫助沼侣?
  3. Balanced Or Unbalanced問(wèn)題?
  4. 根據(jù)數(shù)據(jù)的類型可以挖掘怎樣的特征?

1.1.1 數(shù)據(jù)預(yù)處理(Data Preprocessing)

(1)首先我們要考慮對(duì)數(shù)據(jù)進(jìn)行分析,因?yàn)閿?shù)據(jù)的特征項(xiàng)可能并不是同一量綱雅潭,甚至不是一種數(shù)據(jù)類型,直接比較可能導(dǎo)致溢出以及分析誤差筛圆。我們主要考慮以下方面:

  1. 是否要對(duì)特征向量化椿浓,一般除了決策樹這種對(duì)特征不敏感的算法外扳碍,其他大部分都是只能取數(shù)值類型變量,需要進(jìn)行合適的編碼操作碱蒙,常用的有One-hot Encoding(但會(huì)導(dǎo)致Sparse及抹除數(shù)據(jù)相關(guān)性等問(wèn)題)夯巷,哈夫曼編碼(復(fù)雜度問(wèn)題)等趁餐;
  2. 是否要對(duì)連續(xù)變量進(jìn)行分割,因?yàn)橐恍┤鏜AP等概率算法一般無(wú)法處理連續(xù)變量季惯;
  3. 是否要考慮數(shù)據(jù)的序數(shù)特性喷面,對(duì)此類數(shù)據(jù)要用有序的編碼方式如rank編碼或序數(shù)編碼惧辈;
  4. 是否要考慮數(shù)據(jù)的特殊性,如時(shí)間變量念逞,一般可以獨(dú)立地作為核心變量边翁;

(2)在做后續(xù)數(shù)據(jù)處理之前,我的建議是先進(jìn)行數(shù)據(jù)歸一化(Data Nomalization)叨咖,同樣因?yàn)椴煌瑪?shù)據(jù)之間的量綱可能是不同的,先進(jìn)行歸一化可以防止我們?cè)诜治鰯?shù)據(jù)時(shí)意外抹除了一些有效地特征甸各,這里一般會(huì)用maxminmap算法及z-score算法(quantile normalization也有趣倾,不過(guò)不常見)等,前者將特征映射到[-1,+1],后者將特征映射到零均值單位方差的高斯區(qū)間善绎。

這里提一下Normalization的作用:

  1. 規(guī)范化特征诫尽,保證特征之間可以比較箱锐,這一點(diǎn)可以參考SVM;
  2. 加速訓(xùn)練過(guò)程及表現(xiàn)Performance浩聋,這一點(diǎn)可以參考反向傳播梯度更新問(wèn)題臊恋,也就是Adam和RMSprop算子的核心抖仅;
  3. 減少溢出錯(cuò)誤的可能,這一點(diǎn)可以參考C語(yǔ)言等的溢出問(wèn)題环凿,Python因?yàn)槭褂肂lock塊存儲(chǔ)數(shù)據(jù)放吩,這方面的問(wèn)題可能還好一些;
v2-ccf9dd6f5665af03da632cbd2c0a5fec_r.jpg

但Normalization也有問(wèn)題到推,比較明顯的是舍入誤差莉测,以及均值信息的移除唧喉。

最后一些分類器如樸素貝葉斯Naive Bayer在做連乘積的過(guò)程中不進(jìn)行Normalization可能會(huì)導(dǎo)致算法失效,不過(guò)算是特例梯找,大部分分類器沒(méi)有這個(gè)問(wèn)題益涧。

(3)由于收集的數(shù)據(jù)不是完美的驯鳖,我們要考慮數(shù)據(jù)是否是滿的(full data set)浅辙,如果數(shù)據(jù)不是滿的,我們就必須要考慮對(duì)數(shù)據(jù)進(jìn)行清洗或者數(shù)據(jù)填充鸽捻。數(shù)據(jù)清洗一般可以選擇直接刪除column不滿的樣本或者不滿的特征族泽腮,優(yōu)點(diǎn)是不會(huì)引入錯(cuò)誤數(shù)據(jù)诊赊,但缺點(diǎn)是造成數(shù)據(jù)丟失,而數(shù)據(jù)填充則可以選擇依據(jù)中值碘箍,均值鲸郊,零以及概率填充等方式保留樣本項(xiàng)秆撮,優(yōu)缺點(diǎn)與前者正好相反。概率填充在決策樹模型比較常用峻黍,而更一般的我們會(huì)選擇保留特征觀察后再考慮填充與運(yùn)用拨匆。

1.1.2 數(shù)據(jù)分析(Data Analysis)

接下來(lái)我們要考慮特征的相關(guān)性(Data Relevance)惭每,低相關(guān)性模型可能是邊緣特征亏栈,也可能是噪聲绒北,我們需要對(duì)這部分特征進(jìn)行分類處理察署。一般來(lái)說(shuō)分析相關(guān)性有以下方法:

a.皮爾遜相關(guān)系數(shù)贴汪,描述了特征與標(biāo)簽的線性相關(guān)性,但是在高次特征可能失效业簿;

b.斯皮爾曼相關(guān)秩阳懂,描述了特征與標(biāo)簽的秩相關(guān)性岩调,比較常用;

c.卡方檢驗(yàn)矾湃,描述特征相關(guān)性堕澄,常用與檢驗(yàn)特征的獨(dú)立性蛙紫;

不過(guò)這三種是理論方法,在現(xiàn)實(shí)應(yīng)用上我們更多用的是特征工程:

特征工程到底是什么僵驰?城東的回答

總結(jié)一下蒜茴,也就是要移除低方差(low variance)浆西,共線性(cor-linear),難編碼诺核,低相關(guān)(low relevance)及不合理(outlier)的特征窖杀。一般來(lái)說(shuō)常用的有繪制histogram或者coefficient matrix做處理前后的分析。

例如在分析某個(gè)特征的分布常用的hisogram

v2-bd1f049395a0c44874a52fd88bca69fe_hd.jpg

以及分析變量相關(guān)性的coefficient matrix:

v2-277682c2cc4f02ff083592d84545219c_hd.jpg

用法很多,建議多嘗試吧,我就不具體舉例了锅风。

1.1.3 數(shù)據(jù)聚合(Data Aggregation)

這里的數(shù)據(jù)組合其實(shí)也就是對(duì)一般的數(shù)據(jù)特征鞍泉,我們可以組合產(chǎn)生高次特征咖驮,這一點(diǎn)可以參考SVM的Kernel方法训枢,對(duì)特征進(jìn)行組合并升維恒界,使得樣本在高維度更容易分類』Ь矗或者對(duì)一些變量進(jìn)行聚合,例如小時(shí)間區(qū)間聚合成大事件區(qū)間。這個(gè)方法有太多的tricks我并不太喜歡搓彻,不過(guò)數(shù)據(jù)集比賽效果似乎很好嘱朽。稍微舉個(gè)栗子:

假設(shè)有樣本:

特征1 特征2

  1. a t1
  2. b t2

前者的大意就是生成特征3(at1) 搪泳,特征4(aa),特征5(abb) etc.

后者則是如果t1-t2間隔過(guò)小就把樣本1,2合并,特征去max或者mean都可以靶端。

1.1.4 數(shù)據(jù)擴(kuò)充(Data Boost)

而后我們考慮一下,加入數(shù)據(jù)集不是平衡的脏榆,也就是Balanced Or Unbalanced問(wèn)題须喂。例如大量正樣本趁蕊,少量負(fù)樣本掷伙,我們可以用ROC或者PC圖分析分類器結(jié)果,但很難依據(jù)這些不平衡訓(xùn)練好的分類器卒废,此時(shí)我們可以考慮down-sampling的隨機(jī)采樣或up-sampling的數(shù)據(jù)增強(qiáng)(Data Augmentation)宙地。down-sampling很直接宅粥,而up-sampling可能我再簡(jiǎn)單說(shuō)明一下比較好秽梅。

up-sampling最常用的方式是SMOTE算法(Synthetic Minority Over-sampling Technique),其實(shí)也就是通過(guò)k個(gè)小類的最近鄰用line segments joining產(chǎn)生synthetic的樣本(原諒我沒(méi)想出個(gè)好的翻譯方式[(σ-`д?′)好氣]况鸣。

v2-41d4c37c464a8fbea40cf95e3f5718ff_hd.jpg

基本產(chǎn)生也很簡(jiǎn)單 C=aA+(1-a)B镐捧,用滑動(dòng)變量a做不同的k近鄰的trade-off來(lái)產(chǎn)生新的偽樣本臭增,具體可以參考Chawla,Hall,& Kegelmeyer在2002的論文誊抛。但是這個(gè)算法的問(wèn)題是新數(shù)據(jù)只會(huì)在舊樣本內(nèi)部,代表性可能遠(yuǎn)小于舊樣本瞎领,參考SVM的非支持向量九默,因此隨后出現(xiàn)Borderline SMOTE及ADASYN。

另一種則是SPO(Structure Preserving Oversampling)殿遂,這個(gè)我沒(méi)想好怎么解釋墨礁,可能看一下這篇論文比較好:

Structure Preserving Oversampling for Imbalanced Time Series Classification (icdm 2011)

以及Integrated Oversampling for Imbalanced Time Series Classification (TKDE,2013)

v2-463f7969e94399b4e36491abf86426e8_hd.jpg

最后我們可以做optimal的選擇恩静,也就是數(shù)據(jù)增強(qiáng)(Data augmentation)蹲坷。常用的有以下兩種不同的使用場(chǎng)合:

  1. 對(duì)文本類的文字特征可以考慮添加語(yǔ)法語(yǔ)義諸如Pos-tagger,Parsing及FOL等擴(kuò)充冠句,我們留到NLP算法再做講解及實(shí)現(xiàn)幸乒;
  2. 對(duì)圖形的像素特征罕扎,我們可以運(yùn)用包括切割(clip),旋轉(zhuǎn)(rotate)杆查,翻轉(zhuǎn)(reverse)臀蛛,縮放(scale)等方法做數(shù)據(jù)集的擴(kuò)充,具體可以參考:Keras中文文檔(圖片預(yù)處理) 這其實(shí)是因?yàn)樵谧霰荣悤r(shí)數(shù)據(jù)可能并不足夠支撐復(fù)雜模型浊仆,我們用數(shù)據(jù)增強(qiáng)的方式降低模型的方差抡柿。在這一點(diǎn)上,諸如銳化鈍化备蚓,高斯模糊郊尝,色相變換甚至尺度空間從原理上都是可以做為數(shù)據(jù)增強(qiáng)項(xiàng)的,可能是因?yàn)閺?fù)雜度的關(guān)系才沒(méi)有廣泛應(yīng)用同欠;

1.1.5 數(shù)據(jù)降維(Dimension Deduction)

這里主要提兩種算法铺遂,PCA和LDA茎刚,實(shí)施細(xì)節(jié)及其他的算法可以參考以下鏈接:

四大機(jī)器學(xué)習(xí)降維算法:PCA膛锭、LDA、LLE莫杈、Laplacian Eigenmaps

做數(shù)據(jù)降維的主要目的是將特征重新投影到新的空間筝闹,以求新維度空間可以以一個(gè)低維度的尺度來(lái)描述高緯度的原始數(shù)據(jù)腥光,并最大可能保留原始信息武福。降維可以在降低模型冗余的同時(shí)減少噪音,發(fā)掘本質(zhì)特征及解決Sparse問(wèn)題平痰,但計(jì)算的空間復(fù)雜度極大,在模型較小的時(shí)候我們有時(shí)會(huì)采用這種算法觉增,不過(guò)現(xiàn)代模型用處可能不大逾礁,尤其是在HDFS環(huán)境下,我們更希望模型是獨(dú)立的而不是PCA腻扇,LDA這種比較global的算法幼苛,獨(dú)立的算法更便于我們部署MapReduce的設(shè)計(jì)焕刮。Spark的流式RDD圖可能會(huì)有g(shù)lobal的一些優(yōu)化吧配并,只能以后研究清楚再來(lái)說(shuō)明了。

PCA算是最常用的數(shù)據(jù)降維方式畸冲,核心思路是將原始特征空間映射到彼此正交的特征向量對(duì)應(yīng)的空間邑闲,復(fù)雜度主要集中在分解特征向量的過(guò)程梧油,而一般數(shù)據(jù)在非滿秩的情況下更多會(huì)用SVD分解來(lái)構(gòu)建特征向量儡陨;

v2-22d18a2ab20c57d60ee4d90eb92d4176_hd.jpg

LDA則是在PCA的基礎(chǔ)上要求最小化組內(nèi)距的同時(shí)最大化組間距迄委,其實(shí)也就是fisher法則叙身。

v2-790f751b1655d5e147673ccca5d6d921_hd.jpg

以上主要是數(shù)據(jù)的分析部分信轿,下一篇我們開始討論模型選擇及模型原理分析残吩。

最后在這篇的結(jié)尾再補(bǔ)充點(diǎn)具體的東西泣侮,以后大概會(huì)在每篇結(jié)尾寫一些具體結(jié)構(gòu)活尊。今天主要說(shuō)一下DQN這個(gè)東西吧漏益。Stanford的公開課有專門介紹這個(gè)鬼東西的绰疤,其實(shí)我覺(jué)得這個(gè)東西用generator類比可能比較合適舞终。

傳統(tǒng)的RL算法不論是Dynamic Programming還是Q-learning都需要基于Reward矩陣構(gòu)建Value矩陣以作迭代敛劝,思路很直接攘蔽,Bellman公式也很容易接受龙屉,但是有個(gè)問(wèn)題,就是需要的狀態(tài)矩陣可能及其龐大满俗,一個(gè)256256的像素游戲转捕,就需要pow(256,256256)的狀態(tài),這是不可接受的唆垃。而DQN則將256的像素作為輸入值五芝,256*256的像素點(diǎn)作為輸入特征,通過(guò)權(quán)值擬合來(lái)達(dá)到比較好的分離辕万,或者說(shuō)低維度表示高緯度枢步。

每次在轉(zhuǎn)移狀態(tài)時(shí),傳統(tǒng)算法用的是O(1)的hashmap,這個(gè)hashmap的空間就是算法的局限性渐尿,尤其是在狀態(tài)無(wú)限時(shí),算法會(huì)直接失效砖茸,這一點(diǎn)可以參考self-driving的問(wèn)題隘擎。

而DQN用的是MLP的深層網(wǎng)絡(luò),相當(dāng)于時(shí)間換空間凉夯,不過(guò)更多的是通過(guò)擬合產(chǎn)生對(duì)新狀態(tài)的判斷货葬,解決了RL算法中無(wú)法對(duì)新狀態(tài)做估計(jì)的問(wèn)題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市劲够,隨后出現(xiàn)的幾起案子震桶,更是在濱河造成了極大的恐慌,老刑警劉巖征绎,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹲姐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淤堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門寝衫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人拐邪,你說(shuō)我怎么就攤上這事慰毅。” “怎么了扎阶?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵汹胃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我东臀,道長(zhǎng)着饥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任惰赋,我火速辦了婚禮宰掉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赁濒。我一直安慰自己轨奄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布拒炎。 她就那樣靜靜地躺著挪拟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪击你。 梳的紋絲不亂的頭發(fā)上玉组,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音丁侄,去河邊找鬼惯雳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸿摇,可吹牛的內(nèi)容都是我干的吨凑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼户辱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了糙臼?” 一聲冷哼從身側(cè)響起庐镐,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎变逃,沒(méi)想到半個(gè)月后必逆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年名眉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粟矿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡损拢,死狀恐怖陌粹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情福压,我是刑警寧澤掏秩,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站荆姆,受9級(jí)特大地震影響蒙幻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胆筒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一邮破、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仆救,春花似錦抒和、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至铆惑,卻和暖如春范嘱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背员魏。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工丑蛤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撕阎。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓受裹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親虏束。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棉饶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容