l1约束的最小二乘学习

简介: ℓ1\ell_{1}Constrained Least Squares In sparse learning, ℓ1\ell_{1} constrained LS, also known as Lasso Regression, is a common learning method: minθJLS(θ)s.t.∥θ∥1≤R\min_{\theta} J_{LS}(\

1 Constrained Least Squares
In sparse learning, 1 constrained LS, also known as Lasso Regression, is a common learning method:

minθJLS(θ)s.t.θ1R
where
θ1=j=1b|θj|

Generally speaking, the solution of an 1 constrained LS is located on the axis, that is to say, there are several parameters θj equal to zero (sparse).
Then how to solve it? Given the indifferentiable property of the absolute value at the origin, solving an 1 constrained LS is not so easy as solving the 2 constrained one. However, we can still apply Lagrange multiplier.
minθJ(θ),J(θ)=JLS(θ)+λθ1

Note that
|θj|θ2j2cj+cj2,cj>0
i.e. we can optimize the upper-bound of J(θ) . By iteration, we take the current solution θ~j0 as cj so as to formulate the upper bound constraint:
|θj|θ2j2|θ~j|+|θ~j|2
If θ~j=0 , we should take θj=0 . When we use general inverse, the inequality above can be referred as:
|θj||θ~j|2θ2j+|θ~j|2

Therefore, we can get the following 2 regularized constrained LS problem formulation:
θ^=argminθJ~(θ),J~(θ)=JLS(θ)+λ2θTΘ~θ+C

where Θ~=|θ~1||θ~b| and C=bj=1|θ~j|/2 are independent of θ .

Take the parameterized linear model for example

fθ(x)=θTϕ(x)

Then, by the use of Lagrange multiplier, we can get
θ^=(ΦTΦ+λΘ~)1Φy

Renew the estimation θ~ as θ~=θ^ , go back to calculate the new θ^ until θ^ comes to the required precision.

For simplicity, the whole algorithm goes as follows:

  1. Initialize θ0 and i=1 .
  2. Calculate Θi using θi1 .
  3. Estimate θi using Θi .
  4. i=i+1 , go back to step 2.

An Example:

n=50; N=1000;
x=linspace(-3,3,n)'; X=linspace(-3,3,N)';
pix=pi*x;
y=sin(pix)./(pix)+0.1*x+0.2*rand(n,1);

hh=2*0.3^2; l=0.1; t0=randn(n,1); x2=x.^2;
k=exp(-(repmat(x2,1,n)+repmat(x2',n,1)-2*(x*x'))/hh);
k2=k^2; ky=k*y;
for o=1:1000
    t=(k2+l*pinv(diag(abs(t0))))\ky;
    if norm(t-t0)<0.001, break, end
    t0=t;
end
K=exp(-(repmat(X.^2,1,n)+repmat(x2',N,1)-2*X*x')/hh);
F=K*t;

figure(1); clf; hold on; axis([-2.8,2.8,-1,1.5]);
plot(X,F,'g-'); plot(x,y,'bp');

这里写图片描述

相关文章
|
缓存 Java 程序员
springboot的启动流程总结
springboot的启动流程总结
|
1月前
|
存储 人工智能 数据库
构建有记忆的 AI Agent:SQLite 存储 + 向量检索完整方案示例
本文介绍如何为AI Agent构建记忆系统,通过SQLite存储交互历史、向量数据库实现语义检索,结合LLM反思与总结,赋予Agent跨会话记忆、自我反思和目标追踪能力,使其从被动应答工具进化为可长期协作的智能伙伴。
189 2
|
SQL 数据可视化 前端开发
Springboot 整合 xxljob 使用定时任务调度(新手入门篇)
Springboot 整合 xxljob 使用定时任务调度(新手入门篇)
2138 0
Springboot 整合 xxljob 使用定时任务调度(新手入门篇)
|
9月前
|
算法 量子技术 决策智能
探索量子计算:从历史到现状
探索量子计算:从历史到现状
380 6
|
机器学习/深度学习 人工智能 算法
深度学习和强化学习有什么区别呢
【10月更文挑战第23天】深度学习和强化学习有什么区别呢
|
安全 算法 网络安全
C语言在安全领域的应用
本文探讨了C语言在网络安全中的应用,包括密码学算法实现、网络安全工具开发和安全协议实现。C语言因其高效性、可控性和跨平台性,常用于实现AES、RSA等加密算法,开发网络扫描器和入侵检测系统,以及实现SSL/TLS、IPSec等安全协议。代码示例展示了C语言如何进行AES加密解密。尽管C语言在安全领域有显著优势,但面对不断演变的威胁,持续学习和研究新的安全技术至关重要。
|
设计模式 安全 容器
数据结构第一篇【探究List和ArrayList之间的奥秘 】
数据结构第一篇【探究List和ArrayList之间的奥秘 】
135 5
|
Shell Python
GitHub星标破千Star!Python游戏编程的初学者指南
Python 是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。 目前的编程书籍大多分为两种类型。第一种,与其说是教编程的书,倒不如说是在教“游戏制作软件”,或教授使用一种呆板的语言,使得编程“简单”到不再是编程。而第二种,它们就像是教数学课一样教编程:所有的原理和概念都以小的应用程序的方式呈现给读者。
|
缓存 fastjson Java
FastJson - JSONPath 使用
FastJson - JSONPath 使用
1905 0
|
监控 关系型数据库 Linux
systemctl管理系统服务的详细用法
systemctl管理系统服务的详细用法
687 0