线性模型(Linear Model)

对于给定样本x⃗ \mathbf{\vec{x}},假定其有n维特征,则,x⃗ =(x1,x2,x3,…,xn)T\mathbf{\vec{x}}=(x_1, x_2, x_3, \dotsc, x_n)^{\mathsf{T}}。线性模型可以表示为:

f^(x⃗ )=w⃗ Tx⃗ +b

\hat{f}(\mathbf{\vec{x}})=\mathbf{\vec{w}^{\mathsf{T}}\vec{x}}+b
其中 w⃗ =(w1,w2,w3,…,wn)T\vec{w}=(w_1, w_2, w_3, \dotsc, w_n)^{\mathsf{T}}是权重参数,表征了 x⃗ \vec{x}中每个维度特征的重要性; bb是偏置项;f^(x⃗ )\hat{f}(\mathbf{\vec{x}})是预测值。

线性回归就是根据给定数据集 {(x1→,y1),(x2→,y2),…,(xn→,yn)}\lbrace\mathsf{(\vec{x_1},y_1),(\vec{x_2},y_2),\dotsc,(\vec{x_n}},y_n)\rbrace,来确定权重系数 w⃗ \mathbf{\vec{w}}和偏置项 bb。其中,(y1,y2,…,yn)(y_1,y_2,\dotsc,y_n)是每个样本对应的真实值。通过最小化真实值和预测值之间的误差来确定最优的权重系数和偏置项。可以构造损失函数,通过最小化损失函数来求取权重系数和偏置项,如常用的均方误差(mean squared error)损失函数:

MSE=1n∑i=1n(yi^−yi)2

MSE=\frac{1}{n}\displaystyle\sum_{i=1}^{n}(\hat{y_i}-y_i)^2
可以用梯度下降法来求解上述最优化问题(注意:此处不是随机梯度下降法,因为均方误差损失函数是凸函数)。在求解最优化问题的时候要注意特征归一化,这在许多机器学习模型中都需要注意的问题。

特征归一化的优点
1. 归一化后加快了梯度下降求最优解的速度。例如对于不在同一尺度的两个特征,在进行优化时梯度等高线是椭圆形的,导致在梯度下降时,优化的方向沿着垂直等高线的方向走之字路线,也就是说变量的权重在优化的过程会出现震荡,而归一化之后梯度等高线是圆形,梯度的方向指向圆心,迭代就会很快。

2. 归一化有可能提高精度。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,如果这时值域范围小的特征更重要,就会导致精度损失。归一化可以让每个维度的特征对结果做出的贡献相同。

特征归一化的方法
1. 线性归一化;
2. 标准差归一化;
3. 非线性归一化。

在求解线性回归模型时,特征组合问题也是需要注意的问题,比如房子的长度和宽度作为两个特征参与模型的构造,不如把其乘积面积作为一个特征来进行求解,这样在特征选择上就起到了降维的作用。

广义线性模型(Generalized Linear Model)

对于可导函数hh,令h(y)=w⃗ Tx⃗ +bh(y)=\mathbf{\vec{w}^{\mathsf{T}}\vec{x}}+b,就得到了广义线性模型。
例如,对数线性回归:

ln(y)=w⃗ Tx⃗ +b

ln(y)=\mathbf{\vec{w}^{\mathsf{T}}\vec{x}}+b
scikit-learn实现线性回归:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, Lasso, Ridge, ElasticNetdata = np.loadtxt('LinearRegressionData.txt', delimiter=',')
X = data[:,0]
X = X.reshape(-1,1)
y = data[:,1]#scikit-learn中线性回归有多种正则化方法,下面的LinearRegression可换成Lasso, Ridge, ElasticNet
regr = LinearRegression()
regr.fit(X,y)#显示结果
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(0,25)
ax.set_ylim(-5,30)
ax.set_title('Linear Regression',fontsize=14,fontweight='bold')
ax.set_xlabel('X',fontsize=14,fontweight='bold')
ax.set_ylabel('y',fontsize=14,fontweight='bold')
ax.annotate('fitted regression line', xy=(16, 16*regr.coef_+regr.intercept_), xytext=(13,1.5), arrowprops=dict(facecolor='black',shrink=0.03,width=1,headwidth=8,headlength=10),horizontalalignment='left',verticalalignment='top',fontsize=12)
ax.grid()
plt.scatter(X,y,color='lime',marker='*',linewidth=2)
fit_x = np.linspace(0,25)
fit_y = regr.coef_ * fit_x + regr.intercept_
plt.plot(fit_x, fit_y,color='r',linewidth=2)
plt.show()

scikit-learn实现逻辑回归:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysisdata = np.loadtxt('LogisticRegressionData.txt',delimiter=',')
X = data[:,0:2]
X = X.reshape(-1,2)
y = data[:,2]#分别获取两类样本的索引
negative = data[:,2] == 0
positive = data[:,2] == 1#scikit-learn中逻辑回归除了线性模型中的LogisticRegression外还可以用判别分析中的LinearDiscriminantAnalysis来实现,
#即下面的LogisticRegression可换位LinearDiscriminantAnalysis
regr = LogisticRegression()
regr.fit(X,y)#显示结果
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(25,105)
ax.set_ylim(25,105)
ax.set_xlabel("X",fontsize=14,fontweight='bold')
ax.set_ylabel("y",fontsize=14,fontweight='bold')
ax.set_title('Logistic Regression',fontsize=14,fontweight='bold')
ax.grid()
plt.scatter(data[negative][:,0], data[negative][:,1],marker='x',c='r')
plt.scatter(data[positive][:,0], data[positive][:,1],marker='+',c='b')
x_min,x_max = X[:,0].min(),X[:,0].max()
y_min,y_max = X[:,1].min(),X[:,1].max()
h = 0.01
xx,yy = np.meshgrid(np.arange(x_min,x_max,h), np.arange(y_min,y_max,h))
Z = regr.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contour(xx,yy,Z,[0.5],colors='g')
plt.savefig('Logistic Regression',dpi=100)
plt.show()

附件
如需使用本文所用的数据LinearRegressionData.txtLogisticRegressionData.txt,请移步https://github.com/GarryLau/MachineLearning/tree/master/LinearModel进行下载。

线性模型(Linear Model)相关推荐

  1. 混合线性模型+mixed linear model+GEEs+GLMM+LMM

    混合线性模型+mixed linear model+GEEs+GLMM+LMM 线性回归 广义线性回归 混合线性模型/线性混合模型 的区别是什么? spss中遇见线性混合模型 价值,意义,目的是什么? ...

  2. R语言对数线性模型loglm函数_使用R语言进行混合线性模型(mixed linear model) 分析代码及详解...

    1.混合线性模型简介 混合线性模型,又名多层线性模型(Hierarchical linear model).它比较适合处理嵌套设计(nested)的实验和调查研究数据.此外,它还特别适合处理带有被试内 ...

  3. 广义线性模型(Generalized Linear Model)之二:Logistic回归

    广义线性模型(Generalized Linear Model)之二:Logistic回归 一.引入:多元线性回归模型 二.Logistic回归模型 三.非条件logistic回归模型 (一)介绍 ( ...

  4. 广义线性模型(Generalized Linear Model)

    广义线性模型 1. 广义线性模型(Generalized Linear Model) 1.1 指数分布族 1.2 广义线性模型建模(三个假设) 2. 线性回归推导 2.1 Gaussian 分布的指数 ...

  5. Google 深度学习笔记 - Limit of Linear Model

    https://www.toutiao.com/a6679981747167298051/ 实际要调整的参数很多 如果有N个Class,K个Label,需要调整的参数就有(N+1)K个 Linear ...

  6. Machine Learning——Linear Model

    本系列博客是我学习周志华的<机器学习(西瓜书)>的自学笔记. 我是零基础学习,因此所写只是书上的知识,肯定不全面,以后随着学习的深入,慢慢补充吧. 基本形式 给定由ddd个属性描述的示例x ...

  7. [Watermelon_book] Chapter 3 Linear Model

    Linear Model 基本定义 线性模型简单形式的实际编码 Task Generate data Cost function Gradient descent Training Model eva ...

  8. voom: precision weights unlock linear model analysis tools for RNA-seq read counts

    voom: precision weights unlock linear model analysis tools for RNA-seq read counts 标准化方式 首先在定义cpm的时候 ...

  9. 【李宏毅2020 ML/DL】补充:Structured Learning: Introduction Structured Linear Model

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...

最新文章

  1. 大数加法【HDU 1002】
  2. Sqlserver数据库类型介绍,可作为参考书
  3. git add --all 为啥不能添加空文件夹,这样设计的初衷是
  4. python入门与提高实践,Python基础06:功能增强与实践,基础知识,学习,函数,加强,及,练习...
  5. 苹果在GitHub上正式开源iOS内核源码
  6. delphi 2010 调整图片的比例
  7. yum install -y 是什么意思_为什么你应该在docker 中使用gosu?
  8. C语言编译和链接详解(通俗易懂,深入本质)
  9. P2P 漏洞曝光,数以百万计的物联网设备被入侵!
  10. 如何在linux centos下安装git(转)
  11. PHP设计模式——解释器模式
  12. 深入浅出 妙用Javascript中apply、call、bind
  13. java设计模式_抽象工厂
  14. java调用js模板引擎_JavaScript模板引擎用法实例
  15. 解决Tomcat中文乱码
  16. 百度网盘客户端二维码无法显示及第三方无法登录问题的解决方法
  17. 【图像处理】双线性插值法扩展图像像素及其代码实现(亚像素)
  18. 生物统计学(Biostatistics)笔记第七讲-Linear regression and correlation analysis
  19. 成功解决Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴的问题
  20. JAVA简单的银行管理系统

热门文章

  1. UI设计师必备素材|功能性UI线性图标
  2. Kafka节点扩容、缩容后reassign partition
  3. 【问链-区块链基础知识系列】 第十二课 区块链产业落地现状分析
  4. linux服务器6t硬盘分区,linux多块6T大硬盘分区挂载GPT分区
  5. Flask框架之模板继承与案例05
  6. h5+app Android上架华为应用市场被拒原因“拒绝获取手机权限后app会闪退“以及隐私政策问题
  7. 济南软件测试行业提出千亿级市场的战略布局
  8. c 执行oracle 函数,Oracle 下医嘱执行函数
  9. 被ddos攻击了怎么办,阿里云高防又太贵了
  10. FOC——10.11.IR2106半桥预驱电路