线性回归模型

机器学习 回归问题(线性回归 岭回归 逐步回归)

╄→尐↘猪︶ㄣ 提交于 2019-12-21 19:56:51
一.线性回归 线性回归就是将输入项分别乘以一些常量,在将结果加起来得到输出。 假定输入数据存放在矩阵 x 中,而回归系数存放在向量 w 中。 那么预测结果可以通过Y=X的转置*W得出。所以我们求解线性回归模型的核心就在于求解w,如何求呢?首先,我们一定是希望预测出来的值和实际值之间的误差越小越好,所以我们评判w好坏,就可以采用实际值与真实值之差表示,但是这个差有正有负,为了避免正负相互抵消的情况,我们采用平方误差(也就是最小二乘法) 平方误差,我们也可以叫他损失函数。我们现在就是要以w为变量求解损失函数的最小值。 我们可以对w进行求导,令其为0,可得到我们所要求解w所需的计算公式。 局部加权线性回归 线性回归的一个问题是有可能出现欠拟合现象,因为它求的是具有小均方误差的无偏估 计。显而易见,如果模型欠拟合将不能取得好的预测效果。所以有些方法允许在估计中引入一 些偏差,从而降低预测的均方误差。 其中的一个方法是局部加权线性回归。在该算法中,我们给待预测点附近的每个点赋予一定的权重;在这个子集上基于 小均方差来进行普通的回归。 局部加权线性回归的基本思想:设计代价函数时,待预测点附近的点拥有更高的权重,权重随着距离的增大而缩减——这也就是名字中“局部”和“加权”的由来。 权重如何求取: 区别在于此时的代价函数中多了一个权重函数W,这个W要保证,越靠近待测点附近权值越大

02线性模型

走远了吗. 提交于 2019-12-17 04:30:48
线性模型 在机器学习的术语中,当预测值为连续值时,称为“回归问题”,离散值时为“分类问题”。 最小二乘法: 3.1线性回归 对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理, 例如:归一化等; 对于离散值的属性, 若属性值之间存在“序关系”,则可以将其转化为连续值,例如:身高属性分为“高”“中等”“矮”,可转化为数值:{1, 0.5, 0}。 若属性值之间不存在“序关系”,则通常将其转化为向量的形式,例如:性别属性分为“男”“女”,可转化为二维向量:{(1,0),(0,1)}。 当输入属性只有一个的时候,就是最简单的情形,也就是我们高中时最熟悉的“最小二乘法” 当输入属性有多个的时候,例如对于一个样本有d个属性{(x1,x2…xd),y},则y=wx+b需要写成: 对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化就可以写成下面的形式: 当一个矩阵的行列式不等于0时,我们才可能对其求逆,则可以求出其解;若为0,则需要使用其它的方法进行计算,书中提到了引入正则化,此处不进行深入。 有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。这时我们可以采用线性模型来逼近y的衍生物,例如lny

机器学习Day2——线性模型

吃可爱长大的小学妹 提交于 2019-12-15 14:04:04
基本形式 给定由d个属性描述的示例 x=(x1,x2,…,xd),其中xi是x在第i个属性上的取值,线性模型试图学的一个通过属性的线性组合来进行预测的函数,即 一般用向量形式写成 其中 w=(w1,w2,…,wd),w和b学得之后,模型就可以确定了。 模型求解 我们试图学得 这称为”多元线性回归“。 我们需要求解最优解,即f(xi)-yi的值趋向于0,利用最小二乘法 令 再把标记(预期结果)写成向量形式 则有 然而,在显示任务中往往不是满秩矩阵,此时可以解出多个w,他们都能使均方误差最小化,选择哪个解作为输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化项。 广义线性模型 考虑单调可微函数g(·),另 其中g(·)称为联系函数,对数线性回归是广义线性模型在g(·)=ln(·)时的特例。 对数几率回归(线性模型在分类任务中的变换) 在广义线性模型中,我们只需要找到一个单调可微函数,即可作为一般的线性模型来求解。 考虑二分类任务,其输出标记y∈{0,1},而线性回归模型产生的预测值是实值,于是,我们需要将z转换为0/1值。最理想的是”单位阶跃函数“ 但是这并不是一个连续的函数,不可微,于是我们可以找一个一定成都上近似单位阶跃函数的”替代函数“。对数几率函数正是这样一个常用的替代函数: 来源: CSDN 作者: haliaddel 链接: https://blog.csdn.net

sklearn机器学习算法--线性模型

喜欢而已 提交于 2019-12-10 17:11:54
线性模型 用于回归的线性模型 线性回归(普通最小二乘法) 岭回归 lasso 用于分类的线性模型 用于多分类的线性模型 1、线性回归 LinearRegression,模型简单,不同调节参数 #2、导入线性回归模型 from sklearn.linear_model import LinearRegression #3、实例化线性回归模型对象 lr = LinearRegression() #4、对训练集进行训练 lr.fit(X_train,y_train) #“斜率”参数(w,也叫作权重或系数)被保存在coef_ 属性中,而偏移或截距(b)被保存在intercept_ 属性中: print('lr.coef_:{}'.format(lr.coef_)) print('lr.intercept_:{}'.format(lr.intercept_)) View Code 2、岭回归 Ridge,调节参数alpha,默认使用L2正则化,alpha越大模型得到的系数就更接近于0,减少alpha可以让系数受到的约束减小。 #导入岭回归模型 from sklearn.linear_model import Ridge #实例化岭回归模型对象并对训练集进行训练 ridge = Ridge().fit(X_train,y_train) #查看模型在训练集和测试集上的精确度 print(

TensorFlow一元线性回归实践

倖福魔咒の 提交于 2019-12-09 18:32:42
import tensorflow as tf import numpy as np #定义超参数 learning_rate=0.01 max_train_steps=1000 log_step=17 #输入数据 train_X=np.array([[3.3],[4.4],[5.5],[6.71],[6.93],[4.168],[9.779],[6.182],[7.59],[2.167],[7.042],[10.791],[5.313],[7.997],[5.654],[9.27],[3.1]],dtype=np.float32) train_Y=np.array([[1.7],[2.76],[2.09],[3.19],[1.694],[1.573],[3.366],[2.596],[2.53],[1.221],[2.827],[3.465],[1.65],[2.904],[2.42],[2.94],[1.3]],dtype=np.float32) total_samples=train_X.shape[0] #构建模型 X=tf.placeholder(tf.float32,[None,1]) W=tf.Variable(tf.random_normal([1,1]),name="weight") b=tf.Variable(tf.zeros([1]),name="bias")

线性模型(1)

孤人 提交于 2019-12-06 03:02:42
1 import numpy as np 2 import matplotlib.pyplot as plt 3 from sklearn.linear_model import LinearRegression 4 from sklearn.datasets import make_regression 5 from sklearn.model_selection import train_test_split 6 7 X,y = make_regression(n_samples=100,n_features=2,n_informative=2,random_state=38) 8 X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=8) 9 lr = LinearRegression().fit(X_train,y_train) 10 11 print('lr.coef_:{}'.format(lr.coef_[:])) 12 print('lr.intercept_:{}'.format(lr.intercept_)) 13 14 # X,y = make_regression(n_samples=50,n_features=1,n_informative=1,noise=50,random

(一) Keras 一元线性回归

…衆ロ難τιáo~ 提交于 2019-12-06 02:17:23
https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553 笔记 环境为 anaconda + python3.7 Keras 线性回归 import keras from keras.layers import Dense from keras.models import Sequential import numpy as np import matplotlib.pyplot as plt #设置x的数据值 x_data=np.random.rand(100) np.random.rand(d0,d1,d2……dn) 返回服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1)。 np.random.randn()函数 可以返回服从标准正态分布的随机样本值。 #设置噪声 noise=np.random.normal(0,0.01,x_data.shape) numpy.random.normal(loc=0.0, scale=1.0, size=None) loc:均值 scale:float 标准差 size:长度。 #构造函数 y_data=x_data*0.1+0.2+noise #画出函数 plt.scatter(x_data,y_data)

Keras上实现简单线性回归模型

亡梦爱人 提交于 2019-12-06 02:15:36
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/marsjhao/article/details/67042392 神经网络可以用来模拟回归问题 (regression) ,实质上是单输入单输出神经网络模型,例如给下面一组数据,用一条线来对数据进行拟合,并可以预测新输入 x 的输出值。 一、详细解读 我们通过这个简单的例子来熟悉Keras构建神经网络的步骤: 1.导入模块并生成数据 首先导入本例子需要的模块,numpy、Matplotlib、和keras.models、keras.layers模块。Sequential是多个网络层的线性堆叠,可以通过向Sequential模型传递一个layer的list来构造该模型,也可以通过.add()方法一个个的将layer加入模型中。layers.Dense 意思是这个神经层是全连接层。 2.建立模型 然后用 Sequential 建立 model,再用 model.add 添加神经层,添加的是 Dense 全连接神经层。参数有两个,(注意此处Keras 2.0.2版本中有变更)一个是输入数据的维度,另一个units代表神经元数,即输出单元数。如果需要添加下一个神经层的时候,不用再定义输入的纬度

线性回归

雨燕双飞 提交于 2019-12-06 02:12:54
简单理解 就是用一条直线较为精确地描述数据之间的关系, 这样当出现新的数据的时候, 就能够预测出一个简单的值。 一些概念: 回归平均值(regression to the mean) 因变量(dependent variable): y=a 1 x 1 +a 2 x 2 +a 3 x 3 ......+a n x n 中的y, 即需要预测的值 自变量(independent variables): y=a 1 x 1 +a 2 x 2 +a 3 x 3 ......+a n x n 中的x 1 , x 2 ... x n , 即预测变量 广义线性回归(GLM, Generalized Linear Model), 如逻辑回归, 泊松分布等...... 最小二乘法 法国数学家,阿德里安-馬里·勒讓德(1752-1833)提出让总的误差的平方最小的 就是真值,这是基于,如果误差是随机的,应该围绕真值上下波动。 梯度下降算法 先确定向下一步的步伐大小, 即Learning Rate 任意给定一个初始值 确定一个向下的方向, 并向下走预先规定的步伐, 并更新当下降的高度小于某个定义的值, 则停止下降。 需要注意的是导数=0取得的解不一定是最优解, 很可能是某个局部最优解。 损失函数 (Cost Function) 损失函数分为经验风险损失函数和结构风险损失函数

A--多元线性回归的python实现

旧时模样 提交于 2019-12-05 05:30:55
In [1]: import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt In [2]: #创建一个矩阵 a = np.array([[1, 2], [3, 4]]) m = np.mat(a) m [2]: matrix([[1, 2], [3, 4]]) In [4]: #矩阵运算回顾 # 矩阵转秩 m.T # 矩阵乘法 m * m a * a # 矩阵⾏列式 np.linalg.det(m) # 求逆矩阵 m.I #转换成array m.A #降维成一维 m.fattlen Out[4]: matrix([[-2. , 1. ], [ 1.5, -0.5]]) 假设输入数据为DataFrame格式,最后一列为标签值,在此基础上编写线性回归自定义函数(最小二乘) In [ ]: #矩阵公式 w=(x.T * x).I * X.T * y In [53]: #根据最小二乘法推导得 w=(x.T * x).I * X.T * y 注:如果(x.T * X)不满足可逆性,那么最小二乘无解,另不满足凸函数,也无解 #又因为特征矩阵在存在多重共线性的情况下,特征矩阵不满足可逆性,所以在做回归之前,需要消除多重共线性 def standRegres