美文网首页
相关与回归的区别

相关与回归的区别

作者: Python_Camp | 来源:发表于2022-04-22 11:03 被阅读0次

    想象一下,您正在尝试训练一个机器学习模型来预测广告是否被特定的人点击。在接收到一个人的一些信息后,模型预测一个人不会点击广告。

    当接近机器学习时,在键盘上移动手指并开始编程之前,有很多主题需要理解。这些主题不仅与“可用”算法相关,而且与数学概念非常相关(但是,正如我所说,如果你不懂数学,你可以在需要时学习)。

    image.png

    在接近数据科学和机器学习时,有一些统计学主题需要理解;其中一些主题是相关性和回归。在本文中,我将通过示例解释这两个主题之间的区别,我们甚至会涵盖常青树:“相关性不是因果关系!”

    1.相关性
    相关性是一种统计量度,表示两个变量之间的线性关系。
    就是这样。但是,您知道,必须将定义付诸实践(同时,为了更好地理解我们正在研究的主题)。

    深化概念,我们可以说两个变量是相关的,如果对于第一个变量的每个值都对应于第二个变量的值,遵循一定的规律(或者如果你愿意,一定的路径);因此,如果两个变量高度相关,则路径将是线性的(一条线),因为相关性描述了变量之间的线性关系。

    这意味着相关性表示变量之间的关系,而不是因果关系!如果自变量值增加并且因值也增加,这并不意味着第一个变量导致第二个值的值增加!

    image.png

    让我们举个例子:
    夏天到了,很热;你不喜欢你所在城市的高温,所以你决定去山上。对你来说幸运的是,你到达山顶,测量温度,你发现它比你所在城市的温度低。你有点怀疑(同样,因为你对温度的下降不满意),你决定去更高的山,发现温度甚至低于前一座山的温度。

    您尝试不同高度的山脉,测量温度并绘制图表;你会发现随着山的高度增加,温度降低,你可以看到一个线性的趋势。这是什么意思?表示温度与高度有关;这并不意味着山的高度会导致温度下降。如果您使用热气球到达相同的高度,相同的纬度,您会测量多少温度?:)

    所以,既然在物理世界中我们需要定义来衡量事物,一个很好的问题是:我们如何衡量相关性?

    衡量相关性的典型方法是使用相关系数(也称为皮尔逊指数或线性相关指数)。我不想做数学,因为这篇文章的目的是提供信息和教育,但不是用公式:我只是想让你抓住并理解这些概念。

    相关系数利用了协方差的统计概念,这是一种定义两个变量如何一起变化的数值方法。

    撇开数学只谈概念,相关系数是一个在 -1 和 +1 之间变化的数值。如果相关系数为-1,则两个变量将具有完美的负线性相关;如果相关系数为+1,则两个变量将具有完美的正线性相关;如果相关系数为0,则说明两个变量之间不存在线性相关。

    我说我们会自己留下数学,但我没有说我们会留下代码,因为我们在数据科学领域。

    那么,我们如何计算 Python 中的相关系数呢?
    好吧,我们一般计算相关矩阵。
    假设我们有两个变量存储在名为
    “df”、“Variable 1”和“Variable 2”的数据框中
    我们可以在 seaborn 中绘制相关矩阵:

    import pandas as df
    import seaborn as sns
    #heat map for correlation coefficient
    sns.heatmap(df.corr(), annot=True, fmt="0.2")
    
    image.png

    上图显示我们考虑的两个变量高度相关,因为它们的相关系数为 0.96。然后,我们期望用图形描述它们与具有正斜率的线的关系。在这里,我们来到了

    下一个概念:回归
    但在讨论回归的概念之前,我想说最后一件事。在本文中,我强调了相关性与变量之间的线性关系有关的事实。让我们假设两个我们肯定知道不是线性相关的变量;一个比喻,例如:

    一个比喻。
    图片由作者提供。
    在这种情况下,如果我们计算相关因子,我们得到 0:

    import seaborn as sns
    import matplotlib.pyplot as plt
    #plotting the time series analysis with a red regression line
    sns.regplot(data=df, x="Variable_1", y="Variable_2", line_kws={"color": "red"})
    plt.xlabel('Variable 1', size=14)
    plt.ylabel('Variable 2', size=14)
    plt.title('(LINEAR) REGRESSION BETWEEN TWO VARIABLES')
    
    image.png

    非相关变量的相关矩阵。
    图片由作者提供。
    变量不相关的事实告诉我们,没有一条线可以描述变量之间的关系:这并不意味着变量根本不相关!这只是意味着这种关系不是线性的(可以是任何东西!)

    回归分析是一种用于分析某些数据的数学技术,由一个因变量和一个(或多个)自变量组成,旨在找到因变量和自变量之间的最终函数关系。

    回归分析的目的是在因变量和自变量之间找到一个估计值(一个很好的估计值!)。从数学上讲,回归的目的是找到最适合数据的曲线。

    当然,最适合数据的曲线可以是一条线;但它可以是任何曲线,取决于关系!
    所以,我们通常做的是计算相关系数,如果它的值接近 1,我们在研究回归时可以预期一条线;否则......我们必须尝试使用多项式回归(或其他东西,如指数或任何它)!
    事实上,如果我们计算之前看到的数据(相关系数为 0.96 的“Variable_1 和 Variable_2”)之间的回归线,我们会得到:

    image.png

    线性回归图。
    图片由作者提供。

    image.png

    正如预期的那样,由于相关矩阵为 0.96,我们得到一条斜率为正的线作为最适合数据的曲线。
    最后,我想说,有很多技术可以找到最适合数据的曲线;最常用的方法之一是“普通最小二乘法”,但是,正如我所说,我不会涉及数学:相信我,因为本文的目的是传播概念知识。

    # Titanic生还数据男女比较
    
    import seaborn as sns
    sns.set_theme(style="darkgrid")
    
    # Load the example Titanic dataset
    df = sns.load_dataset("titanic")
    
    # Make a custom palette with gendered colors
    pal = dict(male="#6495ED", female="#F08080")
    
    # Show the survival probability as a function of age and sex
    g = sns.lmplot(x="age", y="survived", col="sex", hue="sex", data=df,
                   palette=pal, y_jitter=.02, logistic=True, truncate=False)
    g.set(xlim=(0, 80), ylim=(-.05, 1.05))
    
    

    seaborn components used: set_theme(), load_dataset(), lmplot()

    相关文章

      网友评论

          本文标题:相关与回归的区别

          本文链接:https://www.haomeiwen.com/subject/ooggertx.html