Spi*_*uce 0 python classification machine-learning
大家好,我正在尝试用 Python 创建一个分类模型来预测共享单车站每小时的相对流入或流出过多的情况。
我的数据帧的前 5 行(总共超过 200,000 行)看起来像这样,我在“flux”列中分配了值 0、1、2 - 0 如果没有重大操作,1 如果流入太多,2 如果流出过多。
我正在考虑使用 station_name(超过 300 个车站)、一天中的小时和一周中的某一天作为预测变量来对“通量”进行分类。
我应该带什么去?朴素贝叶斯?克恩?随机森林?还有什么合适的吗?GDM?支持向量机?
仅供参考:始终为 0 的基线预测相当高,达到 92.8%。不幸的是,逻辑回归和决策树的准确性与此相当,并且并没有提高太多。KNN 需要永远......
那些对机器学习更有经验的人在处理这样的分类问题时有什么建议吗?
Azure 机器学习团队有一篇关于如何选择算法的文章,即使您不使用 AzureML,该文章也会有所帮助。摘自那篇文章:
您的训练数据有多大?如果您的训练集很小,并且您要训练监督分类器,那么机器学习理论表明您应该坚持使用高偏差/低方差的分类器,例如朴素贝叶斯。这些分类器比 kNN 等低偏差/高方差分类器具有优势,因为后者往往会过度拟合。但是,如果您有较大的训练集,则低偏差/高方差分类器更合适,因为它们具有较小的渐近误差 - 在这些情况下,高偏差分类器不足以提供准确的模型。理论和实证结果表明朴素贝叶斯在这种情况下表现良好。但请注意,拥有更好的数据和良好的特征通常比拥有更好的算法能给你带来更大的优势。此外,如果您有非常大的数据集,那么您使用的算法对分类性能的影响可能不会那么大,因此在这种情况下,最好根据可扩展性、速度或易用性等因素来选择算法。
您需要增量训练还是批量训练?如果您有大量数据,或者您的数据经常更新,您可能希望使用更新良好的贝叶斯算法。神经网络和支持向量机都需要以批处理模式处理训练数据。
您的数据是完全分类数据还是完全数字数据还是两者的混合?贝叶斯最适合分类/二项式数据。决策树无法预测数值。
您或您的观众是否需要了解分类器的工作原理? 贝叶斯或决策树更容易解释。了解或解释神经网络和支持向量机如何对数据进行分类要困难得多。
您的分类需要多快生成?当树很复杂时,决策树可能会很慢。另一方面,SVM 的分类速度更快,因为它们只需要确定数据位于“线”的哪一侧。
问题有多复杂或需要多复杂?神经网络和支持向量机可以处理复杂的非线性分类。
现在,关于您对“仅供参考:始终为 0 的基线预测相当高,达到 92.8%”的评论:存在异常检测算法 - 意味着分类高度不平衡,其中一个分类是很少发生的“异常”,例如信用卡欺诈检测(真正的欺诈希望只占总数据集的很小一部分)。在 Azure 机器学习中,我们使用一类支持向量机 (SVM) 和基于 PCA 的异常检测算法。希望有帮助!
归档时间: |
|
查看次数: |
2474 次 |
最近记录: |