广义线性模型2

1.1.2 Ridge Regression(岭回归)

岭回归和普通最小二乘法回归的一个重要差别是前者对系数模的平方进行了限制。例如以下所看到的:

In [1]: from sklearn import linear_model

In [2]: clf = linear_model.R
linear_model.RandomizedLasso
linear_model.RandomizedLogisticRegression
linear_model.Ridge
linear_model.RidgeCV
linear_model.RidgeClassifier
linear_model.RidgeClassifierCV

In [2]: clf = linear_model.Ridge(alpha = .5)

In [3]: clf.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
Out[3]:
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
   normalize=False, solver=‘auto‘, tol=0.001)

In [4]: clf.coef_
Out[4]: array([ 0.34545455,  0.34545455])

In [5]: clf.intercept_
Out[5]: 0.13636363636363641

解析:

(1)sklearn.linear_model.Ridge类构造方法

class sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False, copy_X=True, max_iter=None,

tol=0.001, solver=‘auto‘)

(2)sklearn.linear_model.Ridge类实例的属性和方法

(3)Ridge Regression(岭回归)

岭回归分析是一种专用于共线性数据分析的有偏预计回归方法,实质上是一种改良的最小二乘预计法,通过放弃最小

二乘法的无偏性。以损失部分信息、减少精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的

耐受性远远强于最小二乘法。

岭回归分析主要解决两类问题:数据点少于变量个数;变量间存在共线性。

Examples: Plot Ridge coefficients as a function of the regularization

print(__doc__)

import numpy as np
import pylab as pl
from sklearn import linear_model

# X is the 10x10 Hilbert matrix
X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)

###############################################################################
# Compute paths

n_alphas = 200
alphas = np.logspace(-10, -2, n_alphas)
clf = linear_model.Ridge(fit_intercept=False)

coefs = []
for a in alphas:
    clf.set_params(alpha=a)
    clf.fit(X, y)
    coefs.append(clf.coef_)

###############################################################################
# Display results

ax = pl.gca()
ax.set_color_cycle([‘b‘, ‘r‘, ‘g‘, ‘c‘, ‘k‘, ‘y‘, ‘m‘])

ax.plot(alphas, coefs)
ax.set_xscale(‘log‘)
ax.set_xlim(ax.get_xlim()[::-1])  # reverse axis
pl.xlabel(‘alpha‘)
pl.ylabel(‘weights‘)
pl.title(‘Ridge coefficients as a function of the regularization‘)
pl.axis(‘tight‘)
pl.show()

图形输出。例如以下所看到的:

解析:

(1)希尔伯特矩阵

在线性代数中,希尔伯特矩阵是一种系数都是单位分数的方块矩阵。详细来说一个希尔伯特矩阵H的第i横行第j纵列的

系数是:

举例来说。的希尔伯特矩阵就是:

希尔伯特矩阵的系数也能够看作是下面积分:

也就是当向量是关于变量x 的各阶幂时关于积分范数的格拉姆矩阵。

希尔伯特矩阵是低条件矩阵的典型样例。

与希尔伯特矩阵的数值计算是十分困难的。

举例来说,当范数为矩阵范数

时希尔伯特矩阵的条件数大约是,远大于1。

(2)np.arange()方法

In [31]: 1. / (np.arange(1, 11))
Out[31]:
array([ 1.        ,  0.5       ,  0.33333333,  0.25      ,  0.2       ,
        0.16666667,  0.14285714,  0.125     ,  0.11111111,  0.1       ])

In [32]: (1. / (np.arange(1, 11))).shape
Out[32]: (10,)

(3)np.newaxis属性

In [5]: np.arange(0, 10)
Out[5]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [6]: type(np.arange(0, 10))
Out[6]: numpy.ndarray

In [7]: np.arange(0, 10).shape
Out[7]: (10,)

In [8]: np.arange(0, 10)[:, np.newaxis]
Out[8]:
array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])

In [9]: np.arange(0, 10)[:, np.newaxis].shape
Out[9]: (10, 1)

(4)广播原理

In [25]: x = np.arange(0, 5)

In [26]: x[:, np.newaxis]
Out[26]:
array([[0],
       [1],
       [2],
       [3],
       [4]])

In [27]: x[np.newaxis, :]
Out[27]: array([[0, 1, 2, 3, 4]])

In [28]: x[:, np.newaxis] + x[np.newaxis, :]
Out[28]:
array([[0, 1, 2, 3, 4],
       [1, 2, 3, 4, 5],
       [2, 3, 4, 5, 6],
       [3, 4, 5, 6, 7],
       [4, 5, 6, 7, 8]])

(5)10阶希尔伯特矩阵X

In [33]: X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])

In [34]: X
Out[34]:
array([[ 1.        ,  0.5       ,  0.33333333,  0.25      ,  0.2       ,
         0.16666667,  0.14285714,  0.125     ,  0.11111111,  0.1       ],
       [ 0.5       ,  0.33333333,  0.25      ,  0.2       ,  0.16666667,
         0.14285714,  0.125     ,  0.11111111,  0.1       ,  0.09090909],
       [ 0.33333333,  0.25      ,  0.2       ,  0.16666667,  0.14285714,
         0.125     ,  0.11111111,  0.1       ,  0.09090909,  0.08333333],
       [ 0.25      ,  0.2       ,  0.16666667,  0.14285714,  0.125     ,
         0.11111111,  0.1       ,  0.09090909,  0.08333333,  0.07692308],
       [ 0.2       ,  0.16666667,  0.14285714,  0.125     ,  0.11111111,
         0.1       ,  0.09090909,  0.08333333,  0.07692308,  0.07142857],
       [ 0.16666667,  0.14285714,  0.125     ,  0.11111111,  0.1       ,
         0.09090909,  0.08333333,  0.07692308,  0.07142857,  0.06666667],
       [ 0.14285714,  0.125     ,  0.11111111,  0.1       ,  0.09090909,
         0.08333333,  0.07692308,  0.07142857,  0.06666667,  0.0625    ],
       [ 0.125     ,  0.11111111,  0.1       ,  0.09090909,  0.08333333,
         0.07692308,  0.07142857,  0.06666667,  0.0625    ,  0.05882353],
       [ 0.11111111,  0.1       ,  0.09090909,  0.08333333,  0.07692308,
         0.07142857,  0.06666667,  0.0625    ,  0.05882353,  0.05555556],
       [ 0.1       ,  0.09090909,  0.08333333,  0.07692308,  0.07142857,
         0.06666667,  0.0625    ,  0.05882353,  0.05555556,  0.05263158]])

(6)np.ones()方法

In [35]: y = np.ones(10)

In [36]: y
Out[36]: array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])

In [37]: y.shape
Out[37]: (10,)

(7)numpy.logspace()方法

numpy.logspace(start, stop, num=50, endpoint=True, base=10.0)

说明:Return numbers spaced evenly on a log scale. In linear space, the sequence starts at base ** start (base to

the power of start) and ends with base ** stop (see endpoint below).

In [38]: n_alphas = 200

In [39]: alphas = np.logspace(-10, -2, n_alphas)

In [40]: alphas
Out[40]:
array([  1.00000000e-10,   1.09698580e-10,   1.20337784e-10,
         1.32008840e-10,   1.44811823e-10,   1.58856513e-10,
         1.74263339e-10,   1.91164408e-10,   2.09704640e-10,
         ...,
         5.23109931e-03,   5.73844165e-03,   6.29498899e-03,
         6.90551352e-03,   7.57525026e-03,   8.30994195e-03,
         9.11588830e-03,   1.00000000e-02])

In [41]: alphas.shape
Out[41]: (200,)

In [42]: 1.00000000e-10
Out[42]: 1e-10

(8)set_params(**params)方法

(9)matplotlib.pyplot.gca(**kwargs)方法

Return the current axis instance. This can be used to control axis properties either using set or the Axes methods,

for example, setting the x axis range.

參考文献:

[1] 岭回归:http://baike.baidu.com/link?

url=S1DwT9XFOthlB5hjGP6Ramxt-fvtCJ-RUXYVSw-z9t7-hZIojL7eroUQwKaJd5KE9-jVEQeRtxZeuUz59SBE6q

[2] 正则化、归一化含义解析: http://sobuhu.com/ml/2012/12/29/normalization-regularization.html

[3] 希尔伯特矩阵: http://zh.wikipedia.org/zh-cn/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E7%9F%A9%E9%98%B5

[4] 岭回归分析总结: http://download.csdn.net/detail/shengshengwang/7225251

时间: 2024-09-28 21:48:59

广义线性模型2的相关文章

从指数分布族去推导出广义线性模型

指数分布族的定义: 若一类概率分布可以写成如下形式,那么它就属于指数分布族: η - 自然参数,通常是一个实数 T(y) – 充分统计量,通常,T(y)=y,实际上是一个概率分布的充分统计量(统计学知识) 对于给定的a,b,T三个函数,上式定义了一个以η为参数的概率分布集合,即改变η可以得到不同的概率分布.极限定理得) 记录一下几个指数分布族以及它们的特征: 正态分布(高斯分布)--总体噪音(由中心极限定理得) 伯努利分布--逻辑回归(对01问题建模) 多项式分布--K种结果的事情进行建模 泊松

1.1.广义线性模型

下面介绍的是一组用于回归的方法,这些方法的目标值是输入变量的线性组合.用作为预测值. 贯穿模块,我们指定向量为coef_(系数),为intercept_(截距). 要使用广义线性模型实现分类,详见Logistic回归. 1.1.1.常规最小二乘法 线性回归拟合以系数最小化可观测到的数据的响应与线性模型预测的响应的残差和的平方,用数学公式表示即: LinearRegression 对数组X,y使用fit方法,并将结果的系数存放在coef_中: >>> from sklearn import

斯坦福《机器学习》Lesson4感想-------2、广义线性模型

在前面几篇中分类问题和回归问题里涉及到的伯努利分布和高斯分布都是广义线性模型(Generative Linear Models.GLMs)的特例.下面将详细介绍广义线性模型. 1.指数族 我们可以将一些分布总结到一个指数族中.指数族可表示为: η是指naturalparameter/canonical parameter,T (y)是指sufficientstatistic, a(η)是指logpartition function.T.a和b的选择决定了分布族,η的改变会得到这个分布族里的不同分

R语言实战(八)广义线性模型

本文对应<R语言实战>第13章:广义线性模型 广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析. 两种流行模型:Logistic回归(因变量为类别型)和泊松回归(因变量为计数型) glm()函数的参数 分布族 默认的连接函数 binomial (link = "logit") gaussian (link = "identity") gamma (link = "inverse") inverse.gaussian (lin

指数分布族与广义线性模型

整理一下之前所学过的关于回归问题的思路: 问题引入:房屋估价,给定新的房屋信息,预测出相应的房屋价格: 学习过程:构建模型h(θ): 线性回归:最小二乘法.梯度下降法.线性模型的概率解释: 局部加权回归:带权重的线性回归.权值的钟形函数: 逻辑回归:分类方法.梯度上升法.牛顿法.引出感知机学习算法: 广义线性模型:指数分布族.给定概率分布推导出线性模型. 这一节所讨论的重点就是最后的这一条内容,回顾讨论过的线性回归与逻辑回归的假设可知: 在线性回归模型的概率解释中假设: 在逻辑回归模型的推导中假

Stanford大学机器学习公开课(四):牛顿法、指数分布族、广义线性模型

(一)牛顿法解最大似然估计 牛顿方法(Newton's Method)与梯度下降(Gradient Descent)方法的功能一样,都是对解空间进行搜索的方法.其基本思想如下: 对于一个函数f(x),如果我们要求函数值为0时的x,如图所示: 我们先随机选一个点,然后求出该点的切线,即导数,延长它使之与x轴相交,以相交时的x的值作为下一次迭代的值. 更新规则为: 那么如何将牛顿方法应用到机器学习问题求解中呢? 对于机器学习问题,我们优化的目标函数为极大似然估计L,当极大似然估计函数取得最大时,其导

广义线性模型与Logistic回归

一.广义线性模型 广义线性模型应满足三个假设: 第一个假设为给定X和参数theta,Y的分布服从某一指数函数族的分布. 第二个假设为给定了X,目标是输出 X条件下T(y)的均值,这个T(y)一般等于y,也有不等的情况, 第三个假设是对假设一种的变量eta做出定义. 二.指数函数族 前面提到了指数函数族,这里给出定义,满足以下形式的函数构成了指数函数族: 其中a,b,T都是函数. 三.Logistic 函数的导出 Logistic回归假设P(y|x)满足伯努利Bernouli分布即 我们的目标是在

数学之路-数据分析进阶-广义线性模型

在统计学上, 广义线性模型 (Generalized linear model) 是一种受到广泛应用的线性回归模式.此模式假设实验者所量测的随机变量的分布函数与实验中系统性效应(即非随机的效应)可经由一链结函数(link function)建立起可资解释其相关性的函数. 广义线性模型(generalized linear model, GLM)是简单最小二乘回归(OLS)的扩展,在广义线性模式中,假设每个资料的观测值来自某个指数族分布. 该分布的平均数  可由与该点独立的X解释: 其中为的期望值

线性混合模型(5)——广义线性模型

我们知道,混合线性模型是一般线性模型的扩展,而广义线性模型在混合线性模型的基础上又做了进一步扩展,使得线性模型的使用范围更加广阔.每一次的扩展,实际上都是模型适用范围的扩展,一般线性模型要求观测值之间相互独立.残差(因变量)服从正态分布.残差(因变量)方差齐性,而混合线性模型取消了观测值之间相互独立和残差(因变量)方差齐性的要求,接下来广义线性模型又取消了对残差(因变量)服从正态分布的要求.残差不一定要服从正态分布,可以服从二项.泊松.负二项.正态.伽马.逆高斯等分布,这些分布被统称为指数分布族

机器学习 —— 基础整理(五):线性回归;二项Logistic回归;Softmax回归;广义线性模型

本文简单整理了以下内容: (一)线性回归 (二)二分类:二项Logistic回归 (三)多分类:Softmax回归 (四)广义线性模型 二项Logistic回归是我去年入门机器学习时学的第一个模型,我觉得这个模型很适合用来入门(但是必须注意这个模型有很多很多很多很多可以展开的地方).比较有意思的是那时候还不会矩阵微积分,推导梯度时还是把矩阵全都展开求的(牛顿法要用的二阶梯度也是)... 下面的文字中,"Logistic回归"都表示用于二分类的二项Logistic回归. 首先约定一下记号