准分类变量 - 有什么想法吗?

数据挖掘 时间序列 回归 分类数据
2021-09-26 00:51:40

假设我试图预测一个人的用电量,使用一天中的时间作为预测变量(00-23 小时),并进一步假设我有大量但有限的历史测量值。

现在,我正在尝试建立一个类似于

pwer.sed=α*Hr.F.d一个是的+β*eper一个re

问题:使用Hr.F.d一个是的由于许多原因,数值是一个非常糟糕的主意,23 和 0 实际上是非常接近的值这一事实是一个可以通过简单的转换来解决的问题 [1]。电力消耗通常是双模式的这一事实是另一个无法通过简单转换来解决的问题。

一个可行的解决方案是将一天中的时间视为分类变量。这样做可以解决问题,但它有一个明显的缺点,即相邻时间之间没有信息共享。

所以我要问的是:有人知道分类值的“软”版本吗?我建议一些定义很松散的东西:理想情况下,我会有一些参数 alpha 将回归减少到数值回归,其中α=1 并简化为分类回归,其中 α=0, 如果是其他数字,则表现“介于两者之间”。

现在我能想到的唯一答案是改变回归中的权重,使它们趋向于零,准分类值离期望值越远。当然还有其他方法?

[1] 引入小时变量作为两个新变量: Cs(一世e.F.d一个是的/24)s一世n(一世e.F.d一个是的/24)

3个回答

我建议您使用所谓的“模糊聚类”的想法,即您将一天中的每个小时值同时放入几个集群中。论文中的详细信息:http: //home.deib.polimi.it/matteucc/Clustering/tutorial_html/cmeans.html

这个想法很简单:

您决定要拥有多少个集群。例如,4(因此您将一天中的时间分为 4 个类别)。您不是每天只计算 1 个数字(定义集群成员),而是计算 4 个数字,代表 4 个集群中每个集群的成员程度。因此,例如,如果您的 4 个集群将包含时段 12 AM-6 AM、6 AM- 12 PM、12 PM - 6 PM 和 6 PM - 12 AM,那么您将使用 4 个数字的向量替换原始数据中的例如 4 AM 小时,第一个是最大的,第二个是较小的,第三个是最小的,依此类推。

然后您可以在模型中使用这 4 个数字来拟合回归线。

当然,如果您愿意,您可以使用 24 个集群,在这种情况下,您一天中的每一天都会与附近的时间有很高的“关系”,而与遥远的时间几乎是 0。

一些东西,

1)你确定hr_of_day和power_used之间的关系在统计上是否显着?

如果你还没有,我建议你做一个肯德尔的 tau 相关性。我喜欢kendall的tau,因为它处理非线性关系,可以认为是两者相关的概率。

2)另外,我会检查温度和时间是否相关。如果存在多重共线性,您可能需要重新检查应用的因素。

3)如果您知道独立拟合双峰分布,然后在已知的双峰分布(例如“beta 分布”)上运行一些 PP 图。提取人口潜在的高斯分布也很有趣——依次运行两个 OLS 模型。

最后,您最好从时间序列分析中工作,其中函数以小时表示。但是我不会添加您自己的因素,大多数回归分析会“告诉”您缺少某些东西。判断的方法是模型系数是否在统计上不显着或解释的方差量是否很小。但我重申,将小时强制为余弦或正弦函数意味着因变量和自变量之间的关系可能不是真实的。

似乎您可能想在将其投入 ML 模型之前返回并做一些(更多)尽职调查。

将小时转换为最合乎逻辑的方法是将时间转换为两个在汇中来回摆动的变量。想象一下 24 小时制时针末端的位置。x 位置随着 y 位置在水槽外来回摆动。对于 24 小时制,您可以使用X=s一世n(2p一世*Hr/24), 是的=Cs(2p一世*Hr/24).

您需要这两个变量,否则会丢失正确的时间运动。这是因为 sin 或 cos 的导数随时间变化,其中 (x,y) 位置在绕单位圆行进时平滑变化。

最后,考虑是否值得添加第三个特征来跟踪线性时间,可以从第一条记录的开始或 Unix 时间戳或类似的东西开始构建我的小时(或分钟或秒)。然后,这三个特征为时间的循环和线性进展提供了代理,例如,您可以提取循环现象,如人们运动中的睡眠周期,以及人口与时间的线性增长。