入门机器学习之——线性递归模型
一、实 验 目 的:
1、验证线性递归模型的理论算法;
2、调整实验参数,加深对线性递归模型的认识。
二、实 验 原 理
给定数据集D={(x1,y1),(x2,y2),……,(xm,ym)},其中xi=(xi1;xi2;xi3,……,xid),yi∈R.线性回归试图学得一个线性模型以尽可能的预测实值输出标记。
1、线性回归是回归问题中的一种,线性回归假设目标值与特征之间线性相关,一般形式满足多元一次方程。通过构建损失函数,求解损失函数最小值时的参数b。一般形式如下:利用
使得
。其中,其中 f(x)为预测值,自变量 x和因变量y已知,为预测新增一个x,求对应的y值。为构建这个函数关系,目标是通过已知数据点,求解线性模型中w和 b两个参数。有m个样本,每个样本对应于一个n维特征和一个结果输出。
2、参数/模型估计:最小二乘法(least square method)
试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。

最小化均方误差:

分别对w和b求导,可得


三、实 验 设 备 与 器 件
PC机、 MATLAB软件。
四、实 验 内 容 与 参 数 分 析
1、实验内容:在0-1之间生成500个数,接着利用相关公式观察实际函数与预测函数之间的差别,调试相关参数后所描绘出来的图形相较于之前有哪些明显的变化。
2、参数分析:在实验中x:生成的数据集,a,m,b分别是多项式函数模型中的各个系数,其中,y0这个函数是数据集的预测值结果汇总,其中yR是拟合线,经过实验代码的运行,描绘出如下图形:



在上方的图片中表示线性回归图,那其中横坐标表示生成数据的范围,纵坐标表示因变量的值,Data表示的是所生成的数据,fit表示符合程度。。
当把生成数据集的范围和生成数据集的数量适当扩大之后,代码运行的结果与上面的有着很大的变化幅度。生成的实际值与符合程度相差较大。
实验代码:
%% LinearRegression Script that demonstrates linear regression
% Fit a linear model to linear or quadratic data
%% Generate the data and perform the regression
x = linspace(0,1,500)';
n = length(x);
% Model a polynomial, y = ax2 + mx + b
a = 1.0; % quadratic - make nonzero for larger errors
m = 1.0; % slope
b = 1.0; % intercept
sigma = 0.1; % standard deviation of the noise
y0 = a*x.^2 + m*x + b;
y = y0 + sigma*randn(n,1);
% Perform the linear regression using pinv
a = [x ones(n,1)];
c = pinv(a)*y;
yR = c(1)*x + c(2); % the fitted line
%% Generate plots
h = figure;
h.Name = 'Linear Regression';
plot(x,y); hold on;
plot(x,yR,'linewidth',2);
grid on
xlabel('x');
ylabel('y');
title('Linear Regression');
legend('Data','Fit')
figure('Name','Regression Error')
plot(x,yR-y0);
grid on
xlabel('x');
ylabel('\Delta y');
title('Error between Model and Regression')
更多推荐



所有评论(0)