regression

R语言caret包的学习(二)--特征选择

我们两清 提交于 2021-01-20 07:37:17
在进行数据挖掘时,我们并不需要将所有的自变量用来建模,而是从中选择若干最重要的变量,这称为特征选择(feature selection)。本文主要介绍基于caret包的 rfe() 函数的特征选择。 一种算法就是后向选择,即先将所有的变量都包括在模型中,然后计算其效能(如误差、预测精度)和变量重要排序,然后保留最重要的若干变量,再次计算效能,这样反复迭代,找出合适的自变量数目。这种算法的一个缺点在于可能会存在过度拟合,所以需要在此算法外再套上一个样本划分的循环。在caret包中的rfe命令可以完成这项任务。 rfe(x, y, sizes = 2^(2:4), metric = ifelse(is.factor(y), "Accuracy", "RMSE"), maximize = ifelse(metric == "RMSE", FALSE, TRUE), rfeControl = rfeControl(), ...) x 训练集自变量矩阵或数据库,注意,列名必须唯一 y 训练集的结果向量(数值型或因子型) sizes 对应于应该保留的特征的数量的数值向量 metric 指定将使用什么汇总度量来选择最优模型。默认情况下,"RMSE" and "Rsquared" for regression and "Accuracy" and "Kappa" for

机器学习(二):理解线性回归与梯度下降并做简单预测

北慕城南 提交于 2021-01-19 21:44:53
预测从瞎猜开始 按 上一篇文章 所说,机器学习是应用数学方法在数据中发现规律的过程。既然数学是对现实世界的解释,那么我们回归现实世界,做一些对照的想象。 想象我们面前有一块塑料泡沫做的白板,白板上分布排列着数枚蓝色的图钉,隐约地它们似乎存在着某种规律,我们试着找出规律。 白板上的图钉( 数据 )如上图所示,我们有没有一种方法( 数学算法 )来寻找规律( 模型解释 )呢? 既然不知道怎么做,那我们瞎猜吧! 我拿起两根木棒在白板前比划,试着用木棒表示数据的规律。我随便放了放,如下图所示: 它们似乎都在一定程度上能表示蓝色图钉的规律,那么问题来了,绿色(虚线)和红色(实线)哪一个表示更好呢? 损失函数(成本函数) 好与坏是很主观的表达,主观的感受是不可靠的,我们必须找到一种客观的度量方式。我们想当然的认为误差最小的表示,是最好的。那么,我们引出一种量化误差的方法---最小二乘法。 最小二乘法 :使误差的平方和最小的办法,是一种误差统计方法,二乘就是平方的意思。 $$ SE = \sum{(y_{pred} -y_{true})^2} $$ 最小二乘法的解释是这样的,我们用 预测值-实际值 表示单点的误差,再把它们的 平方和 加到一起来表示整体误差。( 平方的好处可以处理掉负数值,用绝对值的和也不是不可以。 )我们用这个最终值来表示损失(成本),而可以表示损失(成本)的函数就叫做损失函数

GBDT+LR:Practical Lessons from Predicting Clicks on Ads

丶灬走出姿态 提交于 2021-01-16 05:02:06
1. 介绍 1.1 论文背景 本文主要介绍Facebook提出的CTR预估模型LR(Logistic Regression)+GBDT。当时深度学习还没有应用到计算广告领域,Facebook提出利用GBDT的叶节点编号作为非线性特征的表示,或者说是组合特征的一种方式。 LR+GBDT相比于单纯的LR或者GBDT带来了较大的性能提升,论文中给出数据为3%,这在CTR预估领域确实非常不错。除此之外,Facebook还在在线学习、Data freshness、学习速率、树模型参数、特征重要度等方面进行了探索。 相比于搜索广告领域,根据用户query来给出候选广告,然后利用Rank模型对候选广告进行排序。这些广告要么显式要么隐式的和用户query相关联。但是在Facebook这样的社交场合中,广告并没有和用户query相关联,但是用户看到的广告一定程度上反映了用户的人口统计特性和兴趣特性。基于这个原因,在Facebook上展示的广告相比于搜索广告中的要多一些。 在实际的生产环境中,为每个用户确定广告候选是一件系统性设施工作,Facebook主要通过做多个分类器级联来实现。但是论文中分析的是最后的那一个prediction模型。它直接给出最后的CTR概率。 1.2 研究背景 CTR预估(Click-Through Rate Prediction)是互联网计算广告中的关键环节

逻辑回归(二元+多元分类原理)

二次信任 提交于 2021-01-10 14:57:28
二元分类 Sigmod函数 逻辑回归中的损失函数 多元分类 当我们处理多分类任务时,通常需要使用Softmax Regression模型。 Softmax Regression会对每一类别估算出一个概率。 工作原理:将判定为某一类的特征相加,然后将这些特征转化为判定是这一类的概率。 Softmax思想 Softmax举例 多元分类采取的损失函数 交叉熵损失函数计算实例 定义交叉熵损失函数 来源: oschina 链接: https://my.oschina.net/u/4348185/blog/3377412

机器学习入门线性回归 岭回归与Lasso回归(二)

陌路散爱 提交于 2021-01-10 10:11:17
一 线性回归(Linear Regression ) 1. 线性回归概述   回归的目的是预测数值型数据的目标值,最直接的方法就是根据输入写出一个求出目标值的计算公式,也就是所谓的回归方程,例如y = ax1+bx2,其中求回归系数的过程就是回归。那么回归是如何预测的呢?当有了这些回归系数,给定输入,具体的做法就是将回归系数与输入相乘,再将结果加起来就是最终的预测值。说到回归,一般指的都是线性回归,当然也存在非线性回归,在此不做讨论。   假定输入数据存在矩阵x中,而回归系数存放在向量w中。那么对于给定的数据x1,预测结果可以通过y1 = x1Tw给出,那么问题就是来寻找回归系数。一个最常用的方法就是寻找误差最小的w,误差可以用预测的y值和真实的y值的差值表示,由于正负差值的差异,可以选用平方误差,也就是对预测的y值和真实的y值的平方求和,用矩阵可表示为: $$ (y - xw)T(y - xw) $$ 现在问题就转换为寻找使得上述矩阵值最小的w,对w求导为:xT(y - xw),令其为0,解得: $$ w = (xTx)-1xTy $$ 这就是采用此方法估计出来的. 案例: 糖尿病回归分析 import numpy as np import pandas as pd from pandas import Series,DataFrame import matplotlib

决策树是如何选择特征和分裂点?

冷暖自知 提交于 2021-01-09 10:13:48
©PaperWeekly 原创 · 作者|贲忠奇 单位|便利蜂算法工程师 研究方向|推荐算法、反作弊 缘起 在解决回归和分类问题的时候,一般会使用 Random Forest、GBDT、XGBoost、LightGBM 等算法,这类算法因为性能好,被业界广泛采用。突然想到树类型的算法都需要明白一个基本问题,树是如何选择特征和分裂点的?其根本要追溯到决策树的种类,每种是如何划分特征和分裂点,以及如何剪枝的。 决策树分为三类:ID3、C4.5、CART。提出时间却是 1984 年提出 CART,1986年提出的 ID3,1993 年提出的 C4.5。在介绍决策树之前需要了解一些信息论的知识,信息、熵、条件熵、信息增益。决策树中的 ID3 和 C4.5 与信息论息息相关。 信息论基础 信息是杂乱无章数据的一种度量方式。在分类问题中,如果待分类的事物可以划分在多个分类中,那么某个分类 的信息定义为: 其中, 是某个分类的信息; 是选择该分类的概率。 熵是信息的期望,也就是计算所有分类包含信息的期望值: 其中,H(Y) 表示分类数据集的熵。 条件熵是在特征 X 给定条件下,类别 Y 的条件概率分布的熵对特征 X 的数学期望。 其中, 表示在特征 X 下的条件熵; 表示特征下 具体特征值的条件熵; 表示 x 和 y 的联合概率分布。 在划分数据集之前之后信息发生的变化叫做信息增益

线性回归——lasso回归和岭回归(ridge regression)

戏子无情 提交于 2021-01-08 08:23:24
[toc] 线性回归很简单,用线性函数拟合数据,用 mean square error (mse) 计算损失(cost),然后用梯度下降法找到一组使 mse 最小的权重。 lasso 回归和岭回归(ridge regression)其实就是在标准线性回归的基础上分别加入 L1 和 L2 正则化(regularization)。 本文的重点是解释为什么 L1 正则化会比 L2 正则化让线性回归的权重更加稀疏,即使得线性回归中很多权重为 0,而不是接近 0。或者说,为什么 L1 正则化(lasso)可以进行 feature selection,而 L2 正则化(ridge)不行。 线性回归——最小二乘 线性回归(linear regression),就是用线性函数 $f(\bm x) = \bm w^{\top} \bm x + b$ 去拟合一组数据 $D = {(\bm x_1, y_1), (\bm x_2, y_2), ..., (\bm x_n, y_n)}$ 并使得损失 $J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2$ 最小。线性回归的目标就是找到一组 $(\bm w^ , b^ )$,使得损失 $J$ 最小。 线性回归的拟合函数(或 hypothesis)为: $$ f(\bm x) = \bm w^{\top}

Linear Regression model building and prediction by group in R

让人想犯罪 __ 提交于 2021-01-07 06:59:28
问题 I'm trying to build several models based on subsets (groups) and generate their fits. In other words, taking my attempts below into consideration, I'm trying to build models that are country specific. Unfortunately in my attempts I'm only able to take the entire dataset into consideration to build the models instead of restricting it to the groups of countries in the datasets. Could you please help me resolve this problem? In the first case I'm doing some sort of cross validation to generate

Linear Regression model building and prediction by group in R

最后都变了- 提交于 2021-01-07 06:58:43
问题 I'm trying to build several models based on subsets (groups) and generate their fits. In other words, taking my attempts below into consideration, I'm trying to build models that are country specific. Unfortunately in my attempts I'm only able to take the entire dataset into consideration to build the models instead of restricting it to the groups of countries in the datasets. Could you please help me resolve this problem? In the first case I'm doing some sort of cross validation to generate

Multiple regression with pykalman?

落爺英雄遲暮 提交于 2021-01-07 02:32:54
问题 I'm looking for a way to generalize regression using pykalman from 1 to N regressors. We will not bother about online regression initially - I just want a toy example to set up the Kalman filter for 2 regressors instead of 1, i.e. Y = c1 * x1 + c2 * x2 + const . For the single regressor case, the following code works. My question is how to change the filter setup so it works for two regressors: import matplotlib.pyplot as plt import numpy as np import pandas as pd from pykalman import