吴恩达机器学习训练1:线性回归(单变量)

                         吴恩达机器学习训练1:线性回归(单变量)
   本小节主要讲解的是如何利用已知的数据进行简单的线性回归分析,主要分析了梯度下降法和正规方程法两种。

线性回归分析即利用多项式函数逼近已知数据,常用来预测。例如,当已知某地区房子大小、房间数、地理位置等信息以及该房子的价格时,就可以用来预测其它房子的价格。将房子大小、房间数、地理位置作为特征参数,用矩阵X表示,将房子的价格作为预测值,用y表示,即为数学上的拟合。
要拟合已有数据,则需要有两个前提。一是假设的数学模型,如直线型、抛物线型或高次型;二是拟合效果的判断,即损失函数,使用拟合的模型拟合出来的偏差度。
数学上常使用平均偏差作为损失函数,即拟合模型计算出来的值与实际的值平方和的均值,记损失函数为:
在这里插入图片描述

此处h为拟合模型函数,m为数据的总数。
则拟合的最终目的是求得J最小值时的函数,此处有两种方法:梯度下降法和正规方程法。
1、梯度下降法:给定theta参数的初值,由程序迭代完成损失函数J最小值的寻找。
在这里插入图片描述

此处alpha为学习速率,需选择合适的值,若alpha过大,则可能会跳过最小值点,若alpha过小,则迭代需要较长的时间。
2、正规方程法:直接由矩阵计算求得。

在这里插入图片描述
在这里插入图片描述
Part 1: Basic Function
fprintf(‘Running warmUpExercise … \n’);
fprintf(‘5x5 Identity Matrix: \n’);
warmUpExercise()

fprintf(‘Program paused. Press enter any key to continue.\n’);
此处是为了产生一个5*5的单位矩阵,可以使用eye()函数,
A = eye(5);
输出为:
Running warmUpExercise …
5x5 Identity Matrix:

ans =

 1     0     0     0     0
 0     1     0     0     0
 0     0     1     0     0
 0     0     0     1     0
 0     0     0     0     1

Program paused. Press enter any key to continue.
Part 2: Plotting
fprintf(‘Plotting Data …\n’)
data = load(‘ex1data1.txt’);
X = data(:, 1);
y = data(:, 2);
m = length(y);
plotData(X, y);
fprintf(‘Program paused. Press enter to continue.\n’);

此处为作2D图像,其横坐标为X,纵坐标为y。
figure; % open a new figure window
plot(x,y,‘rx’,‘MarkerSize’,10);
xlabel(‘Population of City in 10,000s’);
ylabel(‘Profits in $10,000s’);
title(‘The relationship of the population and revenue’)
在这里插入图片描述

Part 3: Cost and Gradient descent
X = [ones(m, 1), data(:,1)]; % Add a column of ones to x
theta = zeros(2, 1); % initialize fitting parameters
iterations = 1500;
alpha = 0.01;
首先计算其损失值,采用矩阵的转置计算平方项得;
J = (Xtheta - y)’(Xtheta - y)/(2m);
theta = [0 ; 0]时,J=32.072734;
theta = [0 ; 0]时,J= 54.242455;
采用梯度下降法进行计算;
theta = theta - X’(Xtheta-y)*alpha/m;
通过1500次迭代计算后,theta值为(-3.630291,1.166362)’
将该拟合直线绘制在图上有:
在这里插入图片描述

绘制损失值随着迭代次数的变化曲线有:
figure;
plot(1:iterations,J_history,’-’);
xlabel(‘µü´ú´ÎÊý’);
ylabel(‘Ëðʧֵ’);
grid on;
在这里插入图片描述
可以看到损失值随着迭代的次数增加而收敛。
分别对35000和70000的城市盈利进行预测:
predict1 = [1, 3.5] *theta;
predict2 = [1, 7] * theta;
For population = 35,000, we predict a profit of 4519.767868
For population = 70,000, we predict a profit of 45342.450129

Part 4: Visualizing J(theta_0, theta_1)
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值