机器学习:根据独立变量

时间:2017-12-22 13:55:44

标签: python machine-learning statistics linear-regression correlation

我有一个数据集,其中包含如下所述的驾驶员旅行信息。我的目标是提出新里程或调整里程,其中考虑了驾驶员携带的负载和他/她驾驶的车辆。因为我们发现里程和负荷之间存在负相关关系。因此,您携带的负载越多,您可能获得的里程越少。此外,车辆类型也可能影响您的表现。在某种程度上,我们正在尝试将里程标准化,以便给予重负荷且因此而获得较少里程的驾驶员可能不会因里程而受到惩罚。 到目前为止,我已经使用线性回归和相关性来查看里程与驾驶员携带的负载之间的关系。相关系数为-.6。 因变量是每加仑英里数,自变量是负载和车辆。

Drv Miles per Gal   Load(lbs)   Vehicle
A        7           1500   2016 Tundra
B        8           1300   2016 Tundra
C        8           1400   2016 Tundra
D        9           1200   2016 Tundra
E       10           1000   2016 Tundra
F        6           1500   2017 F150
G        6           1300   2017 F150
H        7           1400   2017 F150
I        9           1300   2017 F150
J       10           1100   2017 F150

结果可能是这样的。

Drv Result-New Mileage
A   7.8
B   8.1
C   8.3
D   8.9
E   9.1
F   8.3
G   7.8
H   8
I   8.5
J   9

到目前为止,我对如何使用LR的斜率来标准化这些分数持怀疑态度。关于方法的任何其他反馈都会有所帮助。

我们的最终目标是通过考虑负载和车辆的影响,根据每加仑英里数对驾驶员进行排名。

由于 杰

2 个答案:

答案 0 :(得分:4)

可以有很多方法来“标准化分数”,而最好的方法将高度依赖于你想要达到的目标(这个问题并不清楚)。但是,话虽如此,我想提出一个简单实用的方法。

从乌托邦案例开始:假设您拥有大量数据,所有数据都是完全线性的 - 即,显示每种车辆类型的负载和MPG之间的整齐线性关系。在这种情况下,考虑到一些负载,您会对每种车型的预期MPG有一个强烈的预测。您可以将实际MPG与预期值进行比较,并根据比率“得分”,例如:实际MPG /预期MPG。

然而,实际上,数据永远不会完美。因此,您可以根据可用数据构建模型,获得预测,但不是使用点估计作为评分的基础,您可以使用置信区间。例如:给定模型和一些负载的预期MPG介于9-11 MPG之间,置信度为95%。在某些情况下(可获得更多数据,或者更加线性),置信区间可能很窄;在其他方面,它会更广泛。

然后你可以采取行动(例如你所说的“惩罚”),比如说,只有当MPG超出预期范围时。

编辑:插图(R中的代码):

#df contains the data above.

#generate a linear model (note that 'Vehicle' is not numerical)
md <- lm(data=df, Miles.per.Gal ~ Load + Vehicle)

#generate predictions based on the model; for this illustration, plotting only for 'Tundra' 
newx <- seq(min(df$Load), max(df$Load), length.out=100)
preds_df <- as.data.frame(predict(md, newdata = data.frame(Load=newx, model="Tundra"))

#plot
# fit + confidence
plt <- ggplot(data=preds_df) + geom_line(aes(x=x, y=fit)) + geom_ribbon(aes(x = x, ymin=lwr, ymax=upr), alpha=0.3) 
# points for illustration 
plt + geom_point(aes(x=1100, y=7.8), color="red", size=4) +geom_point(aes(x=1300, y=4), color="blue", size=4) + geom_point(aes(x=1400, y=9), color="green", size=4)   

enter image description here

因此根据这些数据,红色驾驶员的油耗(7.8 MPG,1100负载)明显比预期差,蓝色(9 MPG,1300负载)在预期范围内,绿色驱动器(9 MPG与1400 load)具有比预期更好的MPG。 当然,根据您拥有的数据量和适合度,您可以使用更精细的模型,但这个想法可以保持不变。

编辑2:修复了绿色和红色之间的混合(因为更高的MPG更好,而不是更糟)

此外,在关于“评分”驱动因素的评论中再提问,合理的方案可能是使用比率与预测点,或者 - 甚至可能更好 - 通过标准偏差将其标准化(即stdev中预期的差异)单位)。所以例如在上面的示例中,在负载1250线以上10%的驱动器将比具有负载1500的线路上方10%的驱动器具有更好的分数,因为其中的不确定性更大(因此10%更接近“预期”的范围“)。

答案 1 :(得分:1)

您正在寻找的术语是Decorrelation。你正试图去掉MPG和Load。这样做的一种方法是训练像您所做的线性模型,并从原始MPG值中减去该模型的预测,从而消除负载的影响(根据线性模型)。维基百科清单将其列为“线性预测编码器”。如果你想获得想象,如果你认为MPG和Load实际上没有线性关系,你可以尝试使用更复杂模型的相同想法。