Merge pull request #152 from chenyyx/master

修改5.Logistic回归和8.回归
This commit is contained in:
Joy yx
2017-09-13 20:18:49 +08:00
committed by GitHub
3 changed files with 69 additions and 26 deletions

View File

@@ -11,6 +11,12 @@
### Sigmoid 函数
#### 回归 概念
假设现在有一些数据点,我们用一条直线对这些点进行拟合(这条直线称为最佳拟合直线),这个拟合的过程就叫做回归。进而可以得到对这些点的拟合直线方程,那么我们根据这个回归方程,怎么进行分类呢?请看下面。
#### 二值型输出分类函数
我们想要的函数应该是: 能接受所有的输入然后预测出类别。例如,在两个类的情况下,上述函数输出 0 或 1.或许你之前接触过具有这种性质的函数,该函数称为 `海维塞得阶跃函数(Heaviside step function)`,或者直接称为 `单位阶跃函数`。然而,海维塞得阶跃函数的问题在于: 该函数在跳跃点上从 0 瞬间跳跃到 1这个瞬间跳跃过程有时很难处理。幸好另一个函数也有类似的性质可以输出 0 或者 1 的性质),且数学上更易处理,这就是 Sigmoid 函数。 Sigmoid 函数具体的计算公式如下:
![Sigmoid 函数计算公式](../images/5.Logistic/LR_1.png)
@@ -31,7 +37,17 @@ Sigmoid 函数的输入记为 z ,由下面公式得到:
### 梯度上升法
梯度上升法基于的思想是: 要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻。如果梯度记为 ▽ ,则函数 f(x, y) 的梯度由下式表示:
#### 梯度的介绍
需要一点点向量方面的数学基础
```
向量 = 值 + 方向
梯度 = 向量
梯度 = 梯度值 + 梯度方向
```
#### 梯度上升法的思想
要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻。如果梯度记为 ▽ ,则函数 f(x, y) 的梯度由下式表示:
![梯度上升计算公式](../images/5.Logistic/LR_5.png)
@@ -50,7 +66,7 @@ Sigmoid 函数的输入记为 z ,由下面公式得到:
介绍一下几个相关的概念:
```
例如y = w1x1 + w2x2 + ... + wnxn
梯度参考上图的例子二维图像x方向代表第一个系数,也就是 w1y方向代表第二个系数也就是 w2这样的向量就是梯度。
梯度参考上图的例子二维图像x方向代表第一个系数也就是 w1y方向代表第二个系数也就是 w2这样的向量就是梯度。
α:上面的梯度算法的迭代公式中的阿尔法,这个代表的是移动步长。移动步长会影响最终结果的拟合程度,最好的方法就是随着迭代次数更改移动步长。
步长通俗的理解100米如果我一步走10米我需要走10步如果一步走20米我只需要走5步。这里的一步走多少米就是步长的意思。
▽f(w):代表沿着梯度变化的方向。

View File

@@ -1,44 +1,71 @@
# 第8章 预测数值型数据:回归
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>
![预测数值型数据回归首页](/images/8.Regression/预测数值型数据回归首页.png "回归Regression首页")
![预测数值型数据回归首页](../images/8.Regression/预测数值型数据回归首页.png "回归Regression首页")
## 线性回归
## 回归Regression 概述
> 回归简介
`我们前边提到的分类的目标变量是标称型数据,而回归则是对连续型的数据做出处理,回归的目的是预测数值型数据的目标值。`
## 回归 场景
回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式。
假如你想要预测姐姐男友汽车的功率大小,可能会这样计算:
HorsePower = 0.0015 * annualSalary - 0.99 * hoursListeningToPublicRadio
这就是所谓的 `回归方程(regression equation)`,其中的 0.0015 和 -0.99 称作 `回归系数regression weights`,求这些回归系数的过程就是回归。一旦有了这些回归系数,再给定输入,做预测就非常容易了。具体的做法是用回归系数乘以输入值,再将结果全部加在一起,就得到了预测值。我们这里所说的,回归系数是一个向量,输入也是向量,这些运算也就是求出二者的内积。
说到回归,一般都是指 `线性回归(linear regression)`。线性回归意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。
## 回归 原理
### 回归 须知概念
#### 1、矩阵求逆
因为我们在计算回归方程的回归系数时,用到的计算公式如下:
![回归系数的最佳估计计算公式](../images/8.Regression/LinearR_1.png)
需要对矩阵求逆,因此这个方程只在逆矩阵存在的时候适用,我们在程序代码中对此作出判断。
判断矩阵是否可逆的一个可选方案是:
判断矩阵的行列式是否为 0若为 0 ,矩阵就不存在逆矩阵,不为 0 的话,矩阵才存在逆矩阵。
#### 2、最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。
### 回归 工作原理
```
回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式。
假如你想要预测姐姐男友汽车的功率大小,可能会这么计算:
HorsePower = 0.0015 * annualSalary - 0.99 * hoursListeningToPublicRadio
这就是所谓的回归方程(regression equation)其中的0.0015和-0.99称作回归系数(regression weights),求这些回归系数的过程就是回归。
一旦有了这些回归系数,再给定输入,做预测就非常容易了。具体的做法是用回归系数乘以输入值,再将结果全部加在一起,就得到了预测值。
说到回归,一般都是指线性回归(linear regression),所以本章里的回归和线性回归代表同一个意思。线性回归意味着可以将输入项分别乘以一些常量,
再将结果加起来得到输出。需要说明的是,存在另一种称为非线性回归的回归模型,该模型不认同上面的做法,比如认为可能是输入的乘积。
这样,上面的功率计算公式也可以写做:
HorsePower = 0.0015 * annualSalary / hoursListeningToPublicRadio
这就是一个非线性回归的例子,但是对此不进行深入讨论。
读入数据将数据特征想、特征标签y存储在矩阵x、y中
验证 x^Tx 矩阵是否可逆
使用最小二乘法求得 回归系数 w 的最佳估计
```
> 线性回归特点
### 回归 开发流程
```
优点:结果易于理解,计算上不复杂。
缺点:对非线性的数据拟合不好。
适用于数据类型:数值型和标称型数据。
收集数据: 采用任意方法收集数据
准备数据: 回归需要数值型数据,标称型数据将被转换成二值型数据
分析数据: 绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线绘在图上作为对比
训练算法: 找到回归系数
测试算法: 使用 R^2 或者预测值和数据的拟合度,来分析模型的效果
使用算法: 使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签
```
> 回归的一般方法
### 回归 算法特点
```
(1) 收集数据:采用任意方法收集数据
(2) 准备数据:回归需要数值型数据,标称型数据将被转换成二值型数据
(3) 分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线绘在图上作为对比
(4) 训练算法:找到回归系数。
(5) 测试算法:使用 R^2 或者预测值和数据的拟合度,来分析模型的效果。
(6) 使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。
优点:结果易于理解,计算上不复杂
缺点:对非线性的数据拟合不好
适用于数据类型:数值型和标称型数据
```
> 线性回归的效果图
![线性回归效果图](/images/8.Regression/线性回归效果图.png "线性回归效果图")

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB