广义线性回归----线性拟合

写这篇文章的主要目的就是建立一个会回拟合的思想;

其中目标值 y 是输入变量 x 的线性组合。 数学概念表示为:如果 y^


 是预测值,那么有:

回归的过程就是根据变量x值求的系数w的值,最终进行预测y^的值

我们使用python来实现

在整个模块中,定义向量 w作为 coef_ ,定义 w0作为 intercept_ 来存放参数

使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。

目标函数:

我们使用一个最简单的最小二乘法来进行回归

>>> from sklearn import linear_model

>>> reg = linear_model.LinearRegression()

>>> reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

>>> reg.coef_

array([0.5, 0.5])

>>> reg.intercept_

2.220446049250313e-16  ==0

所以预测函数为y=0.5(x1)+0.5(x2)+0   #括号里面是变量,编辑数学公式不太好打

岭回归:(ridge regression)

岭回归通过对系数的大小施加惩罚来解决 普通最小二乘法 的一些问题。 岭系数最小化的是带罚项的残差平方和。

目标函数:

其中, 是控制系数收缩量的复杂性参数: 的值越大,收缩量越大,模型对共线性的鲁棒性也更强。

使用python实现

>>> from sklearn import linear_model>>> reg = linear_model.Ridge (alpha = .5)

>>> reg.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1])

Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None, normalize=False, random_state=None, solver='auto', tol=0.001)

>>> reg.coef_

array([ 0.34545455,  0.34545455])

>>> reg.intercept_

0.13636...

alpha为0.5,我们可以验证一下alpha

 通过内置的关于的 Alpha 参数的交叉验证来实现岭回归。 该对象与 GridSearchCV 的使用方法相同,只是它默认为 Generalized Cross-Validation(广义交叉验证 GCV),这是一种有效的留一验证方法(LOO-CV):

>>> from sklearn import linear_model>>> reg = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])

>>> reg.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])

RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None, normalize=False)

>>> reg.alpha_                                      

0.1

从这两个例子我们可以看到,其实一些看似高大上的东西,根源还是我们学过的一些数学知识

而python中已经把这些方法都集成进来了,我们可以直接使用;

用一些拟合,回归我们可以进行做一些数据预测,和进行异常检测;

我们的输入矩阵x就是一些数据的特征值;有了这样的支撑之后,我们很多就是要考虑数据的预处理,分类,聚类等数据处理筛选了,从这里讲,我们在需要考虑的事情就是,数据从哪里来,把现实中的事物,现实中的问题,转化为数学中的数据,只要这部我们能做好,其一些数据公式算法就可以为我们所使用了;

现实中的问题,事物--》数学中的数据--》数据处理,筛选等处理--》数据定理算法的使用--》解决我们的问题

你可能感兴趣的:(广义线性回归----线性拟合)