吴恩达机器学习系列理论加实践(二 、单变量线性回归及matlab实践)
二、单变量线性回归
2.1模型表示
同样以之前的房屋价格预测实例开始:
通过学习算法利用训练集训练模型h,对于新输入的数据size of house就可以输出其预测值price;
如何表达这个模型h:
2.2 cost损失函数
表示什么意思呢:首先2.1我们给出了模型预测函数h,其预测输出值即h(这里表示预测的房价),而y表示真实的房价,他们之间差值的平方即表示此预测函数的代价函数,如上式子;
1/m是表示取所有预测差值平方的均值,1/2是为了后续便于计算并无特殊含义;示意图如下:
如上等高线表示了取不同的参数theta0/1对于最终代价函数J()的影响值;
我们的目标就是是代价函数最小。
2.3代价函数的直观理解
如上图所示学习到的模型h及真实的数据红叉之间的关系,当两者完全重合时,其代价函数(平方误差和)是为0的,而当其h的参数theta偏离1时其代价是逐步增加的(如右上图)
2.4梯度下降
以上有了代价损失函数h,而我们的目标是使其最小化,而如何使其最小化呢:
刚开始的时候我们随机初始化参数theta0/1得到代价函数值很大,此时我们的目标就是更新参数使其代价函数值下降最多,而下降最多的方向就是其点的负梯度方向:(对于不同的初始点,负梯度方向不同,最后得到的最优值可能不同,也就是局部最优点,如何寻找最优后续讨论)
如上是一个迭代的过程,每更新一次找到最优的下降方向走一步,下一步同样基于当前的找负梯度方向进行进一步的更新;
如上求偏导再取负即是负梯度方向,乘子alpha表示我们每一步更新向前更新多少(具体取值后续讨论),不断循环迭代直到收敛;
2.5梯度下降的直观理解
梯度下降即取负梯度方向,也即求导取负:
根据如上图分析:对于alpha(又叫学习率)的取值,如果太小则每次更新很小一步需要迭代很多次才能达到最低点,而如果alpha取太大则更新的时候可能会越过最低点而造成来回震荡,导致无法收敛;
再次分析如上梯度下降方法,当我们逐步逼近最低点的时候,其导数是越来越小的(平缓),当步长不变时其实其更新同样是逐步减小的直到达到最低点即完成收敛;(这与上面的说alpha取值较大时函数不收敛是不冲突的,因为alpha取值过大的话其更新直接越过平滑处,其导数是不会减小的)
2.7梯度下降的线性回归
如上我们讲了线性回归模型及梯度下降法,那么我们将其二者结合:
其实也就是一个求导更新迭代的过程:
(在这里那个1/2与平方就直接约掉了)
则整体算法变成了:
这一讲主要讲解了线性回归模型的整体训练过程,有了线性模型的定义,然后参数初始化、定义代价函数、利用梯度下降迭代、进行参数更新以至代价最小化达到收敛;
%matlab实践A=eye(5); %5*5对角矩阵%加载数据并绘画
data=load('ex1data1.txt');
X=data(:,1);y=data(:,2);
plot(X,y,'gX','MarkerSize',5); %g表示颜色,X表示显示形状,后面为形状大小
ylabel('Profit in $10000s');
xlabel('Population of City in 10000s');%Cost and Gradient descent
m=length(y);
X=[ones(m,1),data(:,1)]; %增加一列代表偏置
theta=zeros(2,1);iter=1500;
alpha=0.01;J=sum(power(X*theta-y,2))/(2*m); %损失函数
%梯度下降迭代更新参数
J_history=zeros(iter,1);
for iter2=1:itert1=theta(1)-alpha*sum(X*theta-y)/m; %偏置b求导结果t2=theta(2)-alpha*sum((X*theta-y).*X(:,2))/m; % .*表示对应元素相乘theta(1)=t1;theta(2)=t2;J_history(iter2)=sum(power(X*theta-y,2))/(2*m); %记录每一轮迭代的损失值hold on; % keep previous plot visible
plot(X(:,2), X*theta, '-')
legend('Training data', 'Linear regression')
hold off % don't overlay any more plots on this figure%根据训练得到的参数theta,可以进行相关预测
predict1=[1,3.5]*theta;
fprintf(predict1);%三维绘画损失函数
theta0=linspace(-10,10,100); %-10到10等分100份
theta1=linspace(-1,4,100);J_vals=zeros(length(theta0),length(teta1));
for i =1:length(theta0)for j=1:length(theta1)t=[theta(i);theta(j)];J_val(i,j)=sum(power(X*t-y,2))/(2*m);end
endJ_vals=J_vals';
surf(theta0,theta1,J_vals)
xlabel('theta0');ylabel('theta1');%标准化
mu=zeros(1,size(X,2)); %初始化均值方差,其列数等于X列数(取列的均值方差)
sigma=zeros(1,size(X,2));mu=mean(X);
sigma=std(X);
X_norm=(X-ones(size(X,1),1)*mu)./(ones(size(X,1),1)*sigma); %注意为点除
下一讲主要是讲解一些线性代数的基本知识,比较简单、有相关基础的可以直接略过。
吴恩达机器学习系列理论加实践(二 、单变量线性回归及matlab实践)相关推荐
- 吴恩达机器学习学习笔记第二章:单变量线性回归
模型描述: 训练集(training set):是监督学习中独有的概念,由我们人喂给电脑的既有既有特征x又有结果y的数据.下图x是房子面积 ,y是房屋对应的价格 符号记法解释: (x^(1),y^(1 ...
- 【吴恩达机器学习】学习笔记——2.1单变量线性回归算法
1 回顾 1.1 监督学习 定义:给定正确答案的机器学习算法 分类: (1)回归算法:预测连续值的输出,如房价的预测 (2)分类算法:离散值的输出,如判断患病是否为某种癌症 1.2 非监督学习 定义: ...
- 【吴恩达机器学习笔记】1引言、单变量线性回归、线性代数回顾
1引言(Introduction) 1.1欢迎(Welcome) 1.2机器学习是什么(What is machine learning?) Arthur Samuel(1959):机器学习是在没有进 ...
- 吴恩达机器学习系列篇p31~p42
文章目录 逻辑回归 矢量 分类 s型函数 决策界限 代价函数 优化 过拟合问题 逻辑回归 吴恩达机器学习系列篇p31~p42 矢量 octave c++ 分类 · 0 1 分类 ### 直线回归 对于 ...
- 吴恩达机器学习系列23:基于内容的推荐算法
如今,推荐算法已经深入到我们生活的各个方面,比如说淘宝根据我们之前的浏览记录给我们推荐想要购买的商品:抖音不停地给我们推荐各种我们感兴趣的视频(虽然我个人不太喜欢抖音,觉得抖音会让我们丧失独立思考的能 ...
- 【吴恩达机器学习】第二周课程精简笔记——多元线性回归和计算参数分析
1. Multivariate Linear Regerssion(多元线性回归) (1)Multiple Feature We now introduce notation for equation ...
- 吴恩达机器学习系列课程笔记——第十六章:推荐系统(Recommender Systems)
16.1 问题规划 https://www.bilibili.com/video/BV164411b7dx?p=96 在接下来的视频中,我想讲一下推荐系统.我想讲推荐系统有两个原因: 第一.仅仅因为它 ...
- 吴恩达机器学习系列课程笔记——第十一章:机器学习系统的设计(Machine Learning System Design)
11.1 首先要做什么 https://www.bilibili.com/video/BV164411b7dx?p=65 在接下来的视频中,我将谈到机器学习系统的设计.这些视频将谈及在设计复杂的机器学 ...
- 吴恩达机器学习系列课程--个人笔记
网址:https://www.bilibili.com/video/av50747658/ (b站找的有中文字幕的视频) 第一周 一.引言 1.1 欢迎 1.2 机器学习是什么 1.3 监督学习 1. ...
最新文章
- tp5实现Redis的简单使用
- C++中.lib静态库、.dll动态库的生成及调用1
- 加快Android Studio的编译速度
- .Net架构篇:实用中小型公司支付中心设计
- mysql select null 0,查询值中为NULL,在MySQL中产生0.00
- pandas基础知识--1
- [转] 电子技术*笔记4【2013-03】
- python局域网alive ip侦听
- 用html设计前台界面,UI设计系列:WEB前端界面设计
- 计算机系统工具没有用户,联想电源管理软件没了怎么办_联想电脑自带的电源管理软件不见了如何找回-win7之家...
- 联想电脑BIOS失败教程
- 基于微信校园二手书交易小程序系统 毕业设计毕设参考
- ARM裸机篇(三)——i.MX6ULL第一个裸机程序
- springboot医院预约挂号系统在线视频点播系统毕业设计毕设作品开题报告开题答辩PPT
- I2C-两线外设接口-用于ArduinoNano, uno ,Mega2560
- 整理了一下oxidized+mysql+gitlab,感觉很好用,做个记录
- HP Unix 命令整理
- 制作稳定版本的rootfs
- 页面搜索引擎优化技术将提升你的排名
- 完美解决:Chrome无法显示鼠标
热门文章
- python sys stdout_关于sys.stdout和print的区别详解
- java后台生成微信二维码,打不开图片
- android 双sd卡,华为Mate7如何实现双卡双待同时插入SD卡 华为Mate7双卡双待使用教程...
- 强网杯 2019]随便注 【SQL注入】四种解法
- 2018年华为已无法超越苹果
- 什么叫干扰?有何危害?
- 后缀数组的基数排序实现
- 设置webhook_[配置] Webhook 端口
- 设置webhook_使用 WebHook 来自动部署 NodeJS 项目!
- 计算机excel和word,【2人回答】我的电脑上的Word和Excel没有了该怎么办?-3D溜溜网...