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

看板DataScience作者 (小強)時間6年前 (2018/03/10 08:46), 6年前編輯推噓5(5012)
留言17則, 6人參與, 6年前最新討論串1/1
作者: pipidog (如果狗狗飛上天) 看板: Python 標題: Re: [閒聊] 菜鳥上Kaggle: 房價預測 時間: Wed Mar 7 04:33:23 2018 ※ 引述《OnePiecePR (OPPR)》之銘言: : 這裡有人玩 Kaggle 嗎? : 其實我還沒認真坐坐下來學Python,也沒其他程式經驗。 : 只是朋友說Kaggle 很好玩,可以當作學 Python 的目標,建議每兩週作一題,我就挑戰 : 看看。 : 我做的是很久的題目,1460 筆房價資料,每筆資料79個特性。 : 訓練後,要估另外1459筆資料回傳讓網站系統估算成績。 : 我先花了四五天,整理資料(我以前 Excel 還可以),然後朋友丟一個 Lasso Regressi : on給我,我馬上套用,算一個結果就上傳... 以為這樣就算完成一題。 : 結果被打搶,Error message 我沒看清楚。 : 那一版真的很差,預估值誤差 rmse 將近35000。 : 再花了一週時間,重新再整一次資料,邊研究別人的方法,大致加了兩招:XGB 跟 K fol : d 誤差降低到15000 左右。我想大概是我的極限了。 : 過程中一直用的 bumpy,pandas,一下子 array, 一下子 dataframe, 花了不少時間處理 : ,應該乖乖坐下來搞懂才是。 一點想法: 1. 1460筆資料,卻有79的feature,似乎太多了.你聽過維度詛咒嗎? 建議先作特徵 選取,挑出最重要的20個feature(或者更少? 這你得試試看才知道)來作訓練: *你說你選擇用Lasso Regression,不知是有目的的這樣作還是隨便挑的,因為Lasso 其實就是在loss裡面加入了L1懲罰,L1會導致線性擬合的時候很多參數被強迫變 成0.這意味著你也認為這79個feature裡面,其實只有幾個是真正重要的.如果是 這樣,何不一開始就先試著作特徵選取? (事實上有時候Lasso就是拿來做特徵選 取之用) http://scikit-learn.org/stable/modules/feature_selection.html 2. 如果資料只有1千多筆,而網站又提供的另外的測試集了,建議訓練時就不要再分 測試跟訓練了. 你直接對全部的資料用corss-validation來判斷模型表現,找出 好的超參數後,就拿全部資料訓練模型就好.才一千多筆還分測試跟訓練,貴了一點. http://scikit-learn.org/stable/modules/cross_validation.html 3. 你的數據可能非線性程度高,用Lasso自然不好,試試看SVM(支援向量機)? 一般如果是回歸問題,kernal多選用Radial basis function http://scikit-learn.org/stable/modules/svm.html#regression 4. 沒有一個模型不能解決的事情,如果有,就給它一堆模型! 所以你可以考慮ensemble learning,例如random forest, adaboost,..,etc.多數情況下會比用單一模型好. http://scikit-learn.org/stable/modules/ensemble.html 5. 最後找個網站,把pandas練熟,這東西沒弄熟,洗資料會搞得你很痛苦. https://ithelp.ithome.com.tw/users/20103511/ironman/1077?page=2 看一下14,15天. * 最後,處理數據佔90%的時間,訓練模型只佔10%,這是很正常的...越髒的事情越花時間 ,不要覺得奇怪. -- ★人生中最溫暖的夏天是在紐約的冬天 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.66.168.95 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1520368414.A.CE9.html ※ 編輯: pipidog (73.66.168.95), 03/07/2018 04:51:15

03/07 05:58,
感謝教學 獲益良多
03/07 05:58

03/07 07:18,
感謝大大分享!獲益良多!
03/07 07:18

03/07 07:30,
kaggle的測試集,通常不附target..沒辦法用cross-validation
03/07 07:30

03/07 07:32,
emsemble learning通常也沒有比單一模型好很多..
03/07 07:32

03/07 07:37,
pandas真的要好好學,但sklearn最大問題在於對類別屬性的
03/07 07:37

03/07 07:37,
處理不佳.
03/07 07:37

03/07 07:39,
pandas已經有category,但sklearn還無法使用
03/07 07:39

03/07 07:42,
目前只有Y能夠以分類處理,X的部分都轉成int,然後被轉成
03/07 07:42

03/07 07:43,
v大,同意,sklearn跟pandas真的整合度很糟糕...
03/07 07:43

03/07 07:43,
但可見未來似乎也不太可能改善,只能靠耐心處理了
03/07 07:43

03/07 07:44,
flaot去處理了.這是頗不合理的處理方式....
03/07 07:44

03/07 07:45,
用過R的大概知道我說的是什麼..這部分希望sklearn能否直接
03/07 07:45

03/07 07:45,
支援pandas就方便多了.
03/07 07:45

03/07 09:33,
03/07 09:33

03/07 11:32,
03/07 11:32

03/07 15:58,
ensemble現在應該一堆都直接無腦XGBoost了XD
03/07 15:58

03/07 16:03,
不妨玩玩看PCA
03/07 16:03

03/07 16:20,
比較好處理 category好的方法就是 one hot 然後pca了 但是
03/07 16:20

03/07 16:20,
category類用來做 regression也不要太期待accuracy
03/07 16:20

03/07 17:03,
test set當然沒 target比賽就是那樣 要用 training 來做cv
03/07 17:03

03/07 17:07,
所以你有一堆數值和類別混合的data,用python做真的會想XXX
03/07 17:07

03/07 17:08,
R內建有factor類別,套件也多能配合,用起來方便多了.
03/07 17:08

03/07 17:21,
明明sklearn是一個豐富的PACKAGE,當初怎沒將這個考慮進去.
03/07 17:21

03/07 17:23,
用上決策樹的感受特別明顯.
03/07 17:23

03/07 17:25,
ONE HOT 也不是萬靈丹,當屬性含有很多類別時,會製造出更多
03/07 17:25

03/07 17:29,
屬性,整個屬性維度又更大.
03/07 17:29

03/07 17:31,
R內建的FACOTR,套件大多考慮到這一層,用起來方便多了.
03/07 17:31

03/07 17:32,
或許SKLEARN 只考慮到配合NUMPY使用,但這問題應該還多人都
03/07 17:32

03/07 17:33,
遇到了. 希望後面的版正能修正這個問題...
03/07 17:33

03/07 21:23,
髒 這體會有同感
03/07 21:23

03/08 04:38,
受教啦,感謝!
03/08 04:38

03/08 08:28,
03/08 08:28

03/08 10:51,
提供一個關於 category 轉換的方法
03/08 10:51

03/08 10:51,
在kaggle上用過, 效果不錯
03/08 10:51

03/08 11:19,

03/08 16:09,
感謝上面f大分享 很詳細
03/08 16:09
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.8.6.231 ※ 文章網址: https://www.ptt.cc/bbs/deeplearning/M.1520642760.A.2B2.html

03/10 13:04, 6年前 , 1F
小弟不專業 但Lasso在N>P的情況使用到底有什麼意義?
03/10 13:04, 1F

03/10 13:05, 6年前 , 2F
之前面臨到的情況都是P>>N才會使用到LASSO
03/10 13:05, 2F

03/10 13:05, 6年前 , 3F
且使用的都是Group Lasso
03/10 13:05, 3F

03/10 13:08, 6年前 , 4F
1460*79 直覺的作法就是拉Stepwise L2挑Feature
03/10 13:08, 4F

03/10 13:09, 6年前 , 5F
相關係數 變異數等一次統包都考慮到了
03/10 13:09, 5F

03/10 13:09, 6年前 , 6F
這篇提到Lasso有什麼特別的用法嗎
03/10 13:09, 6F

03/10 15:31, 6年前 , 7F
N和P分別是指什麼?
03/10 15:31, 7F

03/10 22:10, 6年前 , 8F
03/10 22:10, 8F

03/11 12:42, 6年前 , 9F
N是data數,p是variable數
03/11 12:42, 9F

03/11 12:44, 6年前 , 10F
lasso就只是很單純的迴歸+ penalty term,並沒有說p>n
03/11 12:44, 10F

03/11 12:44, 6年前 , 11F
才能用
03/11 12:44, 11F

03/11 16:47, 6年前 , 12F
對啊 可是不知道有什麼好處
03/11 16:47, 12F

03/11 16:57, 6年前 , 13F
做 selection 的前提不就暗示了存在 sparsity?所以用一下
03/11 16:57, 13F

03/11 16:57, 6年前 , 14F
lasso 也是滿合理的。實務上當然不會那麼理想,就是多個
03/11 16:57, 14F

03/11 16:57, 6年前 , 15F
方法可以踹看看這樣
03/11 16:57, 15F

03/11 17:13, 6年前 , 16F
也是 踹看看
03/11 17:13, 16F

03/11 17:58, 6年前 , 17F
LASSO可以壓縮模型,因為參數為0的在怖署時可以刪除
03/11 17:58, 17F
文章代碼(AID): #1Qeoh8Ao (DataScience)
文章代碼(AID): #1Qeoh8Ao (DataScience)