机器学习算法:回归分析与工程应用

版权声明:如有转载复制请注明出处,博主QQ715608270,欢迎沟通交流! https://blog.csdn.net/qq_41000891/article/details/83502882

一、线性回归

1.1 定义与定义引入

(一)什么是线性回归呢?

  • 有监督学习
  • 输出/预测的结果yi为连续值变量
  • 需要学习映射f:x->y
  • 假定输入x和输出y之间有线性相关关系

(二)举一个例子(单一变量):

(三)多变量的情况

1.2 损失函数

(一)我们要找到最好的权重/参数

(二)怎样去衡量“最好”?

扫描二维码关注公众号,回复: 4264651 查看本文章

我们把x到y的映射函数f记做θ的函数

定义损失函数为:

(三)最小化损失函数

下图中的右图为随着θ1变化,损失值的变化,呈现抛物线形状:

(四)在θ0和θ1存在的情况下会形成抛物面,最主要的是找到最低点 

1.3 梯度下降

(一)逐步最小化损失函数的过程

(二)如同下山,找准方向(斜率),每次迈进一小步,直至山底

α是学习率,由于偏导求解后区分正负号,所以会自动实现正负加减。

在应用中,一般可以设置一个阈值,以此为限进行求解。

(三)对于有两个参数θ0和θ1存在的情况下会形成抛物面:

(四)假如现在有n个特征/变量x(x1,x2,x3......) 

 (五)学习率α

学习率太小——收敛会很慢,会影响学习效率。

学习率太大——“由这山入那山”,可能会形成左右振荡的情况,可能会无法到达最低点。

一般情况下会将α定为一个相对比较小的值,但不能太小,0.01,0.005比较常见。

1.4 过/欠拟合与正则化

(一)回归与欠/过拟合

       如果我们有特别多的特征 ,  我们的假设函数曲线可以对原始数据拟合得非常好( ( ),  但丧失了一般性 , 从而导致对新给的待预测样本 , 预测效果差 。

       最左边的图中,使用直线,无论如何调整都无法进行相对正确和完整的拟合,所以这个模型并不好;中间的图是一种抛物线的形状,这个时候我们发现,这条曲线比较光滑,虽然不一定可以穿过每一个样本点,但是基本符合;最右边的图,给的参量太多了,波动过大,没有稳定性,不适合进行大量数据的拟合。

       因此最左边的称为“欠拟合”,最右边的称为“过拟合”。

(二)正则化

二、逻辑回归

2.1 定义与问题引入

(一)逻辑(斯特)回归

有时候需要解决分类问题。

线性回归+阈值?

以得肿瘤的为例:

但是当加入3个新的样本点时候,就会受噪声影响比较大:

(二)本身是对离散值的预测,为什么要叫回归?

为了解决以上的问题(噪声影响)希望可以将以上模型映射到(0,1)的概率上,进行概率测算

使用一个函数sigmoid

 当x=0是,y=0.5,即一半的概率

(三)判定边界

    ①判定边界的三种类别:

   

  

逻辑回归就是在寻找判定边界。 

②线性判定边界:

③非线性判定边界: 

2.2 损失函数

(一)在逻辑(斯特)回归中,不可以使用如下的损失函数,否则会形成一个跳动式的曲线,形成一个非凸的函数

而我们在处理模型的时候期望的损失函数应该类似于这个样子:

(二) 通过进一步探索,得出了新的损失函数:

2.3 梯度下降与正则化及实例

使用梯度下降求解:

三、工程应用经验

3.1 逻辑回归实例

(一)线性决策边界

(二)非线性决策边界

 

(三)LR算法的应用经验

LR < SVM/GBDT/RandomForest

①优势

  • LR能以概率的形式输出结果,而非只是0,1判定
  • LR的可解释性强,可控度高
  • 训练快,feature engineering之后效果好
  • 因为结果是概率,可以做ranking model

②应用

  • CTR预估(点击率预估)/推荐系统的learning to rank/各种分类场景
  • 某搜索引擎厂的广告CTR预估基线版本是LR
  • 某电商搜索排序基线版是LR(广告也是)
  • 某电商的购物搭配推荐用了大量LR
  • 某电商的购物搭配推荐用了大量LR
  • 某现在一天广告赚1000w+的新闻app排序基线是LR

3.2 样本处理

(一)样本量太大怎么办?

  • 离散化后用one-hot编码处理成0,1值
  • 如果要用连续值,注意做scaling(幅度变化)
  • 试试spark Mllib
  • 试试采样(注意采样方式:日期 or 用户 or 行为)(二)注意样本的平衡
  • LR对样本分布十分敏感
  • 如果样本不均衡:下采样(样本量充足的情况下),上采样(样本数量不太足)
  • 修改loss function,给不同权重
  • 采样后的predict结果,用作排序可以,但用作判定需要还原

3.3 特征处理

(一)离散化

  • 映射到高维空间,用linear的LR(快,且兼具更好的分割性)
  • 稀疏化,0,1向量内积乘法运算速度快,计算结果方便存储,容易扩展
  • 离散化后,给线性模型带来一定的非线性
  • 模型稳定,收敛度高,鲁棒性好
  • 在一定程度上降低了过拟合风险

(二)特征处理

①通过组合特征引入个性化因素

  • uuid + tag
  • uuid + cluster_id

②注意特征的频度

  • 区分特征重要度
  • 可以产出层次判定模型

③聚类/Hash

  • 增强了极度系数的特征表达力
  • 减小了模型,加速运算

3.4 算法调优

(一)假设只看模型

  • 选择适合的正则化(L1,L2,L1+L2)
  • 正则化系数C
  • 收敛的阈值e,迭代轮数
  • 调整loss function给定不同权重
  • Bagging或其他方式的模型融合
  • 最优化算法额选择(‘newton-cg’,‘lbfgs’,‘liblinear’,‘sag’)
  • 小样本liblinear,大样本sag,多分类‘newton-cg’和‘lbfgs’

(二)liblinear

  • libsvm稀疏向量存储格式,海量数据下单机速度还OK
  • 高纬度离散化特征,准确率逼近非线性切分
  • 参数调节比较方便
  • Sklearn中的LR实际上式liblinear封装的

猜你喜欢

转载自blog.csdn.net/qq_41000891/article/details/83502882