Proximal Gradient Descent for L1 Regularization(近端梯度下降求解L1正则化问题)
假设我们要求解以下的最小化问题: $min_xf(x)$
如果$f(x)$可导,那么一个简单的方法是使用Gradient Descent (GD)方法,也即使用以下的式子进行迭代求解:
$x_{k+1} = x_k - a\Delta f(x_k)$
如果$\Delta f(x)$满足L-Lipschitz,即:

那么我们可以在点$x_k$附近把$f(x)$近似为:

把上面式子中各项重新排列下,可以得到:

这里$\varphi (x_k)$不依赖于x,因此可以忽略。
显然,$\hat f(x, x_k)$的最小值在
获得。所以,从这个角度看的话,GD的每次迭代是在最小化原目标函数的一个二次近似函数.(梯度下降的由来的推导,这里说的不好,参考这里: http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/7274943.html)
在很多最小化问题中,我们往往会加入非光滑的惩罚项$g(x)$, 比如常见的L1惩罚: $g(x) = ||x||_1$ .这个时候,GD就不好直接推广了。但上面的二次近似思想却可以推广到这种情况:

这就是所谓的Proximal Gradient Descent (PGD)算法,即目标函数由损失项和正则项组成。对于上式,可先计算$z = x_k - \frac{1}{L}\Delta f(x_k)$, 然后求解


软阈值(SoftThresholding)可以求解如下优化问题:

其中:

根据范数的定义,可以将上面优化问题的目标函数拆开:
也就是说,我们可以通过求解N个独立的形如函数
的优化问题,来求解这个问题。由中学时代学过的求极值方法知道,可以求函数f(x)导数:
令函数f(x)导数等于0,得:
这个结果等号两端都有变量x,需要再化简一下。下面分三种情况讨论:
(1)当b>λ/2时
假设x<0,则sgn(x)=-1,所以x=b+λ/2>0,与假设x<0矛盾;(λ > 0)
假设x>0,则sgn(x)=1,所以x=b-λ/2>0,成立;
所以此时在x=b-λ/2>0处取得极小值:
即此时极小值小于f(0),而当x<0时
即当x<0时函数f(x)为单调降函数(对任意△x<0,f(0)<f(△x))。因此,函数在x=b-λ/2>0处取得最小值。
(2)当b<-λ/2时
假设x<0,则sgn(x)=-1,所以x=b+λ/2<0,成立;
假设x>0,则sgn(x)=1,所以x=b-λ/2<0,与假设x>0矛盾;
所以此时在x=b+λ/2<0处取得极小值:
即此时极小值小于f(0),而当x>0时
即当x>0时函数f(x)为单调升函数(对任意△x>0,f(△x)>f(0))。因此,函数在x=b+λ/2<0处取得最小值。
(3)当-λ/2<b<λ/2时(即|b|<λ/2时)
假设x<0,则sgn(x)=-1,所以x=b+λ/2>0,与假设x<0矛盾;
假设x>0,则sgn(x)=1,所以x=b-λ/2<0,与假设x<0矛盾;
即无论x为大于0还是小于0均没有极值点,那么x=0是否为函数f(x)的极值点呢?
对于△x≠0,
当△x >0时,利用条件b<λ/2可得
当△x <0时,利用条件b<λ/2可得(注:此时|△x |=-△x)
因此,函数在x=0处取得极小值,也是最小值。
综合以上三种情况,f(x)的最小值在以下位置取得:
至此,我们可以得到优化问题
的解为
http://blog.csdn.net/bingecuilab/article/details/50628634
http://blog.csdn.net/jbb0523/article/details/52103257
Proximal Gradient Descent for L1 Regularization(近端梯度下降求解L1正则化问题)的更多相关文章
- 机器学习算法整理(二)梯度下降求解逻辑回归 python实现
逻辑回归(Logistic regression) 以下均为自己看视频做的笔记,自用,侵删! 还参考了:http://www.ai-start.com/ml2014/ 用梯度下降求解逻辑回归 Logi ...
- Proximal Gradient Descent for L1 Regularization
[本文链接:http://www.cnblogs.com/breezedeus/p/3426757.html,转载请注明出处] 假设我们要求解以下的最小化问题: ...
- 近端梯度算法(Proximal Gradient Descent)
L1正则化是一种常用的获取稀疏解的手段,同时L1范数也是L0范数的松弛范数.求解L1正则化问题最常用的手段就是通过加速近端梯度算法来实现的. 考虑一个这样的问题: minx f(x)+λg(x) x ...
- 采用梯度下降优化器(Gradient Descent optimizer)结合禁忌搜索(Tabu Search)求解矩阵的全部特征值和特征向量
[前言] 对于矩阵(Matrix)的特征值(Eigens)求解,采用数值分析(Number Analysis)的方法有一些,我熟知的是针对实对称矩阵(Real Symmetric Matrix)的特征 ...
- [Python]数据挖掘(1)、梯度下降求解逻辑回归——考核成绩分类
ps:本博客内容根据唐宇迪的的机器学习经典算法 学习视频复制总结而来 http://www.abcplus.com.cn/course/83/tasks 逻辑回归 问题描述:我们将建立一个逻辑回归模 ...
- 关于subGradent descent和Proximal gradient descent的迭代速度
clc;clear; D=1000;N=10000;thre=10e-8;zeroRatio=0.6; X = randn(N,D); r=rand(1,D); r=sign(1-2*r).*(2+2 ...
- 线性回归、梯度下降(Linear Regression、Gradient Descent)
转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...
- 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测
线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...
- 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Gradient Descent ...
随机推荐
- mysql中常用函数简介(不定时更新)
常用函数version() 显示当前数据库版本database() 返回当前数据库名称user() 返回当前登录用户名inet_aton(IP) 返回IP地址的数值形式,为IP地址的数学计算做准备in ...
- lnmp一键安装包 虚拟主机问题
lnmp一键安装包淌过的坑 --手动虚拟主机配置 安装一键包的时候教程 官网也有虚拟主机的教程 一下示例: 后来自己手动去做 就遇到了一个大家都遇到的问题 及时安装让nginx支持解析PHP脚本解析 ...
- 【linux】【网络安全】linux中怎样关闭ICMP回应功能
引用自:http://blog.csdn.net/qq844352155/article/details/49700121 linux中怎样关闭ICMP回应功能 输入: echo ...
- Python中如何将数据存储为json格式的文件
一.基于json模块的存储.读取数据 names_writer.py import json names = ['joker','joe','nacy','timi'] filename='names ...
- 算法学习记录-排序——选择排序(Simple Selection Sort)
之前在冒泡排序的附录中提到可以在每次循环时候,不用交换操作,而只需要记录最小值下标,每次循环后交换哨兵与最小值下标的书, 这样可以减少交换操作的时间. 这种方法针对冒泡排序中需要频繁交换数组数字而改进 ...
- Window Phone 8手电筒
一直想开发一个Wp8的手电筒程序,看了好多别人开发的基本上有以下问题: 1.锁屏闪光灯关闭了 2.闪光灯不停的闪烁. 我就想开发一个锁屏也能用的手电筒,发现找资料那是相当的困难.找到的代码基本都不能令 ...
- IOS 自动布局-UIStackPanel和UIGridPanel(四)
为什么说scrollview的自动化布局是难点? 对scrollview做自动化布局,无非就是想对scrollview里面的subviews来做自动化布局.但是scrollview里面的subview ...
- 图论trainning-part-1 H. Qin Shi Huang's National Road System
H. Qin Shi Huang's National Road System Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO f ...
- ubuntu14.04LTS root登录出现错误
输入root帐号和密码,出现以下错误: Error found when loading /root/.profile stdin:is not a tty 解决方法: 在终端中用命令:gedit / ...
- 贴一下我写过的c++程序代码
5258 #include <iostream>#include <iomanip>#include <cmath>using namespace std;clas ...