LR(Logistic Regression)算法详解
来源:互联网 发布:运维可以学windows吗 编辑:程序博客网 时间:2024/05/16 11:40
Logistic Regression本质上还是Linear Regression的一种,只是用了一个Logistic Function将线性回归的连续值映射到了
因此说白了,Logistic Regression就是视图找到不同类别之间的线性决策边界。
1. Logistic Regression的引出
对于
再定义一个让步比
其中
在Logistic Regression问题中,因变量
基于以上思想,为了将自变量的线性模型和伯努利分布联系起来,我们需要一个函数来将线性模型映射到一个
此时
也就是著名的
其中
2. 极大似然估计(MLE )
对于给定的一堆样本点,若已知其为第1类,但是我们的模型并不会算出是1,而是会根据自变量得出一个概率值。此概率为:
因此逻辑回归就是要求
假设概率
合并为:
损失函数为:
这个式子计算不方便,我们对其进行求对数:
然后对
由于这里求最大值,因此是加号:
通过用类似线性回归的不断迭代,最终可以求出
3. 正则化
为了避免模型的过拟合,需要加上正则项,则:
常用的正则化方法有2个,分别是
+ L1
- L2
θ=argminθ∑i=1m[y(i)ln(hθ(x(i)))+(1−y(i))ln(1−hθ(x(i)))]+λ∑i=0kθ2i
适用情况如下:
4. 牛顿法求解
牛顿法是一种进行
4.1 Hessian
Hessian是一个多变量实值函数的二阶偏导数组成的方块矩阵,假设有一实数函数
其中
Hessian matrix在用牛顿法解决大规模优化问题时经常用到。
4.2 牛顿法步骤:
不断进行下面的迭代:
其中
def new_step(curr_beta, X, lam=None): p = np.array(sigmod(X.dot(curr[:,0])), ndmin=2).T #计算新的概率p W = np.diag((p(1-p))[:, 0]) #计算新的权重 hessian = X.T.dot(W).dot(X) #计算当前权重的hessian矩阵 grad = X.T.dot(y-p) #计算梯度 if lam: #正则化 step, *_ = np.linalg.lstsq(hessian + lam*np.eye(curr_beta.shape[0]), grad) else: step, *_ = np.linalg.lstsq(hessian, grad) beta_new = curr_beta + step return beta_newbeta_old, beta = np.ones((len(X.columns),1)), np.zeros((len(X.columns),1))coefs_converged = Falsewhile not coefs_converges: beta_old = beta beta = newton_step(beta, X, lam=lam) coef_converged = check_coefs_convergence(beta_old, beta, tolerance, itercount)
- LR(Logistic Regression)算法详解
- Logistic Regression(LR)杂记
- Logistic Regression(LR)
- 机器学习算法之: 逻辑回归 logistic regression (LR)
- LR逻辑回归Logistic Regression
- LR(Logistic Regression)深入理解
- 逻辑回归模型(Logistic Regression, LR)基础
- 逻辑回归模型(Logistic Regression, LR)
- 逻辑回归模型(Logistic Regression, LR)基础
- LR(Logistic Regression)深入理解 (续)
- 逻辑回归模型(Logistic Regression, LR)
- 逻辑回归模型(Logistic Regression, LR)基础
- 逻辑回归模型(Logistic Regression, LR)基础
- 逻辑回归模型(Logistic Regression, LR)基础
- Logistic Regression 分类算法
- Logistic Regression 算法学习
- Logistic Regression详解
- Logistic Regression详解
- io-4-netty-入门程序
- iOS_模拟KVO的底层实现、手动实现KVO(附源码)
- HDU-2112 HDU Today 最短路
- 七日牧函】再说说长老会的好处
- javascript+html实现遮罩层效果
- LR(Logistic Regression)算法详解
- servlet之JDBC操作
- Centos7安装mysql
- parseInt、valueof和toString的介绍
- jsoncpp在linux和windows下的编译及使用详解
- JSP标准标签库(JSTL)core、format
- 给小涵同学的Java入门学习笔记之起步篇
- STL的stack和queue读书笔记
- 【剑指offer】面试题11:旋转数组的最小数字