我在插入符號包中使用火車來訓練一些c50型號。我用C5.0方法做得很好,但是當我想使用成本敏感的C50方法時,我很難理解如何調整成本參數。我試圖做的是在預測錯誤的一個類時引入成本。我嘗試在插入符號包網站(http://topepo.github.io/caret/index.html)中搜索並閱讀幾處在這裏和那裏找到的手冊/教程。我沒有找到任何有關如何處理成本參數的信息。所以這就是我自己試過的:在插入符號中使用成本敏感型C50
用默認設置運行火車,看看我得到了什麼。在輸出中,訓練函數以0到2的成本進行嘗試,並給出了成本= 2的最佳模型。
嘗試在expand.grid函數中添加成本矩陣,就像使用包C5.0一樣。代碼如下(試驗推到1因爲我只想在我的輸出中有一棵樹/一組規則)
c50Grid < - expand.grid(.trials = 1,.model = c(「tree」,「規則 「),.winnow = C(」 TRUE」, 「FALSE」),。成本=矩陣(C(0,1,2,0),NcoI位= 2))
然而,當我執行火車功能,雖然我沒有得到任何錯誤(但我得到50警告),火車再次嘗試成本從0到2.我做錯了什麼?哪種格式具有成本參數?這裏有什麼意思?我如何解釋結果?哪個班級的成本爲「預計班級錯誤費用比班級1高一倍」?另外,我嘗試使用的是一個矩陣,但雖然它不適用於此格式,但我會如何添加要測試的不同成本?
謝謝!任何幫助將非常歡迎!
編輯:
所以,試圖找到我自己有關的C5.0Cost成本參數的含義的答案,我去了C5.0Cost.R(https://r-forge.r-project.org/scm/viewvc.php/models/files/C5.0Cost.R?view=markup&root=caret&pathrev=761),並期待代碼。 這條線:
cmat <-matrix(c(0, param$cost, 1, 0), ncol = 2)
我想,它是將成本參數的成本矩陣。所以,我想現在我可以理解它是如何工作的。如果我有class = {0,1},並且我的積極類是0,則此矩陣表示「預測0級錯誤的成本比1級要高一倍」,對嗎? 我現在的問題是,我怎麼能做到相反?我怎麼能設置「預測1級錯誤成本比0級雙倍」,這將是:
cmat <- matrix(c(0, 1, param$cost, 0), ncol=2)
我可以只將成本設置爲0.5嗎?如果想用不同的值訓練,只需使用小於1 {0.5,0.6,0.7等}的值。 注意:我的數據是這樣的,當我使用C50或其他樹木之前,它需要「Positive class = 0」,所以當我使用C50時必須反轉成本矩陣,所以如果使用脫字符方法C5.0Cost,我需要做同樣的事情或找到另一種方式來做到這一點...
我非常感謝這裏的任何幫助。 謝謝!
謝謝Max。正如我上面所指出的那樣,我試着用你說的方法,但我努力去理解成本的含義以及如何使用它。現在我可以看到它被指示爲一個整數。但是這是什麼意思?當我在R中使用C50封裝的成本敏感的C50時,我將成本作爲矩陣,我發現很容易理解,我正在設置錯誤分類的成本。但是,只使用一個數字,我會添加錯誤分類成本?或者它有不同的含義? – 2014-10-02 09:06:20