在我的应用中,我有Item
对象。
一个Item
具有以下属性:
- 基础名称(剑、盾等)
- 稀有度(普通、魔法、稀有、独特)
- 最多6个从大约400个中选取的mods(可以减少,因为其中很多是不常见或无用的)。大多数mods有数值(如+100最大生命值)。物品的价值很大程度上也取决于这些数值,而不仅仅是mods的存在与否。
- 价格
我的目标是输入一个物品并获得价格估算。
我不确定如何为此构建决策树,特别是因为mods的列表非常庞大。
我考虑过类似这样的方法,但我想即使经过修剪,这也会产生一个巨大的树。
关于如何构建这个树以预测物品价格,有什么建议吗?
回答:
首先要明确的是,你的问题被定义为回归问题,因为你估算的值是数值(价格)。在分类问题中,你估算的是一个实例的类别,而类别是有限的。决策树用于“决定”一个实例属于哪个类别,因此显然是用于分类的,你不能用它来解决你的问题。
所以,现在你知道你的问题是回归问题,并且有很多用于回归问题的方法。我建议你看看以下这些:
- 线性回归
- 回归树
- 模型树
这些方法不仅在预测方面有强大功能,而且构建的模型也相对容易理解。这意味着通过检查模型,你将能够理解为什么某些物品便宜而另一些昂贵。
你可以在名为Weka的机器学习套件中找到所有这些方法。但在使用之前,你需要先准备数据。这不仅意味着将其转换为正确的文件格式,更重要的是,决定如何表示数据。前两个属性是所谓的名义属性,目标属性是数值属性,所以在.arff格式中它们应该看起来像这样:
@attribute base_name {sword, shield, ... }@attribute rarity {normal, magic, rare, unique}@attribute price numeric
如果我正确理解了问题,mods要么开启要么关闭,所以我会用以下方式表示它们:
@attribute mod1 {0,1}@attribute mod2 {0,1}...@attribute mod400 {0,1}
这也意味着,你必须准备所有400个数据,其中大部分将是零,最多有6个一,表示使用、开启或你如何称呼的mods。