我正在尝试根据变量User
,Planning Horizon
,Material
以及更多内容为“Hit”,“Miss”类训练分类器。
除Planning Horizon
(整数)
我有不平衡的数据所以我试图使用阈值来选择模型的最终输出(而不是仅使用默认的0.5概率)
变量User
对类结果的影响最大,所以我试图为每个用户使用不同的阈值。我正在考虑使用朴素贝叶斯后验概率P(类|用户)。
问题是,我如何将这些不同的规则应用于模型的输出矩阵:
“阈值矩阵”,每个用户的不同阈值:
User P("Hit"|User)
A 0.80
B 0.40
C 0.61
分类器(P(Hit)和P(Miss))和最后一列(最终预测)的输出是我需要构建的。
User P("Miss") P("Hit") Final Prediction
B 0.79 0.21 Miss
B 0.20 0.80 Hit
A 0.15 0.85 Hit
C 0.22 0.78 Hit
A 0.90 0.10 Miss
B 0.80 0.20 Miss
注意第一行得到一个MISS,因为P(Miss)低于P(Hit | User = B)
答案 0 :(得分:0)
我会合并我的阈值矩阵,然后像这样手动创建Final Prediction
列。
df <- read.table(text='User P("Miss") P("Hit") "Final Prediction"
B 0.79 0.21 Miss
B 0.20 0.80 Hit
A 0.15 0.85 Hit
C 0.22 0.78 Hit
A 0.90 0.10 Miss
B 0.80 0.20 Miss',
header=TRUE, sep=' ', check.names=FALSE)
thm <- read.table(text='User P("Hit"|User)
A 0.80
B 0.40
C 0.61',
header=TRUE, sep=' ', check.names=FALSE)
thmdf <- merge(thm, df)
thmdf['My Final Prediction'] <-
ifelse(thmdf$`P(Hit)` < thmdf$`P(Hit|User)`,
'Miss',
'Hit')
thmdf