我正在研究机器学习算法,以探讨哪类算法更适合解决此类问题。
问题:有船舶航行历史数据可用(可作为训练数据),基于这些数据,我们需要预测船舶的下一个目的港。我还不确定这类问题应该归为哪种类型,以及应该从哪些算法开始尝试(如贝叶斯网络、神经网络、决策树等)。
回答:
我强烈建议你使用隐马尔可夫模型或递归神经网络(如LSTM或GRU)。这些模型可能比那些设计用于处理静态(非序列)输入的算法更能捕捉到数据的序列规律。我建议首先尝试学习HMM,因为如果它能很好地捕捉到所需的分布,那么从数据中提取知识和见解会比从RNN中更容易。HMM的另一个优势是相对容易设计利用你对数据的先验知识的模型。如果HMM的结果不满意,那么可以尝试RNN。RNN在表达能力上更为强大,但它是经典的黑盒模型。很难检查你的网络真正学到了什么,并从数据中获得额外的见解。但如果你真正关心的是准确性,那么尝试RNN。它们确实很强大。
更新:由于可能有助于预测的额外信息,我还建议你考虑混合使用马尔可夫模型和贝叶斯推断。在这种情况下,你可以构建一个马尔可夫模型,其中每个状态代表一个港口,但下一个状态的概率分布不仅取决于你当前访问的港口,还取决于你拥有的额外信息。在这种情况下,工作流程如下:
- 首先,你尝试通过设置一组由参数
theta
参数化的分布族来建模状态转换与额外信息之间的依赖关系。 - 在建模阶段之后,你尝试通过贝叶斯推断和EM算法来推断参数的最佳值。
使用此类模型的例子可以在这里找到,但通常取得成功取决于对模型当前状态与额外信息之间依赖关系的良好建模。