我是Weka 3.7.9的新手。 我有一个arff文件,其中包含这些属性,类和数据: http://pastebin.com/s8hivv0U
此文件代表Android项目。 所以,1-9。属性是不同类型的指标:
最后一个是包含Google Play项目评分的课程。
所以每一行都是Andorid项目。 (当然,原始* .arff文件包含更多项目......)
我想用学习算法分析数据。 预测因子从1到9。 我想确定一下,哪些预测因素主要影响Google Play评分。
我该怎么做? 什么是最好的方法呢? 如果有可能的话,我想请你向我解释一下。
提前致谢, 彼得
答案 0 :(得分:0)
首先,如果您希望输出是连续的,我建议您将class
类型更改为numeric
。否则,我建议将类标签类型保留为nominal
(就像您现在一样),但将评分更改为{1, 2, 3, 4, 5}
。
如果更改为数字输出(例如,您可以预测4.5星),那么您将需要使用能够使用数字类的分类器。
我建议您查看documentation以了解有关使用Weka的更多信息,可能需要通过一些教程。例如,双击ARFF文件后,您应该在Classify
选项卡中完成大部分工作。选择一个分类器,然后选择Start
。
Regression,特别是linear regression很好,因为它很容易解释,因为它只是为每个属性赋予权重,并使用这些权重的乘法和加法来提供输出。
我使用了您的示例文件并使用LinearRegression
对其进行了测试,但是对于这么少的示例,它确定最佳模型只是输出3.9667
作为评级,这将给您一个平均绝对误差0.4722
。
不满意,接下来我尝试了SimpleLinearRegression
,它提供了一个模型-0.02 * activites + 4.13
,并给出了0.472
的平均绝对误差。
SMOreg
提供以下模型
weights:
+ 0.1147 * (normalized) lloc
- 0.0404 * (normalized) nid
- 0.1662 * (normalized) nle
- 0.0647 * (normalized) nel
+ 0.3385 * (normalized) nip
- 0.1352 * (normalized) activites
- 0.019 * (normalized) inside-permissions
- 0.0464 * (normalized) outside-permissions
+ 0.1602 * (normalized) all-permissions
+ 0.5921
,平均绝对误差为0.3859
。但是在这一点上,我认为只有这么少的数据点,你就是overfitting你的数据。
使用k-nearest neighbors可能是一种可行的方法,如果您有更多数据(在Weka中称为KStar
)。
DecisionStump
算法输出此模型的平均绝对误差为0.3424
,但也可能过度拟合。
inside-permissions <= 1.5 : 2.6
inside-permissions > 1.5 : 4.090909090909091
inside-permissions is missing : 3.966666666666667
正如您所看到的,考虑到您只有12个数据点,模型和错误率并不是很好。要构建一个非常好的模型,您需要更多数据。为了准确了解模型的运行情况,您不仅需要有足够的数据来进行训练,而且还需要足够的数据作为单独的测试集,仅用于测试模型的性能。