﻿1
00:00:18,230 --> 00:00:23,180
大家好！这是第4.2节，我们学习线形回归。

2
00:00:23,180 --> 00:00:28,840
在第1.3节，我们提到过分类问题和

3
00:00:28,840 --> 00:00:31,300
回归问题的差别。

4
00:00:31,300 --> 00:00:35,809
分类问题是你想预测一个名词值，

5
00:00:35,809 --> 00:00:41,400
而回归问题是你想预测一个数字值。

6
00:00:41,400 --> 00:00:46,400
我们已经见过名词和数字属性的数据集，但还

7
00:00:46,400 --> 00:00:51,230
没有涉及到回归问题，它是用于预测数字值的

8
00:00:51,230 --> 00:00:53,110
机器学习方法。

9
00:00:53,110 --> 00:00:56,690
这就是我们将在这节课要学的，线形回归。

10
00:00:56,690 --> 00:01:02,859
至今，我们所看到的都是名词分类，现在来学习数字分类。

11
00:01:02,859 --> 00:01:08,340
这是个经典的统计方法，可追述到2个世纪前。

12
00:01:08,340 --> 00:01:11,190
这就是你通常会看到的图。

13
00:01:11,190 --> 00:01:15,450
你有一组二维数据，我们想在这些数据点上画一条直线

14
00:01:15,450 --> 00:01:21,560
找一条最接近的直线。

15
00:01:21,560 --> 00:01:25,590
对我们而言，可能要处理的数据多于二维，可能是多维的。

16
00:01:25,590 --> 00:01:28,509
但这仍然是个标准的问题。

17
00:01:28,509 --> 00:01:31,649
我们先来看下二维的例子。

18
00:01:31,649 --> 00:01:39,560
你可以写一个这种形式的加权直线公式，w0 加 w1a1 加

19
00:01:39,560 --> 00:01:41,179
w2a2，等等。

20
00:01:41,179 --> 00:01:44,209
如果是一维的话，只有一个a

21
00:01:44,209 --> 00:01:51,209
不用关心后面的这些，只注意w0 加w1a1。

22
00:01:51,770 --> 00:01:55,560
这是这条线的等式（这是一条直线的等式），这里w0

23
00:01:55,560 --> 00:01:59,920
和w1是由数据中得出的两个常量。

24
00:01:59,920 --> 00:02:06,289
这当然只适合于数字属性，因为我们用常量

25
00:02:06,289 --> 00:02:08,849
乘以这些属性值。

26
00:02:08,849 --> 00:02:13,129
我们随后再看名词属性。

27
00:02:13,129 --> 00:02:19,260
我们将用训练数据来计算这些加权值w0，w1，和w2。

28
00:02:19,260 --> 00:02:22,239
那些是我们将用训练数据来计算的。

29
00:02:22,239 --> 00:02:27,930
一旦得到加权值，我们便可预测第一个

30
00:02:27,930 --> 00:02:29,010
训练实例的值a1。

31
00:02:29,010 --> 00:02:31,670
这里，等式变得很可怕。

32
00:02:31,670 --> 00:02:33,599
我知道它看起来很吓人，但很简单。

33
00:02:33,599 --> 00:02:38,049
我们用这些已计算好的加权值的线形总和，用第一个实例

34
00:02:38,049 --> 00:02:45,049
的属性值来得出这个实例的预测值。

35
00:02:48,239 --> 00:02:54,450
我们将用这个很可怕的公式为训练实例计算

36
00:02:54,450 --> 00:02:55,749
预测值。

37
00:02:55,749 --> 00:02:58,810
我知道它看起来很吓人，但它实际上不是那么可怕。

38
00:02:58,810 --> 00:03:04,549
这些是我们由训练数据得到的数字，这里的这些是

39
00:03:04,549 --> 00:03:09,680
第一个实例a1的属性值

40
00:03:09,680 --> 00:03:12,409
（上面的1指的是第一个实例）。

41
00:03:12,409 --> 00:03:16,840
这些1，2，3指的是第一，二，三个属性。

42
00:03:16,840 --> 00:03:21,170
我们可以把这个写到这个短小的加法公式中，这看起来好一些。

43
00:03:21,170 --> 00:03:28,040
顺便注意下，我们定义a0（第零个属性的值）为1。

44
00:03:28,040 --> 00:03:31,260
这公式便可用了。

45
00:03:31,260 --> 00:03:38,510
来看第一个实例，我们有这个数x，第一个实例的预测值

46
00:03:38,519 --> 00:03:45,519
和a1的值。

47
00:03:47,889 --> 00:03:54,139
然后我们选能在训练数据上得到最小的平方误差的加权值

48
00:03:54,139 --> 00:03:58,639
这是第i个实例的实际的x值。

49
00:03:58,639 --> 00:04:02,249
这是第i个实例的预测值。

50
00:04:02,249 --> 00:04:05,579
我们求实际值和预测值得差，求平方，

51
00:04:05,579 --> 00:04:07,410
将它们相加。

52
00:04:07,410 --> 00:04:09,680
这就是我们想最小化的。

53
00:04:09,680 --> 00:04:15,370
我们通过最小化这个平方误差的和来得到加权值。

54
00:04:15,370 --> 00:04:20,190
这是数学的工作。我们不用关心它的原理。

55
00:04:20,190 --> 00:04:23,639
这是个标准的矩阵问题。

56
00:04:23,639 --> 00:04:26,750
如果实例的数量多于属性的数量它效果会很好。

57
00:04:26,750 --> 00:04:31,660
它不适用的情况是你有很多的属性却没有太多的实例。

58
00:04:31,669 --> 00:04:35,530
如果实例的数量比属性的多（通常都是这样）

59
00:04:35,530 --> 00:04:38,110
就没问题。

60
00:04:38,110 --> 00:04:44,170
如果我们有名词属性，而它们只有两个值/二元值， 

61
00:04:44,170 --> 00:04:47,170
可以将它们转变为0和1，然后用这些数字。

62
00:04:47,170 --> 00:04:52,210
如果我们的名词属性值是多元的，你会在

63
00:04:52,210 --> 00:04:58,250
课后的练习中学到怎样做。

64
00:04:58,250 --> 00:05:05,250
我们将打开一个回归的数据集，来看看cpu.aff 。

65
00:05:06,100 --> 00:05:07,400
这是个很普通的数据集。

66
00:05:07,400 --> 00:05:11,750
它含有数字属性，最重要的是它的分类是数字的。

67
00:05:11,750 --> 00:05:15,690
我们将预测一个数字的值。

68
00:05:15,690 --> 00:05:22,690
我们来运行LinearRegression； 它在函数的（functions）类别里

69
00:05:24,060 --> 00:05:28,030
运行一下，这是输出。

70
00:05:28,030 --> 00:05:29,530
这是模型。

71
00:05:29,530 --> 00:05:32,580、
这个类的预测值是一个线性的总和。

72
00:05:32,580 --> 00:05:34,320
这些是我提到过的加权值。

73
00:05:34,320 --> 00:05:39,060
它等于这个加权值乘以这个属性值加上这个加权值乘以这个属性值

74
00:05:39,060 --> 00:05:39,960
等等。

75
00:05:39,960 --> 00:05:46,960
减去w0，它是个常量的加权值，不用乘以属性值。

76
00:05:48,490 --> 00:05:51,170
这是分类值的计算公式。

77
00:05:51,170 --> 00:05:55,940
在使用这个公式时，你可以看下它对于训练数据的成功率。

78
00:05:55,940 --> 00:06:01,710
它的相关系数是0.9，一个标准的统计测量方法。

79
00:06:01,710 --> 00:06:02,700
看来还不错。

80
00:06:02,700 --> 00:06:06,720
这里是其它的误差数据。

81
00:06:06,720 --> 00:06:11,300
在幻灯片上有关于这些误差的解释。

82
00:06:11,300 --> 00:06:14,630
很难知道该使用哪一个。

83
00:06:14,630 --> 00:06:19,050
它们的结果都近似，我想你应该根据

84
00:06:19,050 --> 00:06:21,700
具体的情况来选择。

85
00:06:23,420 --> 00:06:27,900
这是绝对平均误差和均方根误差，它们都是

86
00:06:27,900 --> 00:06:33,270
标准的测量法。

87
00:06:33,270 --> 00:06:33,920
这就是线性回归。

88
00:06:33,920 --> 00:06:38,700
来看一下非线性回归。

89
00:06:38,700 --> 00:06:45,080
模型树就是它的每一个叶节点都含有一个线性回归模型。

90
00:06:45,080 --> 00:06:50,040
我们建一个这样的树，每个叶节点含有一个线性模型。

91
00:06:50,040 --> 00:06:51,100
它包含了这些相关系数。

92
00:06:51,100 --> 00:07:00,220
它就像是个线性模型的补丁，这6个补丁组成了

93
00:07:00,220 --> 00:07:02,290
一个连续的函数。

94
00:07:02,290 --> 00:07:12,990
在树分类器的类别下，有一个神秘的叫M5P的名字。

95
00:07:12,990 --> 00:07:18,440
如果运行一下，它会创建一个模型树。

96
00:07:19,520 --> 00:07:23,370
我们来可视化一下这个树。

97
00:07:25,100 --> 00:07:32,920
现在我可看下模型树，它和幻灯片上的很相似。

98
00:07:32,920 --> 00:07:38,280
你可以看到每一个叶节点上（这里有5个）都有一个线性模型

99
00:07:38,280 --> 00:07:45,730
LM1，LM2，LM3... 我们看回这里，这些线性模型是这样定义的：

100
00:07:45,730 --> 00:07:52,730
LM1是这个线性方程，这个线性方程是LM2的，等等。

101
00:07:58,510 --> 00:08:03,150
我们选trees 然后 M5P， 运行。来看下结果。

102
00:08:03,150 --> 00:08:13,070
我们可以将这些结果（92-93%的相关值，30的绝对平均误差

103
00:08:13,070 --> 00:08:20,360
等等），和正常的线性回归结果比较一下，

104
00:08:20,360 --> 00:08:24,960
它的相关值低一些，绝对误差高一些。（事实上，我觉得

105
00:08:24,960 --> 00:08:26,930
这些误差数据都要高一些。）

106
00:08:26,930 --> 00:08:33,930
这是我们在课后练习中让你做的。

107
00:08:34,220 --> 00:08:40,270
线形回归是一门有充分根据的，可信赖的数学技术。

108
00:08:40,270 --> 00:08:45,540
实际的问题通常需要非线性的解决方法

109
00:08:45,540 --> 00:08:50,640
M5P算法用回归模型建树，树的每个叶结点存有回归模型。

110
00:08:50,640 --> 00:08:51,320
存有回归模型。

111
00:08:51,320 --> 00:08:56,210
你能在课本的第4.6节读到相关内容。

112
00:08:56,210 --> 00:08:59,990
好了，去完成课后练习。

113
00:08:59,990 --> 00:09:01,160
很快回来。

114
00:09:01,160 --> 00:09:02,300
再见！

