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