天池O2O优惠券预测之后的一些个人思考
背景:
??我本身是從事過python的開發(fā)工作,接觸過pandas,numpy等機器學(xué)習(xí)相關(guān)的庫。但是,并沒有實際意義上做過機器學(xué)習(xí)相關(guān)的項目。做此課題的目的也是為了熟悉一下機器學(xué)習(xí)的流程。
錯誤
?先說說自己的錯誤吧,認(rèn)識自己犯下的錯誤往往會更重要一些。
未去解讀每個特征的含義。
在剛拿到這個題目時,我起初并沒有仔細的去閱讀題目的具體含義。這是是我認(rèn)為最嚴(yán)重的做錯。不清楚需求的情況下盲目的去下手。在遇到缺省值的情況下,未加思考的進行了缺省值的填補。在后期讀懂題意之后重新做了一些特征工程上的調(diào)整,也借鑒了別人優(yōu)秀的思路,算是磕磕絆絆的把特征工程完成了。
在使用pandas中merge函數(shù)時,出現(xiàn)了樣本呈笛卡爾積增長的問題
起初在遇到這個問題時,IDE給我的報錯是內(nèi)存不足,我自己也認(rèn)為是數(shù)據(jù)集過大導(dǎo)致的。因為前期提取了56個特征,所以我第一時間會想是不是因為樣本的問題。所以在特征方面我花了大量的時間去驗證。在這里我犯下了一個低級錯誤,在遇到問題時,沒有使用debug逐步的去排除問題!!!!在經(jīng)過后期的debug排查后發(fā)現(xiàn),是因為自己在merge過程中合并了一個用來聚合的中間字段,導(dǎo)致了這樣的問題。這里我又犯下了一個低級錯誤,代碼的注釋為什么在一段內(nèi)容中沒備注清楚!!!!
總結(jié)
這里想跟大家先分享一下自己做完這個題目之后的一些感想。
-
關(guān)于特征工程:
算法決定了模型的下限,特征工程決定了模型的是上限。這是在研究過第一名的解題思路之后給我的感覺,我發(fā)現(xiàn)他們的成功在于他們對于一個問題的分解。
面對O2O優(yōu)惠券這樣的問題,(他們在提取特征時的思路讓我想到了傳統(tǒng)編程面向?qū)ο笾蓄惖母拍睢?#xff09;他們將一個大問題分解成三個類:用戶,商家,優(yōu)惠券分別為一個類。同時,彼此之間還有些一些聯(lián)系,在提取特征中,先分別提取沒個類自身的特征,最后在提取他們的組和特征,最后提取出了50+的特征。在我看來,這是他們能取得第一名的一個重要因素。
-
關(guān)于特征提取:
為什么知道這道題需要去衍生新得特征,而taitannic那道題不需要??
特征的提取還是需要去結(jié)合實際業(yè)務(wù)為準(zhǔn),特征的提取是為了打造一個更加優(yōu)秀的模型。在我自己目前的認(rèn)知中,特征并不是越多越好,在實際的業(yè)務(wù)中,并不是每個特征都對結(jié)果產(chǎn)生決定性的影響。
那是不是特征需要做到少而精就足夠???我自己的認(rèn)知中,如果前期提供的特征過少,且與所要追求的目標(biāo)相關(guān)性不大時,我們需要盡可能的從已有特征中衍生出一些新的特征。在這一步,我覺得應(yīng)當(dāng)盡可能的多,后期可以通過特征選擇去篩選。但是,前期我們必須思考的多一些,盡可能的給到多一些的緯度。 -
關(guān)于正負(fù)樣本不均衡:
??在我做完特征工程之后發(fā)現(xiàn)了自己處理后的數(shù)據(jù)集出現(xiàn)了正負(fù)樣本嚴(yán)重失調(diào)的問題,碰巧的是我這里采用的xgboost這個算法,也很幸運的避開了這個問題。但是,在選擇模型之前,我依舊對自己的特征工程報以一個懷疑的態(tài)度。我分析了原始數(shù)據(jù)集,進行了對比,發(fā)現(xiàn)原始數(shù)據(jù)集中也存在樣本不均衡的問題,但是并沒有我處理之后那么嚴(yán)重,我第一想法是不是因為我在進行了大量的特征提取,合并之后導(dǎo)致的?還是對于缺省值處理不當(dāng)導(dǎo)致的?這個問題我目前還在思考,也在嘗試一些別的思路。但是總的來說,在訓(xùn)練模型之前,需要去考慮正負(fù)樣本均衡的問題,通常也需要做的正負(fù)樣本均衡。
不足
這里說說自己的不足,希望你看到我犯下的錯誤之后能避開這些問題,也希望我的自省能給你帶來一些幫助
基礎(chǔ)很重要。
特征工程方面知識的薄弱導(dǎo)致了我前期處理數(shù)據(jù)的過程中磕磕絆絆,主要體現(xiàn)在做了很多的無用功,需要更多的系統(tǒng)化的知識為自己以后的路做一個鋪墊。思考問題角度需要更寬廣
這是我看到第一名他們的解題思路之后對自己的一個省視。當(dāng)我拿到這個題目去分析時,并不如他們那般思路清晰,寬廣。我覺得這是知識+經(jīng)驗不如別人的一種體現(xiàn), 多看,多做,多想。低級的錯誤
對于這個問題,我覺得是不可原諒的。時間浪費在一些自己的粗心造成的錯誤上對于任何一個開發(fā)人員來說都是最不想看到的。往后在寫代碼過程中切記注釋的重要性以及debug的使用。經(jīng)驗的不足
這是每個人接觸到一個新的領(lǐng)域都會遇到的問題。需要去解決但是不能著急解決的問題。我覺得往期的工作,社會閱歷多少還是會幫助到我們?nèi)コ料滦娜ソ鉀Q一些新的問題。對于我來說,多看,多做,多想是我認(rèn)為解決這個問題的方式。沉淀的越多,釀出的酒才會更加醇厚香甜。總結(jié)
以上是生活随笔為你收集整理的天池O2O优惠券预测之后的一些个人思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IPV4和地址掩码
- 下一篇: 【EasyRL学习笔记】第九章 Acto