摘要:作者微信號微信公眾號簡書地址上個星期,我花了一些時間參加了的機器學(xué)習(xí)金融比賽。每個星期,都會重置比賽,然后公布一個新的數(shù)據(jù)集。然后經(jīng)過一周短短的比賽,來評出第一名和第二名。
作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
簡書地址:http://www.jianshu.com/p/af7e...
上個星期,我花了一些時間參加了 Numerai 的機器學(xué)習(xí)金融比賽。這篇文章就是我對于比賽的一些筆記:我嘗試過得一些方法,我做了什么工作以及什么工作我直接放棄不做。首先,讓我們來介紹一下這個比賽和平臺:
Numerai 是一家對沖基金,它利用比賽的形式來收集用戶的策略,然后在內(nèi)部對這些策略進行組合集成來交易。這個平臺還有一個獨一無二的地方是它對所有數(shù)據(jù)都會進行加密。每個星期,Numerai 都會重置比賽,然后公布一個新的數(shù)據(jù)集。然后經(jīng)過一周短短的比賽,來評出第一名和第二名。這些名詞不是單單利用比賽的分數(shù)來評定,還會有策略的原創(chuàng)性來考核。截止到這周末,我的策略的 log loss 在 0.68714。這個分數(shù)大約可以獲得價值 $ 8.17 的比特幣價值。
下面是訓(xùn)練數(shù)據(jù)的一個示例:
feature1 feature2 feature3 feature4 feature5 feature6 feature7 feature8 feature9 feature10 feature11 feature12 feature13 feature14 feature15 feature16 feature17 feature18 feature19 feature20 feature21 target 0.801620682063483 0.954026655642816 0.5705311667363 0.144232717229754 0.0500492688121434 0.0786789084265974 0.929508009336688 0.171077685785306 0.883034072289284 0.179369932130713 0.943269363053669 0.0288614434941082 0.1991065940751 0.968784322087461 0.064581284883459 0.916191480500131 0.238189399122635 0.0936556660484072 0.206537285119826 0.160288788368154 0.659444719296122 1 0.54007050183969 0.459006729530628 0.933131512414551 0.499801268888154 0.437992709228964 0.267235986043502 0.49719463349721 0.456020915709475 0.609753221442359 0.187454050581248 0.469354733168323 0.118559329564251 0.129507550533594 0.479953630810717 0.416888497364001 0.634561462124642 0.710520556134985 0.324297337296292 0.339857563207418 0.349509997045832 0.432920679407234 1 0.518214112985959 0.383788083593395 0.424871302717305 0.792762973770667 0.7742857173559 0.451385276234671 0.791400908677086 0.845301217143346 0.11862555750929 0.419257487945476 0.376741188540958 0.625610979113513 0.266524021808175 0.648017340815601 0.420797663214614 0.00431873269449817 0.992130143506543 0.718080611565518 0.992093533667718 0.134067138702938 0.0743077276110433 0 0.806453569351584 0.161343358248138 0.636975566410459 0.20171554254616 0.420537856699983 0.151818600989567 0.305146784581374 0.117884737420495 0.6108915265627 0.249714474623046 0.819308099139668 0.250770579717342 0.205248270449002 0.0862103305974124 0.532109927231077 0.790242340397417 0.198781520011354 0.274051362170583 0.192056729456156 0.0975874452607068 0.669890711788048 0 0.415003336362225 0.170186235034517 0.418823297694966 0.471830387551152 0.570765150255677 0.213788507104613 0.158155235117551 0.0117300575807448 0.418275738366933 0.558753991377777 0.179990534571358 0.436470111914978 0.506977165129181 0.300005858796116 0.742479443088257 0.206816619126046 0.814364270840413 0.331907239807323 0.0654237310678893 0.406143623934384 0.746499721419085 0 0.704449319534233 0.850338911254686 0.455998303770994 0.224563394324338 0.6995439084974 0.834721324063086 0.74728784556282 0.901345710496236 0.497415817686694 0.903353074258274 0.571234586425579 0.700451571955351 0.834000656317827 0.729095524732872 0.81078297616965 0.609452318787617 0.192694538456569 0.621665212601283 0.737860261408827 0.194185986803504 0.364996083433718 1 0.788055769180724 0.0545958246530098 0.200827379203853 0.0673784077815309 0.941077448055137 0.778947613783854 0.116750357635139 0.22800316108405 0.136388118235054 0.964284570466578 0.504061018335779 0.990569143158103 0.784283053374759 0.0393941086088943 0.933946479526913 0.669042714854619 0.138144590100865 0.918439009896414 0.880195626011122 0.0703418399004744 0.479384331357069 1 0.188297550227483 0.604074503040718 0.0183412656148252 0.81576618771192 0.518477669691875 0.803097540388692 0.711386433623059 0.652814191221587 0.0526464320116979 0.817774122488179 0.237459905042212 0.602959633090017 0.730338364463652 0.586008172371978 0.416888497364001 0.223150580662151 0.626276488264701 0.963008567409791 0.689730272299441 0.689253363243162 0.132085515045565 0 0.820315384108692 0.637408836538877 0.907437156607062 0.243122252397027 0.378765978591899 0.25798160900915 0.983337691578471 0.355088818872554 0.88329260758454 0.12352921389316 0.71346744394059 0.369877122677724 0.221232749108118 0.812421645851051 0.112857777466973 0.709823231860924 0.598130707018941 0.0413007685381965 0.50006278551784 0.266615825161751 0.735885538367622 1驗證
我在比賽中的第一步就是設(shè)計我們的驗證集,以方便我們在本地測試我們的模型性能,從而可以對模型在排行榜上面的排名可以有一個預(yù)估。如果我們只是簡單的對數(shù)據(jù)進行分割,那么驗證結(jié)果并不能正確的反應(yīng)在排行榜上面,所以在這里我采用的是 “對抗驗證”。這個聰明的想法是 @fastml 中的一個想法,具體博客在這里。具體思想如下:
訓(xùn)練分類器,并且確定數(shù)據(jù)的來源,是來自訓(xùn)練集還是測試集;
按照測試數(shù)據(jù)集中的概率分布對訓(xùn)練數(shù)據(jù)進行排序;
選擇與測試數(shù)據(jù)最相似的訓(xùn)練數(shù)據(jù)作為驗證集;
按照這種方法設(shè)計的驗證集,我們把相同的模型在公開排行榜上面進行測試的時候,得到的 log loss 誤差大約在 0.001 左右。有趣的是,相對于訓(xùn)練數(shù)據(jù),測試數(shù)據(jù)是不滿足 IID 的條件。
基準模型現(xiàn)在我們已經(jīng)有了一個非常好的驗證集,之后我們需要去設(shè)計一個模型,并且對這個模型進行驗證和上傳結(jié)果,這個模型就作為我們的基準模型了。作為起點,我就是用最簡單的邏輯回歸并且沒有用任何的特征工程。這個模型在驗證集上面得到了 0.69290 的結(jié)果,在公開的排行榜上面得到了 0.69162 的結(jié)果。這個結(jié)果并不好,但是我們的目的達到了,現(xiàn)在我們擁有了一個初始目標。為了進行比較,第一名目前的得分為 0.64669,所以我們最簡單的基準分數(shù)與它之間的大約只有 6.5% 的差距。這也就意味著我們對于基準模型的任何改動,對最終的排名結(jié)果的影響都是非常小的。我們在對基準模型加上 1e-2 的 L2 正則化之后,這在排行榜上面達到了 0.69286 的正確率,比基準測試提高了 0.006 。
神經(jīng)網(wǎng)絡(luò)在開始使用特征工程之前,我快速的瀏覽了一下神經(jīng)網(wǎng)絡(luò)算法。在理想的情況下,神經(jīng)網(wǎng)絡(luò)可以從足夠多的原始數(shù)據(jù)中學(xué)習(xí)到特征,但不幸的是,我嘗試過目前所有的神經(jīng)網(wǎng)絡(luò)架構(gòu),但是他們?nèi)〉玫男Ч疾荒鼙群唵蔚倪壿嫽貧w有很大的改進。此外,深度神經(jīng)網(wǎng)絡(luò)需要比邏輯回歸更多的參數(shù),所有我們需要去使用 L2 正則和批量歸一化來規(guī)范參數(shù),給模型加上 Dropout 也可以給架構(gòu)帶來性能的改進。
一個有效但是非常有意思的架構(gòu)是使用一個非常寬的隱藏層(2048個神經(jīng)元),擁有很高的 Dropout 值(達到 0.9),并且在開始訓(xùn)練的時候我們需要對初始化參數(shù)做一個固定設(shè)置。因為擁有很高的 Dropout ,所以這就造成了很多的集成模型。雖然這個模型能很好地工作,大約可以達到 0.689 的正確率,但是該模型太有個性,最終還是不打算采用這個模型。最后,神經(jīng)網(wǎng)絡(luò)沒有在這個問題中得到比較好的結(jié)果,所以我們沒有在神經(jīng)網(wǎng)絡(luò)的改進上花費更多的精力,而且本文我們主要分析我們的特征工程。
數(shù)據(jù)分析與特征工程現(xiàn)在我們需要去挖掘我們的數(shù)據(jù)價值,先從一個簡單的特征分布圖開始吧。具體如下:
每個特征的分布都是非常相似的,那么特征之間的相關(guān)性如何呢?我們也畫了一個圖,如下:
][7]
從圖中,我們可以看到很多的特征之間是強相關(guān)的。我們可以通過多項式關(guān)系在我們的模型中使用這一個特性。根據(jù)這個性質(zhì),我們在驗證數(shù)據(jù)集上面取得了 0.69256 的成績。
接下來,我們來做降維處理。我們采用的是 PCA 來把維度下降到二維,然后進行可視化操作,如下:
從圖中我們得不到很多有用的信息,那么嘗試一下多項式特征如何?如下圖:
多項式 PCA 通過將很多目標是 “1” 的值拉向邊緣,并且把目標是 “0” 的值拉向中間,從圖中看效果比前面一個好了很多。但是看起來還不是很好,所以我打算放棄使用 PCA,而使用別的方法。
我們將使用一種稱為 t-SNE 的方法,t-SNE 通常用于高維數(shù)據(jù)的可視化,但是它擁有一個 PCA 沒有的特性:t-SNE 是非線性的,并且根據(jù)兩個點的概率來選擇是否作為中心點的鄰居。
這里,t-SNE 獲得了很好的的可視化結(jié)果。我將這些 2D 特征添加到我們的模型中,獲得了目前最好的 log loss 成績:0.68947,。我懷疑這個起作用的原因是局部特征,邏輯回歸不能從數(shù)據(jù)中得到這些局部特征,但是這些局部特征對我們的分類是非常有效的。
由于 t-SNE 是隨機的,我們每一次的運行結(jié)果都會產(chǎn)生不一樣的結(jié)果。為了利用這一個特性,我們需要在不同的困惑度和維度(2D或者3D)上面,運行 t-SNE 五到六次,然后去分析這些額外的特征。最后,根據(jù)這個結(jié)果,我們的驗證成績達到了 0.68839 。
附加嵌入數(shù)據(jù)由于 t-SNE 可以很好地工作,所以我又采用了集中其他的嵌入方法,包括自動編碼器,去噪編碼器和生成對抗網(wǎng)絡(luò)。自動編碼器可以對原始數(shù)據(jù)進行重新建模,而且建模的正確率可以高達 95% 的正確率,即使我們的數(shù)據(jù)中有噪音,但是這種嵌入表示并沒有造成很大的影響。GAN,包括各種半監(jiān)督的變體,他們的性能并沒有超過簡單的邏輯回歸模型。我還是重點關(guān)注非線性降維犯法,比如內(nèi)核PCA和等值線。但是這些方法很花費計算時間,減少了我迭代的次數(shù),所以最終我還是把他們拋棄了。我沒有嘗試過 LargeVis 或者參數(shù) t-SNE,但是他們都是非常值得研究的,因為它們可以保持一定的適應(yīng)性,而不是將所有的學(xué)習(xí)樣本一次輸入。
其中一個集成模型是數(shù)據(jù)互動。基本上,從兩個樣本的特征可以直接看出,兩個樣本中哪個樣本更大的可能性會被歸類為 “1”。由于我們是對樣本之間的交互進行建模,而不是對單個樣本,因此根據(jù)這一個特性我們可以得到更多的數(shù)據(jù)。我們還可以根據(jù)我們的分類結(jié)果,從而從數(shù)據(jù)中學(xué)習(xí)到更有用的特征。
超參數(shù)搜索現(xiàn)在我們有一些有用的特征和一些性能良好的模型,所以我想運行一個超參數(shù)模型,看看它是否可以勝過現(xiàn)有的模型。由于 scikit 包只能用 GridSearchCV 和 RandomSearchCV 進行探索超參數(shù),而不是整個架構(gòu),所以我選擇使用在兩者之間的 tpot 包。我發(fā)現(xiàn),使用隨機 PCA 的性能由于 PCA,并且 L1 正則化(稀疏性)略由于 L2 正則化(平滑),特別是跟隨機 PCA 進行配合使用。不幸的是,我們所發(fā)現(xiàn)的數(shù)據(jù)之間的關(guān)聯(lián)性并沒有用在最終的集成模型中:手工工程取得了勝利。
集成我們已經(jīng)完成了幾個模型,是時候?qū)@幾個模型進行集成預(yù)測了。集成開發(fā)有很多的方式,我們這里采用的是最簡單的基于幾何平均值的簡單平均值。
最后的集成模型我們采用了 4 個集成模型: logistic regression, gradient boosted trees, factorization machines 和 the pairwise model。我對每個模型都是使用相同的特征,特征由原始的 21 個特征組成,并且在 5,10,15,30 和 50 的困惑度下,在 2D 中運行 t-SNE 五次,以及在 3D 中運行 t-SNE 一次(困惑度 30)。這些特征與多項式特征相互結(jié)合,并且應(yīng)用到模型中,這個集成模型最終得到的分數(shù)是 0.68714 。
結(jié)論總體而言,這是一個非常有趣的比賽,它和 kaggle 最不同的地方是它的數(shù)據(jù)是加密的,而且它獨特的獎金分配制度也是吸引我的一個地方,但是我更傾向于將獎勵看做是積分,而不是貨幣,因為這使得競爭更加樂觀。另一方面,現(xiàn)在我有了我的第一個比特幣 :)
完整代碼,可以點擊 Github。
作者:chen_h
微信號 & QQ:862251340
簡書地址:http://www.jianshu.com/p/af7e...
CoderPai 是一個專注于算法實戰(zhàn)的平臺,從基礎(chǔ)的算法到人工智能算法都有設(shè)計。如果你對算法實戰(zhàn)感興趣,請快快關(guān)注我們吧。加入AI實戰(zhàn)微信群,AI實戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41097.html
摘要:月日,各項競賽的排名將決定最終的成績排名。選手通過訓(xùn)練模型,對虛擬股票走勢進行預(yù)測。冠軍將獲得萬元人民幣的獎勵。 showImg(https://segmentfault.com/img/bVUzA7?w=477&h=317); 2017年9月4日,AI challenger全球AI挑戰(zhàn)賽正式開賽,來自世界各地的AI高手,將展開為期三個多月的比拼,獲勝團隊將分享總額超過200萬人民幣的...
摘要:缺少投資回報率的分析環(huán)節(jié)公司正在加大數(shù)據(jù)科學(xué)技能方面的投入。通常,成功的分析項目需要數(shù)據(jù)科學(xué)算法與投資回報率緊密相關(guān)。并不涉及這方面的分析,而只專注預(yù)測,并不考慮如何把數(shù)據(jù)科學(xué)結(jié)果應(yīng)用于投資回報率。 showImg(https://segmentfault.com/img/bVbmSt7?w=900&h=523); 作者 | Pranay DaveCDA 數(shù)據(jù)分析師原創(chuàng)作品,轉(zhuǎn)載需授權(quán)...
摘要:世界杯小組賽將收官,你還依然信嗎冷門頻出,黑馬擊敗豪強。以本屆世界杯開幕戰(zhàn)俄羅斯對陣沙特阿拉伯的比賽為例,兩隊上次交手是在年的一場友誼賽,距今已經(jīng)年。然后進入第二步,預(yù)測回報率導(dǎo)向。在足球領(lǐng)域,這個回報率已非常不俗。 世界杯小組賽將收官,你還依然信AI嗎?冷門頻出,黑馬擊敗豪強。不少AI模型始料未及。到底還能不能愉快找到科學(xué)規(guī)律?或者說足球比賽乃至其他競技體育賽事,數(shù)據(jù)科學(xué)家在AI加持下,究...
摘要:達觀數(shù)據(jù)招人啦面向北京上海深圳成都四個地區(qū)提供人工智能算法產(chǎn)品銷售等多類崗位畢業(yè)多年,你的狀態(tài)還好嗎是否憂慮被甩在時代的邊緣是否擔(dān)心被機器取代是否不安現(xiàn)狀躍躍欲試來吧,選擇對的行業(yè),與優(yōu)秀的人一起共事,與我們一起走在時代的風(fēng)口上,從事當下最 showImg(https://segmentfault.com/img/bVbeHrX?w=720&h=400);達觀數(shù)據(jù)招人啦! 面向北京、上...
閱讀 1261·2023-04-25 19:10
閱讀 1140·2021-09-10 10:50
閱讀 3028·2021-09-02 15:21
閱讀 1383·2019-08-30 15:52
閱讀 1681·2019-08-30 13:56
閱讀 2077·2019-08-30 12:53
閱讀 1870·2019-08-28 18:22
閱讀 2115·2019-08-26 13:47