中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

用Python Featuretools庫(kù)實(shí)現(xiàn)自動(dòng)化特征工程(附鏈接)

2018-11-06    來源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

簡(jiǎn)介

在機(jī)器學(xué)習(xí)黑客馬拉松和競(jìng)賽中,特征工程的質(zhì)量通常是進(jìn)入排行榜10強(qiáng)和無緣50強(qiáng)的重要區(qū)別,因此,所有參賽過的人都可以證明特征工程的重要性。

自從我意識(shí)到特征工程具有巨大的潛力以來,我一直是它的大力倡導(dǎo)者。但當(dāng)手動(dòng)完成時(shí),這可能是一個(gè)緩慢而艱難的過程。我必須絞盡腦汁來思考有哪些特征存在,并從不同的角度分析它們的可用性。現(xiàn)在,整個(gè)FE(Feature Engineering,特征工程)流程都可以實(shí)現(xiàn)自動(dòng)化,我將在本文中向您展示。

 

 

我們將使用一個(gè)名為Featuretools的Python特征工程庫(kù),來實(shí)現(xiàn)這一流程。但是在深入研究之前,我們首先了解下FE的基本組成部分,并用直觀的示例理解它們,最后利用BigMart Sales數(shù)據(jù)集來深入了解自動(dòng)化特征工程這一精彩世界。

目錄

1. 什么是特征?

2. 什么是特征工程?

3. 為什么需要特征工程?

4. 自動(dòng)化特征工程

5. Featuretools簡(jiǎn)介

6. Featuretools實(shí)踐

7. Featuretools的可解釋性

1. 什么是特征

在機(jī)器學(xué)習(xí)的背景下,特征是用來解釋現(xiàn)象發(fā)生的單個(gè)特性或一組特性。 當(dāng)這些特性轉(zhuǎn)換為某種可度量的形式時(shí),它們被稱為特征。

舉個(gè)例子,假設(shè)你有一個(gè)學(xué)生列表,這個(gè)列表里包含每個(gè)學(xué)生的姓名、學(xué)習(xí)小時(shí)數(shù)、IQ和之前考試的總分?jǐn)?shù),F(xiàn)在,有一個(gè)新學(xué)生,你知道他/她的學(xué)習(xí)小時(shí)數(shù)和IQ,但他/她的考試分?jǐn)?shù)缺失,你需要估算他/她可能獲得的考試分?jǐn)?shù)。

在這里,你需要用IQ和study_hours構(gòu)建一個(gè)估算分?jǐn)?shù)缺失值的預(yù)測(cè)模型。所以,IQ和study_hours就成了這個(gè)模型的特征。

 

 

2. 什么是特征工程?

特征工程可以簡(jiǎn)單定義為從數(shù)據(jù)集現(xiàn)有特征中構(gòu)造新特征的過程。假設(shè)我們有一個(gè)樣本數(shù)據(jù),里面含有一些商品的細(xì)節(jié)信息,例如重量和價(jià)格。

 

 

現(xiàn)在,我們可以用Item_Weight和Item_Price來構(gòu)造名為Price_per_Weight的新特征。它僅是用商品的價(jià)格除以商品的重量而已。這樣的過程稱為特征工程。

 

 

這只是一個(gè)從現(xiàn)有特征中構(gòu)造一個(gè)新特征的簡(jiǎn)單示例,但實(shí)際上,當(dāng)我們有相當(dāng)多的特征時(shí),特征工程可變得非常復(fù)雜和繁瑣。

再看另一個(gè)例子,在常用的Titanic數(shù)據(jù)集中,存在一個(gè)乘客名字的特征,下面是這個(gè)數(shù)據(jù)集中的一些名字:

Montvila, Rev. Juozas
Graham, Miss. Margaret Edith
Johnston, Miss. Catherine Helen “Carrie”
Behr, Mr. Karl Howell
Dooley, Mr. Patrick

這些名字實(shí)際上可以分解成另外幾個(gè)有意義的特征。例如,將相似的稱謂提取出來,合并成一個(gè)類別。讓我們來看一看乘客姓名中這些稱謂的不同個(gè)數(shù)。

 

 

從上圖可以看出,“Dona”、“Lady”、“the Countess”、“Capt”、“Col”、 “Don”、“Dr”、“Major”、“Rev”、“Sir”和“Jonkheer”這些稱謂是十分少見的,可以將它們放在一個(gè)標(biāo)簽下,即rare_title。除了這些,稱謂“Mlle”和“Ms”可歸到“Miss”下,而“Mme”可以用“Mrs”來代替。

 

 

因此,如下圖所示,這個(gè)新稱謂的特征只有5個(gè)不同的值:

 

 

這就是我們借助特征工程從特征中提取有用信息的過程,即使是像乘客名字這樣乍一看毫無意義的特征。

3. 為什么需要特征工程?

預(yù)測(cè)模型的性能在很大程度上取決于用于訓(xùn)練該模型的數(shù)據(jù)集特征的質(zhì)量。如果你能夠構(gòu)造出可提供更多有關(guān)模型目標(biāo)變量的信息的新特征,那么模型的性能將會(huì)提升。所以,當(dāng)數(shù)據(jù)集中沒有足夠多的高質(zhì)量特征時(shí),我們必須依靠特征工程。

在Kaggle上最受歡迎的競(jìng)賽之一,自行車租賃需求預(yù)測(cè)中,參賽者需要根據(jù)與天氣、時(shí)間和其他數(shù)據(jù)相關(guān)的歷史使用模式來預(yù)測(cè)華盛頓特區(qū)的租賃需求。

正如本文所述,智能化特征工程有助于參賽者獲得排行榜前5%的排名。一些構(gòu)造的特征如下:

Hour Bins:借助于決策樹,通過切分hour特征構(gòu)造的新特征

Temp Bins:相似地,是temperature變量的切分特征

Years Bins:通過8等分2年時(shí)間構(gòu)造的新特征

Day Type:Days分成“工作日”、“周末”和“節(jié)假日”

構(gòu)造這樣的特征并非易事,因?yàn)樗枰罅康念^腦風(fēng)暴和廣泛的數(shù)據(jù)探索。特征

工程不能通過讀書和看視頻來學(xué)習(xí),因此,不是所有的人都擅長(zhǎng)它。這就是特征工程也被稱為藝術(shù)的原因。如果擅長(zhǎng)它,那么你在競(jìng)賽中就占據(jù)優(yōu)勢(shì)。就像羅杰·費(fèi)德勒(Roger Federer),在網(wǎng)球得分上,他就是特征工程的大師。

 

 

4. 自動(dòng)化特征工程

 

 

分析上面兩張圖片,左圖顯示了20世紀(jì)初一群人正在組裝汽車,右圖則顯示了當(dāng)今一群機(jī)器人在做同樣的工作。自動(dòng)化任何流程都可以使其變得更加高效和經(jīng)濟(jì)。同樣,特征工程也是如此。而且,在機(jī)器學(xué)習(xí)中,特征工程已經(jīng)實(shí)現(xiàn)自動(dòng)化。

構(gòu)建機(jī)器學(xué)習(xí)模型通常是一個(gè)艱苦而乏味的過程,涉及許多步驟。因此,如果我們能夠自動(dòng)化執(zhí)行一定比例的特征工程任務(wù),那么數(shù)據(jù)科學(xué)家或領(lǐng)域?qū)<揖涂梢詫W⒂谀P偷钠渌矫。聽起來?jiǎn)直太棒了,但難以置信,對(duì)吧?

既然我們已經(jīng)明白自動(dòng)化特征工程的發(fā)展亟需幫助,那么下一個(gè)要問的問題就是,如何實(shí)現(xiàn)?嗯,我們有一個(gè)很好的工具可以用來解決這個(gè)問題,它叫Featuretools。

5. Featuretools簡(jiǎn)介

 

 

Featuretools是一個(gè)開源庫(kù),用來實(shí)現(xiàn)自動(dòng)化特征工程。它是一個(gè)很好的工具,旨在加快特征生成的過程,從而讓大家有更多的時(shí)間專注于構(gòu)建機(jī)器學(xué)習(xí)模型的其他方面。換句話說,它使你的數(shù)據(jù)處于“等待機(jī)器學(xué)習(xí)”的狀態(tài)。

在使用Featuretools之前,我們應(yīng)該了解程序包中的三個(gè)主要組件:

實(shí)體(Entities)
深度特征綜合(Deep Feature Synthesis ,DFS)
特征基元(Feature primitives)

一個(gè)Entity可以視作是一個(gè)Pandas的數(shù)據(jù)框的表示,多個(gè)實(shí)體的集合稱為Entityset。

深度特征綜合(DFS)與深度學(xué)習(xí)無關(guān),不用擔(dān)心。實(shí)際上,DFS是一種特征工程方法,是Featuretools的主干。它支持從單個(gè)或者多個(gè)數(shù)據(jù)框中構(gòu)造新特征。

DFS通過將特征基元應(yīng)用于Entityset的實(shí)體關(guān)系來構(gòu)造新特征。這些特征基元是手動(dòng)生成特征時(shí)常用的方法。例如,基元“mean”將在聚合級(jí)別上找到變量的平均值。

了解、熟悉Featuretools的最佳方法就是將其應(yīng)用于數(shù)據(jù)集。因此,在下一節(jié)中,我們將使用BigMart Sales實(shí)踐問題中的數(shù)據(jù)集來鞏固我們的概念。

6. Featuretools實(shí)踐

BigMart Sales面臨的挑戰(zhàn)是構(gòu)建一個(gè)預(yù)測(cè)模型來估算特定門店中每種商品的銷售額,這將有助于BigMart的決策者找出每一個(gè)產(chǎn)品或門店的重要屬性,這對(duì)提高整體銷售起著關(guān)鍵性作用。請(qǐng)注意,在給定的數(shù)據(jù)集中,有跨10個(gè)門店的1559種商品。

下表給出了數(shù)據(jù)提供的特征:

 

 

你可以從這里下載數(shù)據(jù)。

6.1 安裝

Featuretools適用于Python 2.7,3.5和3.6,可以使用pip輕松安裝Featuretools。

 

 

6.2 下載需要的庫(kù)和數(shù)據(jù)

 

 

6.3 數(shù)據(jù)準(zhǔn)備

首先,我們將Item_Outlet_Sales存儲(chǔ)在變量sales中,id特征存儲(chǔ)在test_Item_Identifier和test_Outlet_Identifier中。

 

 

接著,我們將訓(xùn)練集和測(cè)試集組合起來,避免執(zhí)行兩次相同步驟的麻煩。

 

 

檢查一下數(shù)據(jù)集中的缺失值。

 

 

變量Item_Weight 和 Outlet_size中有非常多的缺失值,我們快速處理一下:

 

 

6.4 數(shù)據(jù)預(yù)處理

我不會(huì)做大量的預(yù)處理操作,因?yàn)楸疚牡哪康氖亲屇汩_始使用Featuretools。

 

 

似乎Item_Fat_Content只包含兩個(gè)類別,即“低脂肪”和“常規(guī)”,其余值被視為是多余的。 所以,讓我們把它轉(zhuǎn)換成二元變量。

 

 

6.5 使用Featuretools實(shí)現(xiàn)特征工程

現(xiàn)在,我們可以開始使用Featuretools來實(shí)現(xiàn)自動(dòng)化特征工程了! 數(shù)據(jù)集中必須具有唯一標(biāo)識(shí)符的特征(我們的數(shù)據(jù)集現(xiàn)在沒有任何這樣的特征)。 因此,我們將為組合數(shù)據(jù)集創(chuàng)建一個(gè)唯一ID。 如果您注意到,數(shù)據(jù)中有兩個(gè)ID -一個(gè)用于商品,另一個(gè)用于門店。 因此,簡(jiǎn)單地連接兩者就可以為我們提供唯一的ID。

 

 

請(qǐng)注意,由于不再需要特征Item_Identifier,我刪除了這個(gè)特征。但是,保留了特征Outlet_Identifier,因?yàn)槲掖蛩闵院笫褂盟?/p>

在繼續(xù)之前,我們將創(chuàng)建一個(gè)特征EntitySet,它是一種包含多個(gè)數(shù)據(jù)框及其之間關(guān)系的結(jié)構(gòu)。那么,讓我們創(chuàng)建一個(gè)EntitySet并將數(shù)據(jù)框組合添加進(jìn)去。

 

 

數(shù)據(jù)中包含兩個(gè)級(jí)別的信息,即商品級(jí)別和門店級(jí)別的信息。而且,F(xiàn)eaturetools提供了將數(shù)據(jù)集拆分為多個(gè)表的功能。所以,我們根據(jù)門店ID Outlet_Identifier從BigMart表創(chuàng)建了一個(gè)新表'outlet'。

 

 

讓我們檢查一下EntitySet的摘要。

 

 

如上所示,它包含兩個(gè)實(shí)體,bigmart和outlet。兩個(gè)表之間也形成了一種由Outlet_Identifier連接的關(guān)系。這種關(guān)系將在新特征的生成中發(fā)揮關(guān)鍵作用。

現(xiàn)在我們將使用深度特征綜合(Deep Feature Synthesis)自動(dòng)創(chuàng)建新特征;叵胍幌,DFS使用Feature Primitives和EntitySet中存在的多個(gè)表來構(gòu)造新特征。

 

 

target_entity是目標(biāo)實(shí)體的ID,目標(biāo)實(shí)體指的是我們希望為其構(gòu)造新特征的實(shí)體(在這種情況下,它是實(shí)體'bigmart')。參數(shù)max_depth控制由疊加特征基元方式生成的特征的復(fù)雜性。參數(shù)n_jobs則是通過使用多個(gè)核的方式來幫助進(jìn)行并行特征計(jì)算。

這就是你用Featuretools所做的一切,它自己構(gòu)造了許多新特征。

讓我們來看看這些新構(gòu)造的特征:

 

 

DFS在如此短的時(shí)間內(nèi)構(gòu)造了29個(gè)新特征。這令人震驚,因?yàn)槭謩?dòng)操作需要更長(zhǎng)的時(shí)間。 如果你的數(shù)據(jù)集包含多個(gè)相互關(guān)聯(lián)的表,那么Featuretools仍然有效。

在這種情況下,您不必對(duì)表進(jìn)行規(guī)范化,因?yàn)槎鄠(gè)表已經(jīng)可用。

讓我們看看feature_matrix的前幾行。

這個(gè)數(shù)據(jù)框存在一個(gè)問題,它并沒有進(jìn)行恰當(dāng)?shù)呐判。我們將根?jù)combi數(shù)據(jù)框中的id變量對(duì)其進(jìn)行排序。

 

 

現(xiàn)在,數(shù)據(jù)框feature_matrix的排序正確。

6.6 構(gòu)建模型

現(xiàn)在是檢測(cè)這些生成特征的有效性的時(shí)候了!我們將使用它們來構(gòu)建模型,預(yù)測(cè)Item_Outlet_Sales。由于最終的數(shù)據(jù)(feature_matrix)里具有許多類別特征,我決定使用CatBoost算法。它可以直接使用類別特征,并且本質(zhì)上是可擴(kuò)展的。

你可以參考這篇文章來閱讀有關(guān)CatBoost的更多信息。

 

 

CatBoost要求所有類別變量都采用字符串格式。因此,我們首先將數(shù)據(jù)中的類別變量轉(zhuǎn)換為字符串:

 

 

然后重新把feature_matrix拆回訓(xùn)練集和測(cè)試集。

 

 

將訓(xùn)練集拆成訓(xùn)練和驗(yàn)證兩部分,以便在本地測(cè)試算法的性能。

最后,訓(xùn)練模型。采用RMSE(Root Mean Squared Error,均方根誤差)作為衡量指標(biāo)。

 

 

1091.244

驗(yàn)證數(shù)據(jù)集的RMSE得分是~1092.24。

同一模型在公共排行榜上得分為1155.12。在沒有任何特征工程的情況下,驗(yàn)證集和公共排行榜的得分分別為~1103和~1183。 因此,F(xiàn)eaturetools構(gòu)造的特征不僅僅是隨機(jī)特征,而且還非常有價(jià)值的。最重要的是,它使特征工程節(jié)省了大量時(shí)間。

7. Featuretools的可解釋性

使我們的數(shù)據(jù)科學(xué)解決方案通俗易懂是演示機(jī)器學(xué)習(xí)非常重要的一個(gè)方面。Featuretools生成的特征可以很容易地解釋給非技術(shù)人員聽,原因是它們均基于易理解的特征基元。

例如,特征outlet.SUM(bigmart.Item_Weight)和outlet.STD(bigmart.Item_MRP)分別表示每家門店所有商品重量的總和以及商品成本的標(biāo)準(zhǔn)差。

這使得不是機(jī)器學(xué)習(xí)專家的人員同樣能夠在自己領(lǐng)域?qū)I(yè)有所貢獻(xiàn)。

尾記

Featuretools包真正改變了機(jī)器學(xué)習(xí)的游戲規(guī)則。雖然它在行業(yè)中的應(yīng)用仍然受制,但是已經(jīng)風(fēng)靡于黑客馬拉松和ML競(jìng)賽。它所節(jié)省的時(shí)間以及其生成特征的實(shí)用性已經(jīng)真正贏得了我的青睞。

下次處理任何數(shù)據(jù)集時(shí)請(qǐng)嘗試一下,并在評(píng)論部分告訴我這個(gè)過程是如何進(jìn)行的!

原文標(biāo)題:

A Hands-On Guide to Automated Feature Engineering using Featuretools in Python

原文鏈接:

https://www.analyticsvidhya.com/blog/2018/08/guide-automated-feature-engineering-featuretools-python/

標(biāo)簽: seo 排名

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Kaggle Grandmaster是怎樣煉成的

下一篇:強(qiáng)調(diào)價(jià)值回歸 夏普8K+AIoT戰(zhàn)略亮相中國(guó)西部市場(chǎng)