一、线性回归

1. 定义

回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。

单变量情形:y=ax+b,b为误差服从均值为0的正态分布。

多变量情形:




二元线性回归分析python 二元线性回归分析方程_l2的最优回归


2. 损失函数

要找到最好的权重/参数[θo,…θn]= θ
那怎么去衡量“最好”呢?
把x到y的映射函数f记作θ的函数hθ(x)
定义损失函数为:


二元线性回归分析python 二元线性回归分析方程_l2的最优回归_02


最小化损失函数可得最优值。

3. 梯度下降

逐步最小化损失函数的过程,如同下山,找准方向(梯度),每次迈进一小步,直至山底。


二元线性回归分析python 二元线性回归分析方程_损失函数_03


假如现在有n个特征/变量xj(j=1…n),则


二元线性回归分析python 二元线性回归分析方程_过拟合_04


4. 过拟合与正则化

欠/过拟合


二元线性回归分析python 二元线性回归分析方程_过拟合_05


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

正则化

  1. 正则化就是对最小化经验误差函数上加约束,这样的约束可以解释为先验知识(正则化参数等价于对参数引入先验分布)。约束有引导作用,在优化误差函数的时候倾向于选择满足约束的梯度减少的方向,使最终的解倾向于符合先验知识(如一般的l-norm先验,表示原问题更可能是比较简单的,这样的优化倾向于产生参数值量级小的解,一般对应于稀疏参数的平滑解)。
  2. 同时,正则化解决了逆问题的不适定性,产生的解是存在,唯一同时也依赖于数据的,噪声对不适定的影响就弱,解就不会过拟合,而且如果先验(正则化)合适,则解就倾向于是符合真解(更不会过拟合了),即使训练集中彼此间不相关的样本数很少。


二元线性回归分析python 二元线性回归分析方程_过拟合_06


二、逻辑回归

1. 定义

逻辑(logistic)回归是一种广义的线性回归分析模型。有时候需要解决分类问题。
明明对离散值预测(分类),为啥叫回归?——归功于sigmoid函数:


二元线性回归分析python 二元线性回归分析方程_l2的最优回归_07


2. 损失函数

损失函数J(θ)非凸,


二元线性回归分析python 二元线性回归分析方程_l2的最优回归_08


我们希望它是凸函数:


二元线性回归分析python 二元线性回归分析方程_l2的最优回归_09


故有:


二元线性回归分析python 二元线性回归分析方程_l2的最优回归_10


则:


二元线性回归分析python 二元线性回归分析方程_正则化_11


3. 梯度下降与正则化

梯度下降求最小值:


二元线性回归分析python 二元线性回归分析方程_l2的最优回归_12


三、工程应用经验

1. 关于样本的处理

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

离散化后用one-hot编码处理成0, 1值

如果要用连续值,注意做scaling

试试spark MIIib

试试采样(注意采样方式:日期or用户or行为)

(2)注意样本的平衡

对样本分布敏感

下采样(样本量足的情况下),上采样(样本数量不太足)

修改loss function, 给不同权重

采样后的predict结果,用作排序0K, 用作判定请还原

2. 关于特征的处理

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

(2)通过组合特征引入个性化因素
uuid + tag
uuid + cluster_ id…(3)注意特征的频度
区分特征重要度
可以产出层次判定模型(4)聚类/Hash
增强了极度稀疏的特征表达力
减小了模型.加速运算

3. 关于算法调优

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