回归中的相关度和决定系数

栏目: Python · 发布时间: 7年前

内容简介:回归中的相关度和决定系数

起步

训练集中可能是有若干维度的特征。但有时并不是所有特征都是有用的,有的特征其实和结果并没有关系。因此需要一个能衡量自变量和因变量之间的相关度。

皮尔逊相关系数

皮尔逊相关系数( Pearson correlation coefficient ),是用于度量两个变量 X 和 Y 之间的相关(线性相关),其值介于 -1 与 1 之间。

在说皮尔逊相关系数之前,要先理解协方差( Covariance ) ,协方差是一个反映两个随机变量相关程度的指标,如果一个变量跟随着另一个变量同时变大或者变小,那么这两个变量的协方差就是正值,反之相反,公式如下:

Cov(X, Y) = \frac{\sum_{i=1}^n(X_i - \bar{X})(Y_i - \bar{Y})}{n - 1}

皮尔逊相关系数的公式如下:

r_{xy} = \frac{Cov(X, Y)}{\sqrt{Var(X)Var(Y)}}

Var表示方差,相关度越高,皮尔逊相关系数其值趋于 1 或 -1 (趋于1表示它们呈正相关, 趋于 -1 表示它们呈负相关);如果相关系数等于0,表明它们之间不存在线性相关关系。

回归中的相关度和决定系数

对应的 python 代码:

import math
import numpy as np

def computeCorrelation(x: list, y: list) -> float:
    x_mean = np.mean(x)
    y_mean = np.mean(y)
    SSR = 0
    var_x = 0  # x的方差
    var_y = 0  # y的方差
    for xi, yi in zip(x, y):
        diff_x = xi - x_mean
        diff_y = yi - y_mean
        SSR += diff_x * diff_y
        var_x += diff_x ** 2
        var_y += diff_y ** 2
    SST = math.sqrt(var_x * var_y)
    return  SSR / SST

决定系数

决定系数即 R 平方值,反应因变量的全部变异能通过回归关系被自变量解释的比例。如R平方为0.8,则表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量不变,则因变量的变异程度会减少 80%。 在简单线性回归中,绝对系数可以是 R^2 = r * r 。而更通用的是:

R^2 = \frac{SSR}{SST} = \frac{\sum(\hat{y_i} - \bar{y})^2}{\sum(y_i - \bar{y})^2}

SST 其实是两部分组成的,一部分是模型可预测的,一部分是变异的SSError无法用模型解释的。它们之间的计算公式是:

\begin{align*}
SS_T &= \sum_i(y_i - \bar{y})^2 \\
SS_R &= \sum_i(\hat{y_i} - \bar{y})^2 \\
SS_E &= \sum_i(y_i - \hat{y_i})^2 \\
\end{align*}

对应的 python 代码,因为需要创建模型来进行预测,这边使用 sklearn 中的线性回归模型:

from sklearn import linear_model

def polyfit(x, y):
    linear = linear_model.LinearRegression()
    linear.fit(x, y)
    y_hat = linear.predict(x)
    y_mean = np.mean(y)
    SSR = 0
    SST = 0
    for i in range(len(y)):
        SSR += (y_hat[i] - y_mean) ** 2
        SST += (y[i] - y_mean) ** 2
    return SSR / SST

测试:

train_x = [1, 3, 8, 7, 9]
train_y = [10, 12, 24, 21, 34]

print(computeCorrelation(train_x, train_y)) # output: 0.940310076545

train_x_2d = [[x] for x in train_x] # 通用的方式,训练集至少是二维的
print(polyfit(train_x_2d, train_y))  # output: 0.884183040052

修正决定系数

R 平方也有其局限性,随着自变量数目的增加,R 方是会增加的,这部分的定理是:

回归中的相关度和决定系数

证明过程:

回归中的相关度和决定系数

回归中的相关度和决定系数

调整后的R 方表示为:

\bar{R^2} = 1 - (1 - R^2)\frac{n-1}{n-p-1}

其中,n 表示样本大小,p 表示模型中解释变量的总数(不包括常数)。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Purely Functional Data Structures

Purely Functional Data Structures

Chris Okasaki / Cambridge University Press / 1999-6-13 / USD 49.99

Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Ha......一起来看看 《Purely Functional Data Structures》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具