当所有自变量都是分类变量时,如何预测连续变量

数据挖掘 机器学习 回归 线性回归 分类数据
2022-02-18 02:19:59

我是数据科学和机器学习的新手。最近我收到了一个销售数据集,其中包含一个时尚品牌的每周销售额。它包含有关产品的信息,例如类别(T 恤、polo 衫、棉衬衫、三角裤、牛仔裤等)、性别(男性、女性、中性)、合作伙伴商店(多个零售店)、服装颜色(一些十六进制格式的 150 个颜色代码)、MRP、已售 MRP 和已售数量。数据为两年时间范围。

我添加了一个名为 discount 的新列,它源自已售出的 mrp/qty 和 mrp。

任何人都可以为上述类型的数据建议任何类型的预测建模方案吗?我已经完成了基于高性能合作伙伴商店的时间序列预测和聚类。我尝试了回归,但是当大多数自变量本质上是分类时,你如何执行回归?

任何帮助将非常感激。

4个回答

这取决于问题陈述,您是否对该数据集的来源有一些背景知识。如果没有,那么您可以在此处使用最常见的分析类型预测销售额。

回归并不仅仅依赖于输入值,它还考虑过去的输出值,所以不用担心输入值是否都是分类的。您还可以尝试使用梯度增强回归树来预测合作伙伴商店的销售额。

从预测模型开始,利用图表进行一些数据分析并在数据中找到趋势和模式也是一个好主意

一个好的起点是方差分析 (ANOVA) 模型。最简单的情况是响应/结果变量是连续的,并且您有 1 个分类预测变量。这称为单向方差分析。有了 2 个分类预测变量,您就有了 2 路方差分析,依此类推。对于不止一个预测变量,通常还包括预测变量之间的交互作用。当然,并不要求所有预测变量都是分类的。如果一个或多个是连续的,那么您将拥有协方差分析 (ANCOVA) 模型。ANOVA 和 ANCOVA 模型只是一般线性模型的特例(注意:不是广义线性模型)。换句话说,它只是线性回归。如果数据是分组的,例如对受试者进行重复测量,或者是嵌套的,例如班级中的学生或医院中的患者,那么组内将存在相关性,这可以通过线性混合模型中的随机效应来处理。

从逻辑回归、NaiveBayes 和 SVM 开始。即使在编码之后,线性回归也不能很好地处理分类数据。如前所述,您可以使用 Pd.dummy(One hot encoding)标签编码器对您的类别进行编码。删除一个热门列之一以遵循逻辑回归的假设。还标准化/标准化您的连续数据并处理您的 NA。

一旦您感到满意,然后转到 DNN 以获得更好的准确性。

我希望这有帮助。

原则上,您可以仅使用因子作为解释变量进行回归。考虑这个例子(在 R 中):

df = data.frame(c(100,200,500,100,300), c(1,0,1,0,1), c("True", "False", "False", "False", "True"), c("A", "B", "B", "A", "A"))
colnames(df) = c("sales", "v1", "v2", "v3")
head(df)

reg = lm(sales~as.factor(v1)+as.factor(v2)+as.factor(v3), data=df)
summary(reg)

数据如下:

  sales v1    v2 v3
1   100  1  True  A
2   200  0 False  B
3   500  1 False  B
4   100  0 False  A
5   300  1  True  A

结果将是:

Call:
lm(formula = sales ~ as.factor(v1) + as.factor(v2) + as.factor(v3), 
    data = df)

Residuals:
         1          2          3          4          5 
-1.000e+02  2.842e-14 -2.132e-14 -7.105e-15  1.000e+02 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)
(Intercept)          100.0      141.4   0.707    0.608
as.factor(v1)1       300.0      200.0   1.500    0.374
as.factor(v2)True   -200.0      264.6  -0.756    0.588
as.factor(v3)B       100.0      200.0   0.500    0.705

Residual standard error: 141.4 on 1 degrees of freedom
Multiple R-squared:  0.8214,    Adjusted R-squared:  0.2857 
F-statistic: 1.533 on 3 and 1 DF,  p-value: 0.5216

所以在这里你测量与截距的差异,以防万一v1=1或者v2=True或者v3=B.

具有很多(!)因素的模型已被用于预测,但它们通常是高维度的(列多于行)。在这种情况下,您可以使用Lasso来“缩小”对预测“无用”的参数(因此每个级别为一列的因子级别)。

当您有一个连续的左侧变量(回归)或当您有一个离散变量(Logit、Multinominal Logit)时,您可以这样做。

有关更多背景信息(包括 R 或Python示例) ,请参阅统计学习简介(第 6 章)。