我有一组二元向量,其中每个向量代表房子里的一天,由 48 个元素组成(每个元素代表一天中的 30 分钟)。每个元素可以为 1 表示房屋被占用,0 表示房屋未被占用。
我的任务是根据同一天的历史预测下一天(星期一从星期一的历史等)。到目前为止,我使用汉明距离来查找历史上最相似的 5 天,并从中计算入住概率作为这 5 个数字的平均值。当概率高于某个 X(在我的例子中为 0.4)时,我预测它会被占用。
但是肯定有一些更有效的方法可以做到这一点,任何算法都可以捕捉历史趋势?
最佳答案
您的方法听起来相当合理(称为 K 最近邻或 KNN),但我不确定您是否使用了正确的距离度量(今天到目前为止的汉明距离)。您的方法对一天的精确结构相当敏感,可能需要很长时间才能适应假期之类的事情,而一天的前几个小时可能过于敏感。
我会尝试对您的方法进行一种更改,即查看过去 24 小时而不是“今天到目前为止”,或者同时使用这两种方法并对结果进行平均。例如,以前的 24 小时方法会很快在休假时开始计算,但是如果用户碰巧在星期三或其他什么时候从未有过假期,那么到目前为止这一天的方法可能会错过假期。这与 rock paper scissors 的概念类似游戏,它会根据您最后四次 throw 来预测下一次 throw 。
我考虑的另一个改变是在汉明距离计算中使用权重。例如,通过 lambda^(-n)
权衡每一位匹配,其中 lambda
是您可以调整的参数(从 1.1 开始),而 n
表示该位表示过去的小时数。
各种分类算法中的任何一种,如支持向量机、逻辑回归、随机森林等,应该也能很好地工作。添加到特征向量的特征:
- 星期几
- 小时
- 这个小时的平均入住率
- 今天的平均入住率
- 本次平均入住率(天、小时)
- N 的各种值的过去占用 N-gram(即前 N 小时的位向量)
- 是假期吗?
- 日出后的小时数
最后,对于新用户,可能需要一段时间才能获得足够的训练数据,因此您可能希望拥有两个模型:一个基于所有用户的整体模型和一个单独的用户模型。然后你可以对两个模型的输出进行加权,随着用户模型的权重增加
关于algorithm - 从向量历史预测二进制占用向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16306464/