lasso

ML_6机器学习重要概念补充

老子叫甜甜 提交于 2020-04-05 17:14:40
学习目标 sklearn中的Pipeline 偏差与方差 模型正则化之L1正则、L2正则 一、sklearn中的Pipeline 研究一个因变量与一个或多个自变量间多项式的回归分析方法,称为多项式回归(Polynomial Regression)。多项式回归是线性回归模型的一种,其回归函数关于回归系数是线性的。其中自变量x和因变量y之间的关系被建模为n次多项式。 如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。在一元回归分析中,如果变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。 由于任一函数都可以用多项式逼近,因此多项式回归有着广泛应用。 多项式回归的思路是:添加一个特征,即对于X中的每个数据进行平方。 import numpy as np import matplotlib.pyplot as plt x = np.random.uniform(-3, 3, size=100) X = x.reshape(-1, 1) y = 0.5 + x**2 + x + 2 + np.random.normal(0, 1, size=100) plt.scatter(x, y) plt.show() from sklearn.linear_model import LinearRegression lin

避免线性回归的过拟合(一):正则化线性模型3个(岭回归+Lasso回归+弹性网络)

百般思念 提交于 2020-02-26 16:08:38
正则化线性模型 文章目录 正则化线性模型 1.Ridge Regression (岭回归,又名 Tikhonov regularization) 2.Lasso回归 3.弹性网络 4.Early Stopping 1.Ridge Regression (岭回归,又名 Tikhonov regularization) 线性回归+L2正则 具体的损失函数 目标函数 = 损失函数+正则项 岭回归是线性回归的正则化版本,即在原来的线性回归的 cost function 中添加正则项(regularization term): 以达到在拟合数据的同时,使模型权重尽可能小的目的,岭回归代价函数: 即 α=0:岭回归退化为线性回归 2.Lasso回归 线性回归+L1正则 Lasso 回归是线性回归的另一种正则化版本,正则项为权值向量的ℓ1范数。 Lasso回归的代价函数 : 【注意 】 Lasso Regression 的代价函数在 θi=0处是不可导的. 解决方法:在θi=0处用一个次梯度向量(subgradient vector)代替梯度,如下式 Lasso Regression 的次梯度向量 Lasso Regression 有一个很重要的性质是:倾向于完全消除不重要的权重。 例如:当α 取值相对较大时,高阶多项式退化为二次甚至是线性:高阶多项式特征的权重被置为0。 也就是说,Lasso

05_特征选择

狂风中的少年 提交于 2020-02-18 15:16:46
特征选择是选择相关特征的子集用于机器学习模型构建的过程,数据越多,结果就越好,这并不总是事实。包含不相关的特征(对预测没有帮助的特征)和冗余的特征(与他人无关的特征)只会使学习过程不堪重负,容易导致过度拟合。 特征选择的好处: 不同的特征子集为不同的算法提供了最佳性能。所以它和机器学习模型训练不是一个单独的过程。因此,如果我们要为线性模型选择特征,最好使用针对这些模型的选择程序,如回归系数重要性或Lasso。如果我们要为树选择特性,最好使用树派生的重要性。 简化模型使得容易解释 减少训练时间,减少计算消耗 减少数据收集的时间 避免维度过高 提升泛化性能,降低过拟合的风险 1.Filter Method 过滤方法根据性能度量选择特征,而不考虑以后使用的ML算法。单变量滤波器根据一定的准则对单个特征进行评价和排序,而多变量滤波器则对整个特征空间进行评价。 特性: 基于模型选择变量,使用尽量少的计算资源,会使模型性能下降的特征。下列这些滤波方法都没有考虑特征之间的相互作用,可能会降低我们的预测能力。我个人只使用方差和相关性来过滤一些绝对不必要的特性。使用卡方检验或单变量选择方法时,需要记住的一点是,在非常大的数据集中,大多数特征将显示一个小的p_value,因此看起来它们具有很高的预测性。这实际上是样本量的影响。因此,在选择使用这些过程的功能时应该谨慎。一个非常小的p

机器学习小白学习笔记---day3---线性模型(岭回归、lasso、线性模型【svm、logistic回归】)

ⅰ亾dé卋堺 提交于 2020-02-05 23:49:22
机器学习小白学习笔记之scikit-learn 最近刚把西瓜书啃完,一大堆理论让脑子真的是一团浆糊,说实话看的基本只有一个概念哈哈哈,效果不高,但是让我对与机器学习真的是整体有了一个大的了解,但是并没能将每个课后作业都完成,甚至很多公式推导也没实现,太难了,让我着手于实践,古人云实践出真知,又拿起了另一本书《Introduce to Mashine Learning with python》 昨天上一节,学习完了knn分类回归,这一节继续往下学,自然而然地学到线性模型,线性模型在实际运用中还是相当广泛的。 用于回归的线性模型: 单一特征的预测结果是一条直线,双特征是一个平面,而高维度的则是一个超平面。 我们继续来看最常见的线性回归模型: 线性回归(普通最小二乘法) 线性回归寻找最佳的参数w(斜率、权重、系数),和b(截距),使得对训练集的预测值与真hide回归目标值y之间的均方误差最小。 在高位数据集中,线性模型将体现的更加强大,但同时会产生过拟合风险,根据书本,通过波士顿房价数据集进行预测。 我们会发现一个情况: 测试集的分数远远低于训练集的分数,显而易见就是产生了过拟合,所以我们应该找到一个可以控制复杂度的模型,标准线性回归最常用的替代方法之一就是 岭回归 。 岭回归 其实预测方法和最小二乘法相同,但是做了一下正则化(附带上拟合约束,希望系数尽可能小

【机器学习 线性模型】10分钟了解下6种常见的线性模型

拈花ヽ惹草 提交于 2020-02-05 06:39:10
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 人工智能教程 在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。那么什么是回归呢?回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。回归分析在机器学习领域应用非常广泛,例如,商品的销量预测问题,交通流量预测问题。下面介绍几种常见的线性回归模型。 常用的线性回归算法 1、线性回归 线性回归拟合一个带系数的线性模型,以最小化数据中的观测值与线性预测值之间的残差平方和。 #加载线性模型算法库 from sklearn import linear_model # 创建线性回归模型的对象 regr = linear_model . LinearRegression ( ) # 利用训练集训练线性模型 regr . fit ( X_train , y_train ) # 使用测试集做预测 y_pred = regr . predict ( X_test ) 2、岭回归 上述的线性回归算法使用最小二乘法优化各个系数,对于岭回归来说,岭回归通过对系数进行惩罚(L2范式)来解决普通最小二乘法的一些问题,例如,当特征之间完全共线性(有解)或者说特征之间高度相关

学习《机器学习实战》四

送分小仙女□ 提交于 2020-01-27 15:59:51
训练模型 训练模型就是搜寻使成本函数(在训练集上)最小化的参数组合。 有助于快速定位到合适的模型、正确的训练算法,以及一套适当的超参数。 一、线性回归(LinearRegression) 线性模型就是对输入特征加权求和,再加上一个偏置项的常数,以此进行预测。 线性回归模型预测: 衡量一个回归模型性能指标:均方根误差(RMSE),但求均方误差(MSE)更方便 我们生成一些线性数据来测试这个公式 import numpy as np X = 2 * np.random.rand(100, 1) y = 4 + 3 * X + np.random.randn(100, 1) X表示100个数据的1个特征属性 以点的形式来表示100个数据: 生成的线性函数是y=4+3x from matplotlib import pyplot as plt plt.xlabel("X") plt.ylabel("y") plt.scatter(X, y, marker = 'o', color = 'green', s = 40) plt.show() 现在,我们使用标准方程来计算θ。使用Numpy的线性代数模块(np.linalg)中的inv()函数来对矩阵求逆,并用dot()方法计算矩阵内积: X_b = np.c_[np.ones((100, 1)), X] theta_best = np

特征工程&特征选择

白昼怎懂夜的黑 提交于 2020-01-26 06:43:59
特征工程 #核心代码举例 # 统计特征 #计算均值 gp = train . groupby ( by ) [ fea ] . mean ( ) #计算中位数 gp = train . groupby ( by ) [ fea ] . median ( ) #计算方差 gp = train . groupby ( by ) [ fea ] . std ( ) #计算最大值 gp = train . groupby ( by ) [ fea ] . max ( ) #计算最小值 gp = train . groupby ( by ) [ fea ] . min ( ) #计算出现次数 gp = train . groupby ( by ) [ fea ] . size ( ) # groupby生成统计特征:mean,std # 按照communityName分组计算面积的均值和方差 temp = data . groupby ( 'communityName' ) [ 'area' ] . agg ( { 'com_area_mean' : 'mean' , 'com_area_std' : 'std' } ) # 特征拆分 # 将houseType转为'Room','Hall','Bath' def Room ( x ) : Room = int ( x . split ( '室

线性模型正则化

寵の児 提交于 2020-01-25 19:56:07
一、正则线性模型 减少过度拟合的一个好办法就是对模型 正则化 (即约束它):它拥有的自由度越低,就越不容易过度拟合数据。比如,将多项式模型正则化的简单方法就是降低多项式的阶数。 对线性模型来说,正则化通常通过约束模型的权重来实现。常见的对权重进行约束的方法有:岭回归(Ridge Regression)、套索回归(lasso Regression)及弹性网络(Elastic Regression)。 二、岭回归 岭回归 (也叫作吉洪诺夫正则化)是线性回归的正则化版:在成本函数中添加一个等于 α ∑ i = 1 n θ i 2 \alpha\sum_{i=1}^n\theta_i^2 α ∑ i = 1 n ​ θ i 2 ​ 的正则项。这使得学习中的算法不仅需要拟合数据,同时还要让模型权重保持最小。 正则项只能在训练的时候添加到成本函数中,一旦训练完成,我们需要使用未经正则化的性能指标来评估模型性能。 超参数 α \alpha α 控制的是对模型进行正则化的程度。如果 α = 0 \alpha=0 α = 0 ,则岭回归就是线性模型。如果 α \alpha α 非常大,那么所有的权重都将非常接近于零,结果是一条穿过数据平均值的水平线。 岭回归的成本函数: J ( θ ) = M S E ( θ ) + α 1 2 ∑ i = 1 n θ i 2 J(\theta)=MSE(

python_Lasso _线性模型_L1正则化

雨燕双飞 提交于 2020-01-03 05:09:04
python_Lasso _线性模型_L1 正则化 Lasso。与岭回归相同,使用 lasso 也是约束系 # 数使其接近于 0,但用到的方法不同,叫作 L1 正则化。 L1 正则化的结果是,使用 lasso 时 某些系数刚好为 0 这样模型更容易解释,也可以呈现模型最重要的特征 # 4. lasso # 除了 Ridge,还有一种正则化的线性回归是 Lasso。与岭回归相同,使用 lasso 也是约束系 # 数使其接近于 0,但用到的方法不同,叫作 L1 正则化。8 L1 正则化的结果是,使用 lasso 时 # 某些系数刚好为 0。这说明某些特征被模型完全忽略。这可以看作是一种自动化的特征选 # 择。某些系数刚好为 0,这样模型更容易解释,也可以呈现模型最重要的特征 ​ from sklearn . linear_model import Lasso ​ lasso = Lasso ( ) . fit ( X_train , y_train ) print ( "Training set score: {:.2f}" . format ( lasso . score ( X_train , y_train ) ) ) print ( "Test set score: {:.2f}" . format ( lasso . score ( X_test , y_test ) ) )

r语言中对LASSO,Ridge岭回归和Elastic Net模型实现

微笑、不失礼 提交于 2019-12-14 22:21:54
原文链接: http://tecdat.cn/?p=3795 介绍 Glmnet是一个通过惩罚最大似然来拟合广义线性模型的包。正则化路径是针对正则化参数λ的值网格处的套索或弹性网络罚值计算的。该算法速度极快,可以利用输入矩阵中的稀疏性x。它符合线性,逻辑和多项式,泊松和Cox回归模型。可以从拟合模型中做出各种预测。它也可以适合多响应线性回归。 glmnet算法采用循环坐标下降法,它连续优化每个参数上的目标函数并与其他参数固定,并反复循环直至收敛。该软件包还利用强大的规则来有效地限制活动集。由于高效的更新和技术,如热启动和主动集合收敛,我们的算法可以非常快地计算解决方案路径。 该代码可以处理稀疏的输入矩阵格式,以及系数的范围约束。其核心glmnet是一组Fortran子程序,它们使执行速度非常快。 该软件包还包括用于预测和绘图的方法以及执行K倍交叉验证的功能。 首先,我们加载glmnet包: library(glmnet) ## Loading required package: Matrix## Loaded glmnet 1.9-9 包中使用的默认模型是高斯线性模型或“最小二乘”,我们将在本节中演示。我们加载一组预先创建的数据用于说明。用户可以加载自己的数据,也可以使用保存在工作区中的数据。 load("QuickStartExample.RData")