前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第二篇:《机器学习之线性回归》

第二篇:《机器学习之线性回归》

作者头像
ACM算法日常
发布2018-08-07 17:01:33
3630
发布2018-08-07 17:01:33
举报
文章被收录于专栏:ACM算法日常ACM算法日常

“线性回归是啥?”

这是你们即将学习的第一个最基础的机器学习算法

在它的基础之上发展得到的便是逻辑回归算法——构建神经网络模型最为基础的单元

让我们来深入地学习它吧!

第二篇还是以概念和公式为主

因为这是很基础的知识,一定要掌握哦

学术上:

线性回归属于回归问题

它包含一元线性回归和多元线性回归

形象讲解开始:

我们先从一元的线性回归下手

参见上一篇《初探篇》里对用于模型训练的样本的定义,样本可以是音频、图片、点集等等,这里我用一个简单的点集作为我们的样本解释,如图

你们看这些离散的点有各自的坐标值,其实这就是一组很小型的数据了,你完全可以类比实际应用的值

(这里用Andrew Ng教授很喜欢的房价比喻来解释吧)

比如这些点的横轴值

你可以理解为某地的房屋使用面积

纵轴值表示的是对应的价格

可以看到随着面积的增长,价格的波动上涨

(暂时不考虑其他影响价格发展不均匀的因素或者特征值吧)

在这里面积就是要输入模型里的特征值,未来神经网络就会经过这些面积的反复训练,让自己得到的房价(预测值)不断地接近纵轴的房价(实际的值)

其实一元线性回归也在干这样的事情

我们要如何得出自己的预测数据用来和真实值比较呢?答案是,画一条直线呗,如图

开始的时候这条直线和真实值的差距可能很大,经过我们的训练(调整这条直线的参数)使得我们的直线(预测值)和真实值的差距不断趋向最小,就变成图中的样子了!

机器学习里一元线性回归方程的表示为:

hθ (x)= θ0+ θ1*x

θ0 θ1就是影响预测值的参数

θ1 表示输入的特征值x对预测值影响的程度(权重

θ0 用来上下调整整个模型(截距

如果有多种特征值呢?

也就是说决定价格的有多种因素

比如有面积X1地理位置X2两个

那应该怎么解决呢?——画一个切面

Y还是我们的房价

受两种参数影响的离散分布如图

我们通过调整三个参数得到一个切面

表示对于每一组特征值(X1 X2)的预测值

二元的线性回归方程

令X0 =1便得到第二行和的形式

后面是向量化表示便于矩阵运算

θ是一个(3x1)的矩阵/列向量,T表示转置

X 是样本的特征集合(3x1)的矩阵/列向量

多元的线性回归其实就是增加了特征值的维度

输入值X1 X2 `````Xn

真实值是多维离散点——由多个X值决定

那么得到的预测值模型就是多维表面了

(这里只需理解即可)

它的参数θ则有n+1个

θi 表示Xi对改变预测值hθ (x)的影响力

θ0 为整个模型的上下调整

最后还有两个问题:

1. 参数是怎么调整的呢?

让预测值表面和真实值表面拟合(误差接近最小)

说用眼睛看出来的那位同学你是认真的吗

简言之就是对代价函数求偏导,算出每一个权重对于误差的影响力,然后不断迭代更新趋于最小值

篇幅限制,我们将在下一篇中详细讲解

2.预测值的面都是平面的吗?

在二元线性回归里我们就发现有些点和平面的距离挺大的,这已经使得模型的预测不够准确了。其实我们可以将X进行调整,比如方程中的参数X1 变为 X1平方我们便可以得出一个曲面,一元线归里则是抛物线的样子了

可见确定特征值X的形式非常重要

总结一下:如何使用线性回归

1. 首先对于数据选择特征值的维度

2. 确定每个特征值的形式

3. 建立一般的线性方程表示模型

4. 把所有的参数值随机初始化

5. 计算代价函数(预测值与真实值的误差)

6. 梯度下降调整参数

可能你们觉得这些理论部分很无聊吧

那我们从下一篇开始

在每一篇的最后用Python编程实现这些算法吧

在耐心学完逻辑回归后

你们很快就可以着手写神经网络了哦,加油

下一篇我们将学习

1. 学习计算代价函数

2. 直观理解梯度下降

3. 使用Python写线性回归方程

自主学习部分:(Homework)

1.通过安装Anaconda(强烈推荐哦)

2.学习使用Jupyter Notebook(强烈推荐哦)

3.了解Python语法特性(对有编程基础的同学是容易的)

4.在Jupyter Notebook里使用Python

Anaconda就像大礼包一样

可以快速安装Python和JupyterNotebook

从官网下载慢,给大家一个链接

https://pan.baidu.com/s/1yxhoxo8cWKINiHyU0MIOrw

JupyterNotebook的使用教程

https://www.jianshu.com/p/86117613b7a6

JupyterNotebook是一种交互式的Python编辑器,目前非常非常流行,强烈推荐大家使用,如果只喜欢使用Eclipse等也可以

下一篇:《代价函数和梯度下降》

下下一篇:《强大的逻辑回归》

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ACM算法日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档