我有一个理论问题。我有一个时间序列数据集(包含两个特征列:时间戳和温度),我想用它来进行二元分类问题,通过使用Python应用一些机器学习算法(KNN、随机森林、SVM和朴素贝叶斯)。我的问题是:
是否可以用时间戳特征来训练模型,或者这样做会不会引起一些学习问题,比如过拟合?
我想知道你们是否有任何理论上的建议,是否有效地使用或不使用时间戳来训练模型,或者在这种情况下最好的做法是什么。
回答:
时间戳是一个编码值,因此,对于大多数示例来说,该列通常有太多的变化,因为它通常是每秒收集的,这完全改变了编码值。
建议
将时间戳转换为UTC时间,并通过某个阈值(秒、分钟等)对其值进行离散化,可以尝试k-means 离散化,另一种不太理想的方法是,检查此列(时间戳特征)中的唯一值数量,如果它太小或太大,那么对于大多数算法来说,它将毫无用处,并且对于某些算法集合来说,可能会非常有害。
那些在预测任务中不贡献的值,可能会损害树形算法,并且可能会导致过拟合,即使使用随机森林也不会有太大帮助,这也损害了那些由无约束问题公式化的算法,如逻辑回归(没有正则化约束)。对于SVM这样的算法,尽管它是一个有约束的问题,使用无用特征可能不会改变其性能,但问题在于,数据可能不够可分,这可能导致模型极差(欠拟合)。