機(jī)器學(xué)習(xí)與人工智能基礎(chǔ):價(jià)值估算(第五章-特征)

特征
Features


前言叨B叨

都到第五章了, 可能有些同學(xué)開始覺得有些煩躁了, 怎么還不上真二八經(jīng)的代碼? 事實(shí)上理解這些基本概念才是關(guān)鍵. 代碼真沒幾句話, 因?yàn)樽顝?fù)雜的部分已經(jīng)由先人封裝好了, 我們只需要敲一兩句話, 再配幾個(gè)參數(shù)就妥妥的了.
今天主要講數(shù)據(jù)中特征值的處理, 上一章提到過, 特征值的處理對(duì)最后預(yù)測(cè)結(jié)果的準(zhǔn)確性有著決定性的關(guān)系. 所以這張大家務(wù)必仔細(xì)理解.

1. 特征工程(Feature engineering)

當(dāng)使用監(jiān)督學(xué)習(xí)解決問題時(shí)腰懂,我們將特征輸入到機(jī)器學(xué)習(xí)算法中蜈缤,該算法學(xué)習(xí)如何根據(jù)這些特征預(yù)測(cè)正確的輸出。這是一個(gè)簡(jiǎn)單的想法座柱,但是在實(shí)際的應(yīng)用程序中魁巩,它需要大量的嘗試和錯(cuò)誤處理來找出哪些特性對(duì)建模最有用锁孟。特征工程是利用我們對(duì)問題的認(rèn)識(shí)和分析來選擇特征或創(chuàng)建新的特性斤寂,以此使機(jī)器學(xué)習(xí)算法更精確地工作林螃。當(dāng)您構(gòu)建有監(jiān)督的學(xué)習(xí)系統(tǒng)時(shí)允耿,特性工程將消耗您的大部分時(shí)間借笙。做好特征工程會(huì)大大改善模型的質(zhì)量。

在訓(xùn)練機(jī)器學(xué)習(xí)算法時(shí)较锡,為了獲得最好的結(jié)果业稼,我們要使算法盡可能簡(jiǎn)單地建模。這意味著我們希望輸入的特征與輸出值緊密相關(guān)蚂蕴。事實(shí)上低散,無用的特征可能會(huì)損害我們系統(tǒng)的準(zhǔn)確性。讓我們看一個(gè)例子骡楼。這里有張表格列出每個(gè)房子的大小熔号,以及這些房子里盆栽植物的數(shù)量。

房子的面積很可能有助于確定房子的價(jià)值鸟整。我們知道引镊,基于我們對(duì)房地產(chǎn)市場(chǎng)的了解。因此篮条,這將是一個(gè)很好的特征弟头,我們要把它包括在我們的模型中。但是我估計(jì)如果不是蘭花或是搖錢樹之類的盆栽植物,數(shù)量多少也不會(huì)影響房子的最終價(jià)值涉茧。
盆栽植物只是裝飾赴恨,它們便宜,而且很容易添加和去除伴栓。很少有人會(huì)根據(jù)房子里盆栽植物的數(shù)量來決定是否購(gòu)買塞关。在這種情況下蒜焊,這個(gè)特征似乎會(huì)在模型中引入隨機(jī)噪聲,而不是告訴我們關(guān)于我們?cè)噲D預(yù)測(cè)的實(shí)際值的任何東西,我們應(yīng)該從我們的模型中刪除這個(gè)特性竞帽。這就是特征工程的一個(gè)例子。

接下來讓我們來看一些特征工程的不同策略酬荞。
到目前為止刻像,我們已經(jīng)討論了從模型中添加和刪除特性以提高精度的方法。

  • 從我們的模型中包含或排除哪些特性是特征工程最簡(jiǎn)單的形式短荐。
  • 我們還可以將多個(gè)特性組合成一個(gè)特性倚舀。

讓我們看一個(gè)例子。這里有一張表忍宋,
image.png

顯示每個(gè)房子的英尺和英寸的高度痕貌。高度可能是衡量房子價(jià)值的一個(gè)非常有用的度量標(biāo)準(zhǔn),但是用不同單位去描述同一個(gè)特征會(huì)使模型更復(fù)雜糠排。如果嗎這兩個(gè)值同時(shí)輸入模型舵稠,那么該算法必須計(jì)算出這兩組數(shù)字是相關(guān)的,是單個(gè)測(cè)量的一部分入宦。如果我們預(yù)先處理我們的數(shù)據(jù)哺徊,只用一個(gè)單位的單個(gè)測(cè)量代替每一個(gè)高度測(cè)量就更好了。

工程策略的另一個(gè)特點(diǎn)是分級(jí)乾闰。分級(jí)是你做數(shù)值的測(cè)量和轉(zhuǎn)換成一個(gè)類落追。讓我們看一個(gè)例子。這里有一張表涯肩,

上面列有房子和游泳池的長(zhǎng)度轿钠。泳池的確切大小與房子是否有游泳池幾乎沒有關(guān)系。有些買家想要有池的房子病苗,有些不需要疗垛。所以在這種情況下,我們可以預(yù)處理數(shù)據(jù)铅乡,并用真/假特征替換數(shù)字特征池大小继谚。這簡(jiǎn)化了模型。

我們的最后一個(gè)特征工程策略是one-hot編碼方式(one-hot encoding)阵幸。

當(dāng)我們的模型中有分類數(shù)據(jù)時(shí)花履,我們必須先處理然后才能使用它。one-hot編碼是之中讓機(jī)器學(xué)習(xí)模型可以理解的數(shù)據(jù)分類方法挚赊。讓我們看一個(gè)例子诡壁。

在我們的住房數(shù)據(jù)集中,一個(gè)分類數(shù)據(jù)的例子是社區(qū)的名字荠割。我們不能直接將社區(qū)的名字輸入到我們的模型中妹卿,因?yàn)樗且淮谋径皇菙?shù)字旺矾。相反,我們需要一種方法來將每個(gè)社區(qū)表示為一個(gè)數(shù)字夺克。最簡(jiǎn)單的解決方案是給每個(gè)社區(qū)分配一個(gè)數(shù)字箕宙。但這并不適用于某些機(jī)器學(xué)習(xí)算法。
問題在于機(jī)器學(xué)習(xí)算法會(huì)認(rèn)為這些數(shù)字的順序是有意義的铺纽。它會(huì)假設(shè)大一些的數(shù)字比小一些的數(shù)字更重要柬帕。但是社區(qū)ID 2并不是社區(qū)ID 1的兩倍。這些數(shù)字的順序?qū)嶋H上毫無意義狡门。這里的解決方案是使用一個(gè)不同的表示陷寝,稱為one-hot 編碼方式。

讓我們?cè)倏纯丛瓉淼姆孔忧鍐纹淞蟆T谒械娜g房子凤跑,有兩個(gè)不同的社區(qū),normaltown Skid Row叛复。在one-hot 編碼中仔引,我們?cè)跀?shù)據(jù)集中為分類數(shù)據(jù)中的每個(gè)唯一類別創(chuàng)建一個(gè)新特性。在這里致扯,我們已經(jīng)創(chuàng)造了is_normaltown和is_skidrow兩個(gè)特征肤寝。

然后,我們將每一個(gè)設(shè)置為1或0抖僵,這取決于房子是否在那個(gè)社區(qū)鲤看。這被稱為one-hot 編碼。one-hot 編碼對(duì)用機(jī)器學(xué)習(xí)模型容易理解的簡(jiǎn)單數(shù)值數(shù)據(jù)代替分類數(shù)據(jù)很有用耍群。

2. 為房?jī)r(jià)預(yù)測(cè)選擇最合適的特征

讓我們看看這個(gè)房?jī)r(jià)預(yù)測(cè)項(xiàng)目的中的數(shù)據(jù)集义桂,然后將我們所學(xué)到的關(guān)于特征工程的知識(shí)用起來。
讓我們打開view_data.py蹈垢。運(yùn)行起來后讓我們查看一下數(shù)據(jù)集中的每個(gè)特征慷吊,看看它是否需要修理修理,或者我們是否可以直接使用它曹抬。


首先看建造年份(year_built)溉瓶。這項(xiàng)特征將告訴算法的每個(gè)房子的年齡,這似乎是一個(gè)重要的因素谤民。這個(gè)特性是數(shù)字的堰酿,所以我們可以不用任何處理。接下來的幾個(gè)特點(diǎn)也是數(shù)字张足,包括房子的儲(chǔ)藏室數(shù)量触创,臥室的數(shù)目,全浴室的數(shù)目为牍,半浴室哼绑,以及實(shí)用面積和總面積岩馍。
所以我們可以跳過它們。接下來我們有車庫類型(garage_type)抖韩≈鳎看起來有三種可能的車庫類型值: 沒有車庫, 獨(dú)立車庫, 非獨(dú)立車庫。車庫類型貌似有助于我們的房?jī)r(jià)模型帽蝶,但要使用這些數(shù)據(jù)赦肋,我們需要預(yù)先用one-hot編碼方法處理它一下。
也就是說將單個(gè)特性更改為三個(gè)獨(dú)立的特性励稳。沒有車庫,有獨(dú)立的車庫囱井,還有附屬車庫驹尼。對(duì)于每一個(gè)房子,只有其中一個(gè)將被設(shè)置為true庞呕。接下來的兩個(gè)特點(diǎn)新翎,車庫和車庫的尺寸大小和平方英尺平方英尺,我們應(yīng)該能直接使用住练,無需任何額外的處理地啰。好吧,讓我們滾動(dòng)讲逛。接下來亏吝,我們有幾個(gè)true/false字段,有壁爐盏混,有游泳池蔚鸥,有集中供暖,還有中央空調(diào)许赃。true/false值在我們的模型中很好用止喷。它們將被自動(dòng)處理為1或0,所以不需要額外的處理工作混聊。
接下來我們把每個(gè)房子的地址分成五個(gè)不同的字段弹谁。有門牌號(hào)碼,街道名稱句喜,單元編號(hào)预愤,郵政編碼。在我們的模型中門牌號(hào)不會(huì)有任何用處藤滥。不太可能有人買房子是因?yàn)殚T牌號(hào)鳖粟。更高的街道數(shù)并不意味著房子更有價(jià)值,它只是一個(gè)隨機(jī)數(shù)拙绊。所以讓我們從我們的模型中刪除這個(gè)字段向图。單元數(shù)也一樣泳秀。房子的位置對(duì)價(jià)值有很大的影響,所以我們需要在我們的模型要包含一些信息榄攀。
但是嗜傅,有些字段提供重復(fù)的信息,說的是同一個(gè)意思。例如檩赢,如果我們知道一個(gè)房子的郵政編碼吕嘀,我們已經(jīng)知道它在哪個(gè)城市,所以我們可能不需要在我們的模型中同時(shí)包含城市和郵政編碼贞瞒。街道名稱是一個(gè)可以拿掉的特征偶房。一條街道就是一個(gè)很小的區(qū)域,有時(shí)在某一條街上可能會(huì)增加房屋的價(jià)值,但在我們的模型中包括街道名稱會(huì)使我們的模型復(fù)雜得多军浆,因?yàn)樵谖覀儜?yīng)用一個(gè)one-hot編碼之后棕洋,我們將為數(shù)據(jù)集中的每一條街道提供一個(gè)新的特性。因此乒融,讓我們先把這個(gè)城市留在我們的模型中掰盘,然后對(duì)它應(yīng)用one-hot編碼。
現(xiàn)在我們不包含任何其他地址字段赞季。這就是為什么特性工程是需要大量的嘗試和排錯(cuò)愧捕。如果我們?cè)谀P椭兄话鞘忻Q,并不能得到好的結(jié)果申钩,我們可能想再次使用街道名或其他地址字段再試一次次绘。除非我們兩種方法都試過,否則無法提前知道哪種方法會(huì)更好.

最后一點(diǎn)是房子的售價(jià)典蜕。這就是我們?cè)噲D用我們的模型預(yù)測(cè)的y值或目標(biāo)值《鲜ⅲ現(xiàn)在我們已經(jīng)單獨(dú)研究了每個(gè)字段,對(duì)于在模型中哪些特征需要修剪我們現(xiàn)在有了個(gè)基本概念愉舔。這將使我們的代碼更容易編寫钢猛。

3. 特征值用得越少越好:維度災(zāi)難(curse of dimensionality)

在構(gòu)建機(jī)器學(xué)習(xí)模型時(shí),盡可能地包含模型中的許多特征似乎是個(gè)好主意轩缤。數(shù)據(jù)越多越好命迈,對(duì)嗎?事實(shí)證明火的,然鵝并不總是這樣壶愤。當(dāng)我們?cè)跀?shù)據(jù)集中討論更多數(shù)據(jù)時(shí),我們可以指兩種不同的東西馏鹤。首先征椒,我們可以討論數(shù)據(jù)集中更多的數(shù)據(jù)行。對(duì)于我們的住房數(shù)據(jù)集湃累,擁有更多的房屋記錄是件好事勃救。但我們也可以在數(shù)據(jù)中擁有更多的特性或列碍讨。有更多的功能是有幫助的,直到某一個(gè)閾值蒙秒。終撞到了一堵墻--更多的特征反而降低了準(zhǔn)確性勃黍。

這個(gè)現(xiàn)象被稱為維度災(zāi)難(curse of dimensionality)。維數(shù)災(zāi)難意思是說晕讲,當(dāng)我們?yōu)槟P吞砑痈嗟奶匦詴r(shí)覆获,建立一個(gè)好模型所需的訓(xùn)練數(shù)據(jù)行數(shù)趨向指數(shù)增長(zhǎng)。讓我們看一個(gè)例子瓢省。

假設(shè)我們的房?jī)r(jià)預(yù)測(cè)只使用了一個(gè)特征弄息,房子的大小。在這里净捅,我們繪制的是100條房?jī)r(jià)數(shù)據(jù)疑枯。有100個(gè)數(shù)據(jù)點(diǎn),我們對(duì)圖的所有區(qū)域都有很好的覆蓋率』琢現(xiàn)在,讓我們?yōu)閿?shù)據(jù)集添加另一個(gè)維度废亭。假設(shè)我們的房?jī)r(jià)預(yù)測(cè)用的是房子的大小国章、平方英尺和臥室的數(shù)量。

我們?nèi)匀挥泻鸵郧耙粯拥?00個(gè)數(shù)據(jù)點(diǎn)豆村,但是現(xiàn)在我們添加了另一個(gè)特征液兽,或者維度,這100個(gè)數(shù)據(jù)點(diǎn)只覆蓋了圖中可能的總面積的一小部分掌动。為了更好地覆蓋這個(gè)圖表中所有可能的區(qū)域四啰,我們現(xiàn)在需要的數(shù)據(jù)是我們的一維房?jī)r(jià)預(yù)測(cè)的10倍。換句話說粗恢,當(dāng)我們?cè)跈C(jī)器學(xué)習(xí)系統(tǒng)中添加更多的特性時(shí)柑晒,我們需要一個(gè)指數(shù)級(jí)的數(shù)據(jù)行來覆蓋增加的空間。當(dāng)我們開始獲取成百上千的特征時(shí)眷射,數(shù)據(jù)量和訓(xùn)練系統(tǒng)所需的時(shí)間可能是令人望而卻步的匙赞。
因此,在構(gòu)建機(jī)器學(xué)習(xí)系統(tǒng)時(shí)妖碉,不能為了增加特征數(shù)量而增加特征涌庭。你的目標(biāo)是加入對(duì)預(yù)測(cè)有用的特征,排除對(duì)預(yù)測(cè)無效或者破壞的特征欧宜。

結(jié)語

本章至此, 后面還有三章. 待我慢慢道來.
如有錯(cuò)誤請(qǐng)高手指正.

你的 關(guān)注-收藏-轉(zhuǎn)發(fā) 是我繼續(xù)分享的動(dòng)力!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坐榆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冗茸,更是在濱河造成了極大的恐慌席镀,老刑警劉巖匹中,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異愉昆,居然都是意外死亡职员,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門跛溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焊切,“玉大人,你說我怎么就攤上這事芳室∽ǚ荆” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵堪侯,是天一觀的道長(zhǎng)嚎尤。 經(jīng)常有香客問我,道長(zhǎng)伍宦,這世上最難降的妖魔是什么芽死? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮次洼,結(jié)果婚禮上关贵,老公的妹妹穿的比我還像新娘。我一直安慰自己卖毁,他們只是感情好揖曾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亥啦,像睡著了一般炭剪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翔脱,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天奴拦,我揣著相機(jī)與錄音,去河邊找鬼碍侦。 笑死粱坤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瓷产。 我是一名探鬼主播站玄,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼濒旦!你這毒婦竟也來了株旷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晾剖,沒想到半個(gè)月后锉矢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡齿尽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年沽损,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片循头。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绵估,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卡骂,到底是詐尸還是另有隱情国裳,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布全跨,位于F島的核電站缝左,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浓若。R本人自食惡果不足惜渺杉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挪钓。 院中可真熱鬧少办,春花似錦、人聲如沸诵原。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍赛。三九已至,卻和暖如春辑畦,著一層夾襖步出監(jiān)牢的瞬間吗蚌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工纯出, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚯妇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓暂筝,卻偏偏與公主長(zhǎng)得像箩言,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子焕襟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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