我在尝试用加速度计数据集训练随机森林。我计算了均值、标准差、轴之间的相关性、曲线下面积等特征。我是机器学习新手。
我想了解两件事:
1.如果我将一个人的数据集分为测试和训练集,然后运行随机森林预测,准确率很高(>90%)。然而,如果我用不同人的数据训练随机森林,然后进行预测,准确率很低(<50%)。这是为什么?如何调试这个问题?我不确定自己做错了什么。
- 在上面的例子中,要达到90%的准确率,需要多少特征才算“足够”?需要多少数据才算“足够”?
我可以提供更多细节。数据集来自10个人,包含大量标记的数据。我限制自己使用上述特征以避免大量计算。
回答:
-
你的分类器很可能过拟合了,当你只用一个人的数据进行训练时,它无法很好地泛化,它可能只是“记住”了带标签的数据集,而不是捕捉到分布的一般规律:每个特征如何与其他特征相关/它们如何影响结果等。也许你需要更多数据,或者更多特征。
-
这不是一个简单的问题,这是泛化问题,关于这个问题有许多理论研究,例如:Vapnik–Chervonenkis理论和Akaike信息准则。即使你了解这些理论,也无法准确回答这个问题。大多数此类理论的主要原则是:你拥有的数据越多,你尝试拟合的模型变化性越小,你要求的训练和测试准确率之间的差异越小——这些理论会给你的模型更高的评价。例如,如果你想最小化测试集和训练集上的准确率差异(以确保测试数据上的准确率不会崩溃),你需要增加数据量,提供更有意义的特征(相对于你的模型),或者使用变化性较小的模型进行拟合。如果你对理论方面的更详细解释感兴趣,你可以观看加州理工学院的讲座,从这个开始:CaltechX – CS1156x 从数据中学习。