我有一个变量,我想预测它的值,并且我只想使用一个变量作为预测器。例如,根据天气预测交通密度。
最初,我考虑使用自组织图(SOM),它执行无监督聚类 + 回归。然而,由于它具有降维的重要组成部分,我认为它更适合大量变量。
将它用于单个变量作为预测变量是否有意义?对于这个简单的案例,也许有更合适的技术:我在问题的标题中使用了“数据挖掘”而不是“机器学习”,因为我认为线性回归可能可以完成这项工作......
我有一个变量,我想预测它的值,并且我只想使用一个变量作为预测器。例如,根据天气预测交通密度。
最初,我考虑使用自组织图(SOM),它执行无监督聚类 + 回归。然而,由于它具有降维的重要组成部分,我认为它更适合大量变量。
将它用于单个变量作为预测变量是否有意义?对于这个简单的案例,也许有更合适的技术:我在问题的标题中使用了“数据挖掘”而不是“机器学习”,因为我认为线性回归可能可以完成这项工作......
机器学习的共同规则是先尝试简单的事情。对于预测连续变量,没有什么比简单的线性回归更基本的了。名称中的“简单”意味着只使用了一个预测变量(当然是 + 截距):
y = b0 + x*b1
其中b0
是截距,b1
是斜率。例如,您可能希望根据温度预测公园中柠檬水的消耗量:
cons = b0 + temp * b1
温度是定义明确的连续变量。但如果我们谈论一些更抽象的东西,比如“天气”,那么就更难理解我们如何测量和编码它了。如果我们说天气取值{terrible, bad, normal, good, excellent}
并分配从 -2 到 +2 的数字,那没关系(这意味着“优秀”天气是“好”的两倍)。但是如果天气是由文字给出的{shiny, rainy, cool, ...}
呢?我们无法对这些变量下达命令。我们称这些变量为分类变量。由于不同类别之间没有自然顺序,我们不能将它们编码为单个数值变量(线性回归只需要数字),但我们可以使用所谓的虚拟编码:weather
[weather_shiny, weather_rainy, weather_cool]
,其中只有一个可以取值 1,其他应该取 0。事实上,由于共线性,我们将不得不删除一个变量。因此,根据天气预测流量的模型可能如下所示:
traffic = b0 + weather_shiny * b1 + weather_rainy * b2 # weather_cool dropped
其中一个b1
或b2
为1,或两者均为0。
请注意,您还可能遇到预测变量和预测变量之间的非线性依赖关系(您可以通过绘制(x,y)
对轻松检查它)。在不拒绝线性模型的情况下处理它的最简单方法是使用多项式特征 - 只需将特征的多项式添加为新特征。例如,对于温度示例(对于虚拟变量,它没有意义,原因1^n
并且0^n
对于 any 来说仍然是 1 和 0 n
):
traffic = b0 + temp * b1 + temp^2 * b2 [+ temp^3 * b3 + ...]
与论坛本身相比,我更擅长数据 ETL 和组合/聚合。我经常处理天气数据。我想就在分析中使用天气数据提出一些建议。
至于天气类型(晴天、下雨、严重雷暴),它们要么已经反映在测量中(例如,晴天、下雨)并且是多余的,要么它们是恶劣的天气条件并且不一定反映在测量中。
对于恶劣的天气类型,我会有单独的公式。
对于测量,北美气象站报告有 7 个标准的每日测量值。
温度 最小/最大
降水量
平均风速
平均云量(百分比)
总阳光(分钟)
降雪
雪深
并非所有站都报告所有 7 次每日测量值。有些只报告温度和降水。因此,当所有七种测量值都可用时,您可能需要一个温度/降水公式和一个扩展公式。
下面的两个链接是 NOAA/NWS 数据集中使用的天气术语:
本文档是年度总结的词汇:
http://www1.ncdc.noaa.gov/pub/data/cdo/documentation/ANNUAL_documentation.pdf
本文档是日常总结的词汇
http://www1.ncdc.noaa.gov/pub/data/cdo/documentation/GHCND_documentation.pdf