2010年12月28日 星期二

3 Feasible Method

剛在洗澡的時候想到一些方法,先把它們記下來

A. [Training for each Case]
這個想法是最早就有的
想法很簡單   就是針對每筆test data 去看哪幾個dimension 不是 '?'
然後把同樣那些dimension 都有值的每成一種case
每個case 就找相應的dimensions 的training data 下去 train model
最後再把每個人的label 組起來
但當初都用libSVM去跑  不但跑很久
而且幾個迴圈之後Matlab就掛了
現在有了liblinear 跑超快的  因此可能可以試試看

--

用liblinear試過了A的方法
不但沒有進步還更差... 真灰心

--

B. [Fill Value into '?']
這個想法就跟字面上一樣
填的方法目前想到的就是把每個class 每個dimension 取平均
因此一個 '?' 就有4種填法
每筆 data 都用暴力法去try所有可能
然後用最好的model 去做svmpredict
但這個方法可能有點行不通
因為假設一筆 data 平均來說有 140 個 '?' (D = 171)
因此try 一筆就要 4^140 總共要跑 10000 * (4^140)
這應該是天文數字了吧 XD

C. [DCForest]
這個方法就比較講究了
上次聽學長報完paper 有提到用不同的tree 去建 random forest
只要tree 的答對率 > 1/2 理論上random forest 就能work
但前提是每棵tree要盡量 independent
因此我想可能的方法是random 取 2000 筆 train data 建 tree
總共建 100 棵,平均來說每筆data會出現在5棵tree
所以要先試看看這樣train一棵出來  看看結果會不會比All-in-1要來得好
而且現在DCtree除了Binary Search(效果較差)
Full Search 的版本也改進了  因此應該可行
所以會先試這個方法  因為這些東西都是自己implement的 比較有成就感

--

為了建forest 發現好多bug
改了好多東西都改不好...只好放棄
不過小明用了Matlab的 Decision Tree 跑到1.55多
看來自己寫的真的打不贏別人的tool...
So sad...

--
God Bless!

沒有留言:

張貼留言