algorithm - 什么机器学习算法合适?

标签 algorithm machine-learning

我正在研究一个预测器,用于了解最有可能的葡萄收获期,具体取决于天气和葡萄的特性,即糖度、pH 值、酸度。我有两个数据集,我正在考虑如何将它们合并在一起:一个是2003-2013年期间一些意大利葡萄园的采前分析数据,另一个是那十年的天气。我想做的是从我的样本中了解何时收获,给出最佳糖度、pH 值和酸度的范围,并给出天气预报。 我认为某些强化学习方法可以发挥作用。由于采前分析在葡萄成熟期间进行了大约5次,我认为这些可能是我进入的状态,而天气条件可能是从一个状态到另一个状态的“概率”。 然而我不确定哪种算法是最好的,因为每个状态和每个“概率”都取决于几个变量。有人告诉我隐马尔可夫模型可以工作,但在我看来,我的问题并不完全适合该模型。 您有什么建议吗?提前谢谢

最佳答案

这与实际算法无关,但您将在这里遇到的问题是天气非常本地化。不管你信不信,一个葡萄园的天气可能与距它仅一英里的另一个葡萄园完全不同。如果你在每个葡萄园都安装雨量计,你就会发现这一点。为了获得真正好的结果,您需要在每个葡萄园都有一个迷你气象站。如果没有这一点,您最好的选择是仅使用天气测量附近的葡萄园。例如,如果您的数据来自机场,则仅使用机场旁边的葡萄园。

当你可以控制 Action 时,强化学习是合适的。就像猴子按按钮一样。你按下一个按钮就会感到震惊,所以你不会再按下那个按钮。这里你有一个被动的数据集,无法进行实验 Action ,因此强化学习不适用。

这里有一组复杂的不受控制的输入、天气数据、受控输入(收获时间)和几个输出参数、糖等。根据这些数据,您想要预测 future 使用的收获时间,未知的天气模式。

一般来说,你正在做的是 sensitivity analysis :试图找出你的因素如何影响所发生的结果。棘手的部分是,结果可能是由某种不明显的模式驱动的。例如,可能出现 3 周的干旱,然后是 2 周的大雨,这意味着最好的收成将是 65 天后,或类似的情况。

因此,您要做的就是对数据进行特征化,以可能的方式表征它,然后进行敏感性分析。如果分析具有很强的相关性,那么您就找到了解决方案。如果没有,那么您必须找到一种不同的方法来表征数据。例如,您的特征可能是降雨量超过 2 英寸的天数,或者可能是无雨的最多天数,或者可能是晴朗阳光的总天数。可能多个功能可以组合起来形成一个解决方案。这些选项仅受您的想象力的限制。

当然,正如我上面所说,美中不足的是,您的天气数据只能粗略地近似特定葡萄园的真实天气,因此数据中会有噪声,可能与从而无法获得好的结果。

为什么你实际上不太关心天气

回到数据上来,拥有不可靠的天气信息实际上并不是问题,因为你实际上并不太关心天气。原因有两个。首先,你要回答的问题不是何时收获葡萄,而是是否等待收获。酿酒师总是可以测量葡萄当前的糖分。因此,他只需决定,“我应该现在收获含糖量 X% 的葡萄,还是应该等待,稍后可能会获得更好的含糖量 Z%?要回答这个问题,您需要的真正数据不是天气,而是随着时间的推移获取的一系列糖/酸度读数。您想要预测的是,在给定的情况下,葡萄是否会变得更好或是否会变得更糟。

其次,葡萄藤有它们喜欢的最佳水分含量。如果藤蔓太干,那就不好了,如果太湿了,那就不好了。你无法根据天气预测葡萄藤的湿润程度。有些土壤能很好地保持水分,有些则为沙质土壤。沙质葡萄园比粘土葡萄园需要更多的降雨才能达到相同的湿度水平。此外, Wine 商可以给他的葡萄园浇水,从而完全消除降雨模式。因此,天气几乎不是一个因素。

关于algorithm - 什么机器学习算法合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732223/

相关文章:

java - 假设整数是从数据流中读取的。以有效的方式找到读取的元素的中位数

c - 算法图深度优先搜索

algorithm - 比较给定步骤的两种算法的复杂性

machine-learning - Keras分类模型

machine-learning - Scikit Learn 的 Keras 包装器 - AUC 评分器不起作用

machine-learning - 有没有使用 MxNet 构建卷积自动编码器的玩具示例?

python-3.x - Keras 期望同时出现二维数组和 (1,) 形状

c - 最优二叉搜索树错误输出

algorithm - 二叉搜索树的最小高度插入顺序

python - 在加载 Keras 保存模型时,是否有人得到 "AttributeError: ' str' 对象没有属性 'decode'"