机器学习算法整理之Logistic Regression (LR) 逻辑斯谛回归 :分类方法(对数线性模型)
2017-08-14 22:29
239 查看
sigmoid 函数:f(z)=11+exp(−z)
二分类:
P(Y=1|x)=11+exp(−wTx)=exp(wTx)1+exp(wTx)P(Y=0|x)=exp(−wTx)1+exp(−wTx)=11+exp(wTx),w=(w1,w2,⋯,wn,b)
对数几率:
概率p,对数几率:log(p1−p)→log(P(Y=1|x)P(Y=0|x))=wx→对数线性模型
参数估计:极大似然估计法
似然函数:∏i=1mP(Y=1|x))y(i)P(Y=0|x))1−y(i),hw(x(i))=P(Y=1|x)对数似然函数:L(w)=∑i=1my(i)log(hw(x(i)))(1−y(i))log(1−hw(x(i)))梯度:∂L(w)∂wj=∑i=1m(y(i))−hw(x(i))x(i)j
多分类问题softmax回归:
y(i)∈{1,2,⋯,k},P(Y=k|x)=exp(wTjx)1+∑kc=1exp(wTcx)J(w)=−1m∑i=1m∑j=1k1{y(i)=j}log(exp(wTjx(i))∑kc=1exp(wTcx(i)))+λΩ(w)∂J(w)∂wj=−1m∑i=1mx(i)(1{y(i)=j}−exp(wTjx(i))∑kc=1exp(wTcx(i)))+(正则项梯度)
线性回归:
f(xi)=wTxi→w∗=argminw∑mi=1(f(xi)−yi)2→w∗=(xTx)−1(xTy)
线性判别分析LDA:
给定数据集,将样本投影到一条直线上,相同类别距离尽可能近,不同类别尽可能远
二分类:
投影前:μ0,μ1,Σ0,Σ1→投影后:wTμ0,wTμ1,wTΣ0w,wTΣ1w同类样本尽可能近:minwTΣ0w+wTΣ1w;异类样本尽可能远:max∥wTμ0−wTμ1∥22学习目标:maxwJ(w)=∥wTμ0−wTμ1∥22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w“类内散度矩阵”:Sw=Σ0+Σ1;“类间散度矩阵”:Sb=(μ0−μ1)(μ0−μ1)TminwJ(w)=wTSbwwTSww→minwTSwws.t.wtSbw=1拉格朗日求解:∂−wTSw+λ(wtSbw−1)∂w=0→Sbw=λSww→S−1wSbw=λwSbw=(μ0−μ1)(μ0−μ1)Tw的方向恒为(μ0−μ1),不妨令Sbw=λ(μ0−μ1)则:w=S−1w(μ0−μ1)实践中通常是对Sw进行奇异值分解Sw=UΣVT得到S−1w=VΣ−1UT
当两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类
多分类:
假定存在N个类,第i类样本数为mi,定义“全局散度矩阵”:St=Sb+Sw=∑i=1m(xi−μ)(xi−μ)T其中Sw=∑i=1NSwi;Swi=∑x∈Xi(xi−μi)(xi−μi)T;则:Sb=St−Sw=∑i=1Nmi(μ−μi)(μ−μi)T优化目标:maxWtr(WTSbW)tr(WTSwW)其中W∈Rd×(N−1),tr(⋅)表示矩阵的迹SbW=λSwW,W的闭式解则是S−1wSb的N−1个最大广义特征值对应的特征向量组成的矩阵
优缺点:
分析:解决工业规模问题最流行的算法;得到的是一个与每个观测样本相关的概率列表;逻辑回归在时间和内存需求上相当高效。它可以应用于分布式数据,并且还有在线算法实现,用较少的资源处理大型数据;对于数据中小噪声的鲁棒性很好,并且不会受到轻微的多重共线性的特别影响。严重的多重共线性则可以使用逻辑回归结合L2正则化来解决,不过如果要得到一个简约模型,L2正则化并不是最好的选择,因为它建立的模型涵盖了全部的特征; 当你的特征数目很大并且还丢失了大部分数据时,逻辑回归就会表现得力不从心;
优点:
1.适合需要得到一个分类概率的场景
2.实现效率较高
3.对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决;
4.逻辑回归广泛的应用于工业问题上
缺点:
1.当特征空间很大时,逻辑回归的性能不是很好;
2.不能很好地处理大量多类特征或变量;
4.对于非线性特征,需要进行转换;
5.依赖于全部的数据特征,当特征有缺失的时候表现效果不好;
6.可能容易欠拟合,分类精度不高。
应用经验
LR < SVM/GBDT/RandomForest ?
LR能以概率的形式输出结果,而非只是0,1判定
LR的可解释性强,可控度高(你要给老板讲的嘛…)
训练快,feature engineering之后效果赞
因为结果是概率,可以做ranking model
添加feature太简单…
2.关于样本处理
样本量太大怎么办?
离散化后用one-hot编码处理成0,1值
如果要用连续值,注意做scaling
试试spark Mllib
试试采样(注意采样方式:日期 or 用户 or 行为)
注意样本的平衡
对样本分布敏感
下采样(样本量足的情况下),上采样(样本数量不太足)
修改loss function,给不同权重
采样后的predict结果,用作排序OK,用作判定请还原
3.关于特征处理
离散化
映射到高维空间,用linear的LR(快,且兼具更好的分割性)
稀疏化,0,1向量内积乘法运算速度快,计算结果方便存储,容易扩展;
离散化后,给线性模型带来一定的非线性
模型稳定,收敛度高,鲁棒性好
在一定程度上降低了过拟合风险
通过组合特征引入个性化因素
注意特征的频度
聚类/Hash
4.关于算法调优
假设只看模型
选择合适的正则化(L1, L2, L1+L2)
正则化系数C
收敛的阈值e,迭代轮数
调整loss function给定不同权重
Bagging或其他方式的模型融合
最优化算法选择(‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’)
小样本liblinear,大样本sag,多分类‘newton-cg’和‘lbfgs’(当然你也可以用liblinear和sag的one-vs-rest)
二分类:
P(Y=1|x)=11+exp(−wTx)=exp(wTx)1+exp(wTx)P(Y=0|x)=exp(−wTx)1+exp(−wTx)=11+exp(wTx),w=(w1,w2,⋯,wn,b)
对数几率:
概率p,对数几率:log(p1−p)→log(P(Y=1|x)P(Y=0|x))=wx→对数线性模型
参数估计:极大似然估计法
似然函数:∏i=1mP(Y=1|x))y(i)P(Y=0|x))1−y(i),hw(x(i))=P(Y=1|x)对数似然函数:L(w)=∑i=1my(i)log(hw(x(i)))(1−y(i))log(1−hw(x(i)))梯度:∂L(w)∂wj=∑i=1m(y(i))−hw(x(i))x(i)j
多分类问题softmax回归:
y(i)∈{1,2,⋯,k},P(Y=k|x)=exp(wTjx)1+∑kc=1exp(wTcx)J(w)=−1m∑i=1m∑j=1k1{y(i)=j}log(exp(wTjx(i))∑kc=1exp(wTcx(i)))+λΩ(w)∂J(w)∂wj=−1m∑i=1mx(i)(1{y(i)=j}−exp(wTjx(i))∑kc=1exp(wTcx(i)))+(正则项梯度)
线性回归:
f(xi)=wTxi→w∗=argminw∑mi=1(f(xi)−yi)2→w∗=(xTx)−1(xTy)
线性判别分析LDA:
给定数据集,将样本投影到一条直线上,相同类别距离尽可能近,不同类别尽可能远
二分类:
投影前:μ0,μ1,Σ0,Σ1→投影后:wTμ0,wTμ1,wTΣ0w,wTΣ1w同类样本尽可能近:minwTΣ0w+wTΣ1w;异类样本尽可能远:max∥wTμ0−wTμ1∥22学习目标:maxwJ(w)=∥wTμ0−wTμ1∥22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w“类内散度矩阵”:Sw=Σ0+Σ1;“类间散度矩阵”:Sb=(μ0−μ1)(μ0−μ1)TminwJ(w)=wTSbwwTSww→minwTSwws.t.wtSbw=1拉格朗日求解:∂−wTSw+λ(wtSbw−1)∂w=0→Sbw=λSww→S−1wSbw=λwSbw=(μ0−μ1)(μ0−μ1)Tw的方向恒为(μ0−μ1),不妨令Sbw=λ(μ0−μ1)则:w=S−1w(μ0−μ1)实践中通常是对Sw进行奇异值分解Sw=UΣVT得到S−1w=VΣ−1UT
当两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类
多分类:
假定存在N个类,第i类样本数为mi,定义“全局散度矩阵”:St=Sb+Sw=∑i=1m(xi−μ)(xi−μ)T其中Sw=∑i=1NSwi;Swi=∑x∈Xi(xi−μi)(xi−μi)T;则:Sb=St−Sw=∑i=1Nmi(μ−μi)(μ−μi)T优化目标:maxWtr(WTSbW)tr(WTSwW)其中W∈Rd×(N−1),tr(⋅)表示矩阵的迹SbW=λSwW,W的闭式解则是S−1wSb的N−1个最大广义特征值对应的特征向量组成的矩阵
优缺点:
分析:解决工业规模问题最流行的算法;得到的是一个与每个观测样本相关的概率列表;逻辑回归在时间和内存需求上相当高效。它可以应用于分布式数据,并且还有在线算法实现,用较少的资源处理大型数据;对于数据中小噪声的鲁棒性很好,并且不会受到轻微的多重共线性的特别影响。严重的多重共线性则可以使用逻辑回归结合L2正则化来解决,不过如果要得到一个简约模型,L2正则化并不是最好的选择,因为它建立的模型涵盖了全部的特征; 当你的特征数目很大并且还丢失了大部分数据时,逻辑回归就会表现得力不从心;
优点:
1.适合需要得到一个分类概率的场景
2.实现效率较高
3.对逻辑回归而言,多重共线性并不是问题,它可以结合L2正则化来解决;
4.逻辑回归广泛的应用于工业问题上
缺点:
1.当特征空间很大时,逻辑回归的性能不是很好;
2.不能很好地处理大量多类特征或变量;
4.对于非线性特征,需要进行转换;
5.依赖于全部的数据特征,当特征有缺失的时候表现效果不好;
6.可能容易欠拟合,分类精度不高。
应用经验
LR < SVM/GBDT/RandomForest ?
LR能以概率的形式输出结果,而非只是0,1判定
LR的可解释性强,可控度高(你要给老板讲的嘛…)
训练快,feature engineering之后效果赞
因为结果是概率,可以做ranking model
添加feature太简单…
2.关于样本处理
样本量太大怎么办?
离散化后用one-hot编码处理成0,1值
如果要用连续值,注意做scaling
试试spark Mllib
试试采样(注意采样方式:日期 or 用户 or 行为)
注意样本的平衡
对样本分布敏感
下采样(样本量足的情况下),上采样(样本数量不太足)
修改loss function,给不同权重
采样后的predict结果,用作排序OK,用作判定请还原
3.关于特征处理
离散化
映射到高维空间,用linear的LR(快,且兼具更好的分割性)
稀疏化,0,1向量内积乘法运算速度快,计算结果方便存储,容易扩展;
离散化后,给线性模型带来一定的非线性
模型稳定,收敛度高,鲁棒性好
在一定程度上降低了过拟合风险
通过组合特征引入个性化因素
注意特征的频度
区分特征重要度 可以产出层次判定模型
聚类/Hash
增强了极度稀疏的特征表达力 减小了模型,加速运算
4.关于算法调优
假设只看模型
选择合适的正则化(L1, L2, L1+L2)
正则化系数C
收敛的阈值e,迭代轮数
调整loss function给定不同权重
Bagging或其他方式的模型融合
最优化算法选择(‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’)
小样本liblinear,大样本sag,多分类‘newton-cg’和‘lbfgs’(当然你也可以用liblinear和sag的one-vs-rest)
相关文章推荐
- 各分类方法应用场景 逻辑回归,支持向量机,随机森林,GBT,深度学习
- 机器学习算法——LR(逻辑回归)
- 机器学习算法之: 逻辑回归 logistic regression (LR)
- 每日一个机器学习算法——LR(逻辑回归)
- 机器学习总结(二):线性回归、逻辑斯谛回归(LR)、softmax回归、过拟合
- 逻辑斯谛回归与最大熵分类模型
- 在opencv3中实现机器学习之:利用逻辑斯谛回归(logistic regression)分类
- 机器学习算法-逻辑回归(LR)
- 逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的
- 斯坦福机器学习-第三周(分类,逻辑回归,过度拟合及解决方法)
- 分类-逻辑斯谛回归
- 各分类方法应用场景 逻辑回归,支持向量机,随机森林,GBT,深度学习
- 面试中关于LR逻辑回归问题的整理
- 机器学习算法解析—逻辑回归分类
- 逻辑回归模型(Logistic Regression, LR)--分类
- python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)
- 机器学习博客整理:机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)
- 分类的线性模型:概率判别式模型之逻辑回归LR
- SAS逻辑回归之多分类
- WordPress中用于获取文章作者与分类信息的方法整理