“线性回归是啥?”
这是你们即将学习的第一个最基础的机器学习算法。
在它的基础之上发展得到的便是逻辑回归算法——构建神经网络模型最为基础的单元。
让我们来深入地学习它吧!
第二篇还是以概念和公式为主
因为这是很基础的知识,一定要掌握哦
学术上:
线性回归属于回归问题
它包含一元线性回归和多元线性回归
形象讲解开始:
我们先从一元的线性回归下手
参见上一篇《初探篇》里对用于模型训练的样本的定义,样本可以是音频、图片、点集等等,这里我用一个简单的点集作为我们的样本解释,如图
你们看这些离散的点有各自的坐标值,其实这就是一组很小型的数据了,你完全可以类比实际应用的值
(这里用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等也可以
下一篇:《代价函数和梯度下降》
下下一篇:《强大的逻辑回归》