[轉錄] [閒聊] 菜鳥上Kaggle: 房價預測 2

看板DataScience作者 (小強)時間6年前 (2018/03/10 08:48), 6年前編輯推噓3(303)
留言6則, 3人參與, 6年前最新討論串1/1
作者: pipidog (如果狗狗飛上天) 看板: Python 標題: Re: [閒聊] 菜鳥上Kaggle: 房價預測 時間: Thu Mar 8 05:42:17 2018 再補充一下昨天那篇文章的第一點,關於特徵選取的一些心得: 如果feature很多,那是如何減少是個大學問. 不然維度詛咒一下來,模型就gg了. 這種如何建構好的特徵的問題,被統稱叫"feature engineering". 各種神技可能 幾天幾夜都說不完. 坦白說我知道的也不多,只能分享一些"我認為"(所以可能錯) 大致上的做法.常用的特徵選取法有三大類: filter, wrapper, embedding. 1). filter: 這是最簡單的也最基本的特徵選取方法,尤其在數據樣本數很大的時候,這是最代價 最低的做法. 基本上就是統計一下哪些feature跟target的correlation高. 然後你人為設個閥值把correlation低的feature通通丟掉. 例如一個極端的情況,如果有一個數據,不管target data是啥,某個feature幾乎都是1, 只有少數,例如2%是0,很明顯的這個feature根本和target沒太大關聯性,這基本上就 可以刪去. 看這篇: https://tinyurl.com/ycoqh28u 2). wrapper: wrapper簡單的就是你用一個簡單的模型去測試,用那些feature來訓練出來的模型準 確率最高,差的feature就丟掉. 這作法滿合理的,算是透過實證來找出好的特徵.但這 有兩個大問題. 1.你等於在訓練很多模型,如果資料量很大滿耗時間的. 2.你用A模型 來估計特徵的重要性,並不表示你把選出的特徵用在B模型時表現就會比較好.所以如果 要用這種方法,你要考慮的問題比較多. 用來選特徵的模型跟日後訓練的模型要盡可能 在原理上接近.但如果選得好,那表現應該會比filter好得多. 看這篇: https://tinyurl.com/ycgbwv5c 3). embedding: embedding算是第一種跟第二種方法的一種平衡,它既不是透過第一種,單純的從統計 給結果,也不是如第二種挑一個專一性高的模型直接做測試. 它主要是透過一些通用 性的模型來自動挑出特徵權重.最常用的一種就是Lasso了. Lasso,基本上就是在線 性回歸裡面加入L1正規化,盡可能的強迫大多數的線性回歸係數是0,或接近0,所以你 可以透過查看每個特徵在線性回歸下被賦予的權重是多少,以此為依據來挑選重要的 特徵. 這方法的好處是,它是基於一個實測的模型給答案,缺點是,它也就只是個簡單 的模型. 另外tree也是一個常用的手段,它也可以幫你篩出那些特徵比較重要. 用tree來篩特徵最大的好處是,tree對特徵的取值範圍不敏感,所以你不用考慮把特 徵歸一化的問題,甚至也可以對catagorical的特徵來做.對特徵差異性大的問題,這 也是一個好方法. 在sklearn裡面給出了一個用Lasso挑特徵的範例: https://tinyurl.com/y74er3r5 * 洋洋灑灑提了一些方法,也只是一些膚淺的概述,如何建構好的特徵是一門大學問, 但功力有限,也就只能說到這了. 其他還有很多方法,例如用PCA降維等等,因為用 這種方式做完的特徵意義已經不明,那就是另一個故事了.我想也偏離了這篇的主 題,就不提了. 如果還有好的方法也歡迎分享,相互交流. -- ★人生中最溫暖的夏天是在紐約的冬天 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.66.168.95 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1520458944.A.357.html ※ 編輯: pipidog (73.66.168.95), 03/08/2018 05:50:53

03/08 06:39,
03/08 06:39

03/08 13:41,
你不要那麼專業好不好
03/08 13:41

03/08 16:06,
感謝分享 不曉得有沒有分享在github的習慣
03/08 16:06

03/09 15:52,
推!對初學者給了一些方向!!
03/09 15:52

03/09 16:46,
大神有 GIThub 可以 follow 嗎?
03/09 16:46

03/10 03:55,
03/10 03:55
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.8.6.231 ※ 文章網址: https://www.ptt.cc/bbs/deeplearning/M.1520642904.A.947.html

03/12 01:39, 6年前 , 1F
請教一下 feature一般是如何得到的?
03/12 01:39, 1F

03/12 01:39, 6年前 , 2F
如果是linear regression的話
03/12 01:39, 2F

03/14 01:15, 6年前 , 3F
推 PCA基本是用變異數的想法去剔除掉差異不大的特徵去
03/14 01:15, 3F

03/14 01:15, 6年前 , 4F
做降維處理 此外也會用梯度遞減的方式去測試雜訊的剔
03/14 01:15, 4F

03/14 01:15, 6年前 , 5F
除效果
03/14 01:15, 5F

03/16 06:26, 6年前 , 6F
03/16 06:26, 6F
文章代碼(AID): #1QeojOb7 (DataScience)
文章代碼(AID): #1QeojOb7 (DataScience)