机器学习算法——lasso


一、lasso

   前面已经叙述了基本的线性回归,局部加权线性回归,以及岭回归。其中,局部加权线性回归做的工作就是进行了特征的选择,选择的策略是进行局部的约束;岭回归是采用的正则化的方法进行特征的选择,使用的是。而lasso采用的则是,即lasso是在平方误差的基础上增加

对于这样的一种优化问题,其实是很难求解的,因为这样的优化问题不再是一个凸优化问题。为了求解这样的问题,一些近似的优化算法被采用。或者可以采用一些简单的方法来近似这样的优化过程。

二、前向逐步回归

   前向逐步回归算法可以得到与lasso差不多的效果,但是前向逐步回归更加简单。这是一种贪心算法,在每一步尽量减少误差。

(前向逐步回归流程)

三、实验

1、Matlab实现

主程序

[plain]  view plain  copy
  1. clear all;  
  2. clc;  
  3. %% 导入数据  
  4. data = load('abalone.txt');  
  5. x = data(:,1:8);  
  6. y = data(:,9);  
  7. %% 处理数据  
  8. yMean = mean(y);  
  9. yDeal = y-yMean;  
  10. xMean = mean(x);  
  11. xVar = var(x,1);  
  12. [m,n] = size(x);  
  13. xDeal = zeros(m,n);  
  14. for i = 1:m  
  15.     for j = 1:n  
  16.         xDeal(i,j) = (x(i,j)-xMean(j))/xVar(j);  
  17.     end  
  18. end  
  19.   
  20. %% 训练  
  21. runtime  = 5000;%迭代的步数  
  22. eps = 0.001;%调整步长  
  23. wResult = stageWise(xDeal, yDeal, eps, runtime);  
  24.   
  25. %% 根据wResult画出收敛曲线  
  26. hold on   
  27. xAxis = 1:runtime;  
  28. for i = 1:n  
  29.     plot(xAxis, wResult(:,i));  
  30. end  


前向逐步回归函数

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. function [ wResult ] = stageWise( x, y, eps, runtime)  
  2.     [m,n] = size(x);%数据集的大小  
  3.     wResult = zeros(runtime, n);%最终的结果  
  4.     w = zeros(n,1);  
  5.     wMax = zeros(n,1);  
  6.     for i = 1:runtime  
  7.         ws = w'%输出每一次计算出来的权重  
  8.         lowestError = inf;%定义最小值  
  9.         for j = 1:n  
  10.             for sign = -1:2:1  
  11.                 wTest = w;%初始化  
  12.                 wTest(j) = wTest(j)+eps*sign;%只改变一维变量  
  13.                 yTest = x*wTest;  
  14.                 %求误差  
  15.                 rssE = rssError(y, yTest);  
  16.                 if rssE < lowestError%如果好,就替换  
  17.                     lowestError = rssE;  
  18.                     wMax = wTest;  
  19.                 end  
  20.             end  
  21.         end  
  22.         w = wMax;  
  23.         wResult(i,:) = w;  
  24.     end  
  25. end  


误差函数

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. %% rssError函数主要是利用均方误差  
  2. function [ error ] = rssError( y, yTest )  
  3.     yDis = y-yTest;%误差  
  4.     [m,n] = size(yDis);  
  5.     %求平方  
  6.     for i = 1:m  
  7.         yDis(i) = yDis(i)^2;  
  8.     end  
  9.     error = sum(yDis);%求列和  
  10. end  


2、收敛曲线




转自: http://blog.csdn.net/google19890102/article/details/41412631

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习算法有很多种,以下是其中一些常见的算法及其衍生算法: 1. 线性回归(Linear Regression):基础的机器学习算法,用于解决连续型变量的预测问题。其衍生算法包括岭回归(Ridge Regression)、套索回归(Lasso Regression)等。 2. 逻辑回归(Logistic Regression):用于解决分类问题,主要应用于二分类问题。其衍生算法包括多项式逻辑回归(Polynomial Logistic Regression)等。 3. 决策树(Decision Tree):用于处理分类问题和回归问题,通过一系列的判断条件构建决策树,从而实现对数据的分类和预测。其衍生算法包括随机森林(Random Forest)、梯度提升树(Gradient Boosting Tree)等。 4. 支持向量机(Support Vector Machine):用于解决分类和回归问题,通过寻找最优的分类边界来实现分类或预测。其衍生算法包括核支持向量机(Kernel SVM)等。 5. 聚类算法(Clustering):用于对数据进行分组,将相似的数据归为一类,不同的数据归为不同的类别。其衍生算法包括层次聚类(Hierarchical Clustering)、K-Means 等。 6. 神经网络(Neural Network):用于解决分类和回归问题,通过模拟人脑的神经元工作原理,实现对数据的分类和预测。其衍生算法包括卷积神经网络(Convolutional Neural Network)、循环神经网络(Recurrent Neural Network)等。 这些算法及其衍生算法在实际应用中都有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值