使用Weka预测Google Play的评分



我是Weka 3.7.9的新手。我有一个arff文件,其中包含这些属性,类和数据:http://pastebin.com/s8hivv0U

表示Android项目的文件。1-9。属性是不同类型的度量:

  1. lloc -逻辑代码行
  2. nid - id个数
  3. nle -嵌套级别
  4. nel -元素数
  5. nip -输入元素个数
  6. activities -来自AndroidManifest
  7. 的activity数
  8. inside-permissions -来自AndroidManifest
  9. 的内部权限数
  10. outside-permissions -来自AndroidManifest的外部权限数
  11. all-permissions -来自AndroidManifest的权限数
  12. 类{4,4.6,3.8,2.6。5、3.2、3.6、4.2、4.1}

最后一个类包含项目的Google Play评级。

所以每一行都是android项目。(当然,原来的*。Arff文件包含更多项目…)

我想用学习算法分析数据。预测值从1到9。我想确定,哪些预测因素最能影响Google Play的评级。

我该怎么做呢?最好的方法是什么?如果可以的话,我想请你给我解释一下。

提前感谢,彼得。

类别类型

首先,如果你想让你的输出是连续的,我建议你把你的class类型改为numeric。否则,我建议将类标签类型保持为nominal(就像您现在拥有的那样),但将您的评级更改为{1, 2, 3, 4, 5}

如果您更改为数字输出(例如,您可以给出4.5颗星的预测),那么您将需要使用能够处理数字类的分类器。

使用Weka

我建议看一下文档,学习更多关于使用Weka的知识,可能是通过一些教程。例如,在双击arff文件之后,您应该在Classify选项卡中完成大部分工作。选择分类器,然后选择Start

分类

回归

回归,特别是线性回归是很好的,因为它很容易解释,因为它只是为你的每个属性分配一个权重,并使用这些权重的乘法和加法来给出一个输出。

我使用了您的示例文件并使用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。但在这一点上,我认为只有这么少的数据点,你是过度拟合你的数据。

最近的邻居

使用k近邻可能是一个可行的方法,如果你有更多的数据(在Weka中它被称为KStar)。

决策树

DecisionStump算法输出该模型的平均绝对误差为0.3424,但同样可能是过拟合。

inside-permissions <= 1.5 : 2.6
inside-permissions > 1.5 : 4.090909090909091
inside-permissions is missing : 3.966666666666667

更多数据

正如您所看到的,考虑到您只有12个数据点,模型和错误率并不是那么高。要建立一个真正好的模型,你需要更多的数据。为了准确地了解模型的运行情况,您不仅需要有足够的数据进行训练,还需要有足够的数据作为单独的测试集,仅用于测试模型的性能。

最新更新