2013-03-21 121 views
0

我使用r隨機森林包來預測基於氨基酸序列的蛋白質對之間的距離,主要興趣是接近(距離較小)的蛋白質。我的訓練數據集由10k對蛋白質和它們之間的實際距離組成。然而,極少數蛋白質對(小於0.2%)之間的距離很小,問題在於訓練的隨機森林在預測距離較遠的蛋白質之間的距離方面變得非常準確,並且對於距離較短的蛋白質非常不利他們。我嘗試在訓練數據中對距離較遠的蛋白質進行下采樣,但結果仍然不好。我更喜歡關閉蛋白質(這些蛋白質之間的距離很小)。 存在的過擬合,因爲我的訓練精度爲78一個非常明確的信號,我的測試精度是51% 任何建議高度讚賞隨機森林對不平衡數據的退化

+0

您有一個數據不平衡的情況。 0.2%是微不足道的,所以模型(隨機森林)忽略它們。如果您的測試集包含更多的距離較遠的數據,則應將它們移動到訓練集並使用交叉驗證來測試準確性。這可能不夠,因此小距離採樣的重採樣是下一步(搜索'不平衡數據重採樣') – topchef 2013-03-21 13:48:34

回答

0

一對夫婦建議:

1)看GBM的從gbm包。

2)創建更多功能來幫助RF瞭解驅動距離的原因。

3)繪製錯誤與單個變量來尋找什麼是驅動關係。 (GGPLOT2非常適合此尤其使用coloursize選項。)

4)你也可以分配1或0至基於距離y變量(即,如果距離< X;設置爲1 /如果距離> = x;設爲0)。一旦你有兩個類,你可以使用RF中的strata參數來創建均勻平衡的採樣,並使用RF的importance()和varImpPlot()函數來查看哪些變量正在推動距離的差異。

5)嘗試使用距離相關變量的日誌。射頻通常非常適合補償非線性,但它不會因爲嘗試而受傷。

我的猜測是,#2是你想花時間在哪裏,儘管它也是最難的,需要最多的思考。