浅谈多变量线性回归中的数据规范化

  简单来说,它主要用来把所有特征值范围映射至同样的范围里面如(0,1)、(-1,1)、(-0.5,0.5)等。

  Feature scaling (数据规范化) 是数据挖掘或机器学习常用到的步骤,这个步骤有时对算法的效率和准确率都会产生巨大的影响。

  对精度的影响:很明显,这个步骤的必要性要依赖于数据特征的特性,如果有>=2特征,并且不同特征间的值变化范围差异大,那就很有必要使用Feature scaling。比如说,在信用卡欺诈检测中,如果我们只使用用户的收入作为学习特征,那就没有必要做这个步骤。但是如果我们同时使用用户的收入和用户年龄两个特征的话,在建模之前采用这个步骤就很有可能能提高检测精度,这是因为用户收入这个特征的取值范围可能为[50000,60000]甚至更大,但用户年龄只可能是[20,100]左右,这时候,假如说我用K最近邻的方法去做检测的话,用户收入这个特征的相似度对检测结果的影响将会大大大于用户年龄的作用,然而事实上,这两个特征对欺诈检测可能有着同等的重要性。因此,假如我们在检测实施前,对着两个特征进行规范化,那我们的检测方法中就能真正地同等对待它们。

  对效率的影响:再举一个例子,该例子来源于Ng教授的ML课程,

  例子如上图,在该例子中,我们想用线性回归根据房屋的大小和房屋的卧室数量来预测房价,采用的优化方法为batch gradient descent。在建立模型的过程中,如果不对房屋的大小和房屋的卧室数量两个特征规范化,我们的优化问题将会在很skewed的区域中进行(如左图所示),这样会使得batch gradient descent的收敛很慢。而当我们对其进行规范化之后,问题就会转变为偏圆形的空间中优化,这时候,batch gradient descent的收敛速度将会得到大幅度提高。

  实践:关于Feature Scaling: get every feature into approximately into [-1, 1]

  a:每个维度的特征减去此维度特征均值,除以此维度特征的最大值与最小值之差:
   (xi - mean(xi)) / (max(xi) - min(xi)) (mean normalization)
  b:每个维度的特征减去此维度的均值,除以这个维度的标准差:
   (xi - mean(xi)) / std(xi)  (mean normalization)   
  c:常数项x0 = 1,已经在(或接近)合理的range内,无需缩放

  d:为什么要Feature Scaling呢?
   特征缩放有助于算法快速收敛,可以通过迭代算法的公式来解释:
  e:使用缩放特征计算得到的模型参数去做预测,预测样本是否也需要做Feature Scaling
   对于一个待预测的sample instance X,使用模型参数预测前,应首先对X进行Feature Scaling
   即:X = (X - mean(xi)) / std(xi),其中,mean(xi)和std(xi)是训练样本集第i维特征的均值和方差
  f:使用Normal Equation(正规方程)计算模型参数,是否需要做特征缩放?
   使用正规方程计算参数时,无需进行Feature Scaling
  g:Why not Feature Scaling the y ?????

  关于Learning Rate:
  与正规方程(Normal Equation)不同,梯度下降算法需要选择合适的Learning rate,以便控制
算法的迭代效果和迭代速度。通常情况下,先选择一个较小的初始学习率,观察效果,然后可
以按照3倍、10倍递增的方式逐步提高学习率,观察效果。直到能够找到一个合适的Learning rate

  a:学习率过大,会导致算法不收敛
  b:学习率过小,会导致算法迭代速度过慢,影响算法效率

  关于Debugging Issue:为了验证迭代算法(梯度下降)是否能够在迭代中逐步降低Cost function。需要画出代价函数,关于迭代次数的曲线,根据这个曲线适当调整算法参数,可以实现算法收敛/提高收敛效率。

  关于Normal Equation: 不需要Feature Scaling,不需要迭代,不需要设置学习率Normal Equation定义如下所示:theta = (X^T * X)^(-1) * X^T * y

其中:
  a:X为design matrix,每行为一个sample instance的特征,共n + 1项,n为特征维数
   每个sample instance的第一项都为1,为常数项(为便于计算而引入的)
  b:X^T表示矩阵X的转置,^(-1)表示矩阵求逆,y表示训练样本中的预测值,为mx1维,m为
   sample instance的个数,theta表示要计算的模型参数向量,为n + 1维
  c:假设矩阵A维数为nxn,则A^(-1)的计算复杂度为O(n^3)
  何时使用Normal Equation,何时使用Gradient Descent
  m = number of training samples,    n = number of features
  n=10000时,Normal Equation需要计算逆矩阵,所以Normal Equation方法效率会慢下来,可以
考虑使用Gradient descent代替,n=100000时,计算Normal Equation中的(XT*X)^(-1)会变得非常慢,此时,definitely使用Gradient Descent。

时间: 2024-12-22 04:32:44

浅谈多变量线性回归中的数据规范化的相关文章

浅谈数据仓库建设中的数据建模方法

所谓水无定势,兵无常法.不同的行业,有不同行业的特点,因此,从业务角度看,其相应的数据模型是千差万别的.目前业界较为主流的是数据仓库厂商主要是 IBM 和 NCR,这两家公司的除了能够提供较为强大的数据仓库平台之外,也有各自的针对某个行业的数据模型.       例如,在银行业,IBM 有自己的 BDWM(Banking data warehouse model),而 NCR 有自己的 FS-LDM 模型.在电信业,IBM 有 TDWM(Telecom Data warehouse model)

浅谈Entity Framework中的数据加载方式

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文

浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色

浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色 本篇文章是系列文章中的第二篇,以防你还没有看过第一篇.上一篇的文章地址如下: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID

浅谈深度学习中潜藏的稀疏表达

浅谈深度学习中潜藏的稀疏表达 “王杨卢骆当时体,轻薄为文哂未休. 尔曹身与名俱灭,不废江河万古流.” — 唐 杜甫<戏为六绝句>(其二) [不要为我为啥放这首在开头,千人千面千理解吧] 深度学习:概述和一孔之见 深度学习(DL),或说深度神经网络(DNN), 作为传统机器学习中神经网络(NN).感知机(perceptron)模型的扩展延伸,正掀起铺天盖地的热潮.DNN火箭般的研究速度,在短短数年内带来了能“读懂”照片内容的图像识别系统,能和人对话到毫无PS痕迹的语音助手,能击败围棋世界冠军.引

转:浅谈C/C++中的指针和数组(一)

转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242138.html 浅谈C/C++中的指针和数组(一) 指针是C/C++的精华,而指针和数组又是一对欢喜冤家,很多时候我们并不能很好的区分指针和数组,对于刚毕业的计算机系的本科生很少有人能够熟练掌握指针以及数组的用法和区别.造成这种原因可能跟现在大学教学以及现在市面上流行的很多C或者C++教程有关,这些教程虽然通俗易懂,但是在很多关键性的地方却避而不谈或者根本阐述不清楚,甚至很

浅谈C语言中的联合体(转载)

联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员相对于基地址的偏移量都为0: 3)此结构空间要大到足够容纳最"宽"的成员: 4)其对齐方式要适合其中所有的成员: 下面解释这四条描述: 由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联合体变量的基地址的偏移量为0,即所有成员的首地址都是一样的.为

浅谈游戏开发中碰撞检测

原创整理不易,转载请注明出处:使用Memcached.Spring AOP构建数据库前端缓存框架 代码下载地址:http://www.zuidaima.com/share/1781569917635584.htm 数 据库访问可能是很多网站的瓶颈.动不动就连接池耗尽.内存溢出等.前面已经讲到如果我们的网站是一个分布式的大型站点,那么使用memcached实现数 据库的前端缓存是个很不错的选择:但如果网站本身足够小只有一个服务器,甚至是vps的那种,不推荐使用memcached,使用Hiberna

浅谈软件性能测试中关键指标的监控与分析

浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上

浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色

浅谈SQL Server中的事务日志(四)----在完整恢复模式下日志的角色 本篇文章是系列文章中的第四篇,也是最后一篇,本篇文章需要前三篇的文章知识作为基础,前三篇的文章地址如下: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色 简介 生产环境下的数据是如果可以写在资产负债表上的话,我想这个资产所占的数额一定不会