简单易学的机器学习算法——lasso
时间:2022-05-04
本文章向大家介绍简单易学的机器学习算法——lasso,主要内容包括一、lasso、二、前向逐步回归、三、实验、2、收敛曲线、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
一、lasso
二、前向逐步回归
前向逐步回归算法可以得到与lasso差不多的效果,但是前向逐步回归更加简单。这是一种贪心算法,在每一步尽量减少误差。
三、实验
1、Matlab实现
主程序
clear all;
clc;
%% 导入数据
data = load('abalone.txt');
x = data(:,1:8);
y = data(:,9);
%% 处理数据
yMean = mean(y);
yDeal = y-yMean;
xMean = mean(x);
xVar = var(x,1);
[m,n] = size(x);
xDeal = zeros(m,n);
for i = 1:m
for j = 1:n
xDeal(i,j) = (x(i,j)-xMean(j))/xVar(j);
end
end
%% 训练
runtime = 5000;%迭代的步数
eps = 0.001;%调整步长
wResult = stageWise(xDeal, yDeal, eps, runtime);
%% 根据wResult画出收敛曲线
hold on
xAxis = 1:runtime;
for i = 1:n
plot(xAxis, wResult(:,i));
end
前向逐步回归函数
function [ wResult ] = stageWise( x, y, eps, runtime)
[m,n] = size(x);%数据集的大小
wResult = zeros(runtime, n);%最终的结果
w = zeros(n,1);
wMax = zeros(n,1);
for i = 1:runtime
ws = w'%输出每一次计算出来的权重
lowestError = inf;%定义最小值
for j = 1:n
for sign = -1:2:1
wTest = w;%初始化
wTest(j) = wTest(j)+eps*sign;%只改变一维变量
yTest = x*wTest;
%求误差
rssE = rssError(y, yTest);
if rssE < lowestError%如果好,就替换
lowestError = rssE;
wMax = wTest;
end
end
end
w = wMax;
wResult(i,:) = w;
end
end
误差函数
%% rssError函数主要是利用均方误差
function [ error ] = rssError( y, yTest )
yDis = y-yTest;%误差
[m,n] = size(yDis);
%求平方
for i = 1:m
yDis(i) = yDis(i)^2;
end
error = sum(yDis);%求列和
end
2、收敛曲线
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- js DOM系统
- css的radial-gradient大详解
- 你想知道的优惠券业务,SkrShop告诉你
- js汇率计算器系统
- 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)
- JS逐步教你做(自己版本)的视频播放器(我先声明,step我不懂是什么意思,所以没用)
- 【mysql系列】细谈“explain”之理论Part
- 如果用java swing编写一个五子棋(人人对战)
- 【mysql系列】细谈explain执行计划之“谜”
- 洛谷 P1352 没有上司的舞会(树形 DP)
- CF思维联系– CodeForces - 991C Candies(二分)
- 洛谷P1122 最大子树和 树形DP初步
- JAVA_WEB--jsp语法
- 图论--树的直径--DFS+树形DP模板
- js逐步教你实现原生电影院系统