如何解决时间序列和配置选择的线性回归
我有一个时间序列数据集,其中包含因变量和自变量的每日数据,其中一些是不同渠道中的展示次数。
- 从属变量是
dependent var
- 独立的是
impressions,channel,genre,duration,video_type
等。时间序列的总长度为 700 obj - 天。
实际上,因变量数据是按天有效的,但自变量(印象)数据有更详细的格式——小时和分钟(数据集长度超过 40k 行)。它们依赖于 day of the week
、hours
、formats
、genres
、channels
和 duration
。
一天中可能会有几十种不同类型的视频,具有不同的格式、时间和时长等。展示次数取决于它们。
但是,由于模型基于因变量的每日数据,因此整个数据集在数据透视表中聚合为每日数据并与 dependent var
合并。这样我就可以选择数据的下钻来构建模型。例如,流派、持续时间等的每日展示次数总和,然后将它们用作回归量。
选择多元线性回归 OLS 作为模型,因为可解释性和获取因素贡献的能力对我来说很重要:按天的印象数、按小时数的印象数、按类型的印象数、按视频时长的印象数
印象的详细数据集如下所示:
印象 | 天 | 小时 | 通道 | 流派 | 持续时间 | video_type |
---|---|---|---|---|---|---|
535 | 0 | 15 | channel_1 | genre_1 | 60 | type_1 |
684 | 4 | 16 | channel_2 | genre_2 | 120 | type_1 |
976 | 6 | 19 | channel_3 | genre_3 | 60 | type_3 |
234 | 3 | 20 | channel_4 | genre_4 | 80 | type_2 |
754 | 1 | 21 | channel_5 | genre_5 | 100 | type_3 |
我不确定如何最好地做到这一点。
- 如果我们根据流派和持续时间(
impressions_day_hour_genre_duration
因子)的每小时每天展示次数的详细每日数据构建模型,则因子数量是观察次数的 3 倍,并且得到1-5个非零值的稀疏矩阵。我敢肯定这不是最好的主意。
general_df_distil.pivot_table(
index=['data'],columns=['day','hour','channel','genre','duration','video_type'],values=['impression'],aggfunc=np.sum
)
- 通过将原始数据集转换为所需形式,构建具有固定效果的面板模型。按天、小时、类型和持续时间获取展示次数贡献。
- 构建多个多元线性回归 OLS 模型。 Model by
impressions_days
,model byimpressions_hours
,model byimpressions_genres
,etc. 同样,我怀疑这个想法的可靠性,因为相对贡献总和的值会有所不同所有模型(它们不应该不同是合乎逻辑的)
general_df_distil.pivot_table(index=['data'],columns=['genre'],aggfunc=np.sum)
- 以纯形式使用
impressions
不是一个好主意,并在模型中包含days
、hours
、genres
和duration
作为虚拟变量,因为天的虚拟变量可以解释为季节性成分,但我使用Fourier harmonics
作为季节性成分。 - 是否值得研究结构方程建模 (SEM)?
我还研究了 sklearn
决策树和 catboost
梯度提升作为模型 - 因为我可以获得特征的重要性。但我需要可解释性。
总结: 我需要建立一个基于每日流量数据的模型,在该模型中,我可以清楚地评估一周中的天数、小时数、类型、渠道对相关流量的影响。前提是在同一天可能会有不同频道/流派/小时的印象。
问题:有没有更正确、更优雅的方法来解决这个问题?为了针对我拥有的因素实施可解释的模型,哪些模型值得关注?
如果现在的描述不清楚,我会补充/更正
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。