传统程序是人写规则,机器学习是人给数据、机器自己找规则——核心动作只有一句话:规律从数据里算出来。
前十章讲的是【程序怎么跑】,这一章换了个方向:程序里的规律,能不能不用人写。
一、两种做法的根本差别
传统程序:人把规则想清楚,写成代码。问题是——规则写不全。 机器学习:人给一批数据(带正确答案),机器自己去找规律。 差别不只在写法上,还在【你能不能说清那件事】上。 认字、识脸、听语音——这些事人做得很好,却说不出规则。 说不出规则的事,正是机器学习的用武之地。
二、机器是怎么【学】的
学习这件事,落在机器上其实很朴素: 准备数据 → 训练(调参数)→ 评估 → 拿去用。 【训练】不是【思考】,它是反复试:猜一个答案、跟正确答案比、差多少就往回改一点。 改到猜得够准了,这套【参数】就固化下来,成了模型。 所以机器学习产出的不是一个程序,而是一组数。
三、用卖货的例子看一遍
拿十天的进货量与销量,人写规则很难下手(多进点?少进点?到底几成?)。 让机器从这十组数据里找,一条式子就出来了:销量约等于 1.015 乘进货量减 1.59。 用这条式子算:进货 15 大约卖 13.6、进货 25 大约卖 23.8。 这就是那个核心动作:规律不是人告诉它的,是它自己算出来的。
四、但它学到的不是【理解】
这一点必须说清:它学到的是【这批数据里的统计规律】,不是【懂了卖货这件事】。 所以有几个必然的后果: 数据有偏,学到的规律就偏——只见过夏天的销量,它不会懂冬天。 数据的范围之外,它只能外推,没有依据——进货 500 会怎样?它不知道。 它不解释原因——它只告诉你【大概是多少】,不告诉你【为什么】。 记住这一句,后面所有内容都好理解了:机器学习是从数据里找规律,不是让机器长出脑子。
五、动手 Demo:什么是机器学习
传统程序是人写规则,机器学习是从数据里找规则。 拿十天的进货量与销量,看机器怎么把规律算出来。
days = [(10, 9), (12, 10), (14, 13), (16, 14), (18, 17),
(20, 19), (22, 21), (24, 22), (26, 25), (28, 27)]
n = len(days)
mx = sum(a for a, _ in days) / n
my = sum(b for _, b in days) / n
num = sum((a - mx) * (b - my) for a, b in days)
den = sum((a - mx) ** 2 for a, _ in days)
slope, intercept = num / den, my - num / den * mx
print("销量 ≈ %.3f × 进货量 %+.2f" % (slope, intercept))
实跑输出:
--------------------------------------------------------------------
什么是机器学习
--------------------------------------------------------------------
**传统程序和人写规则的区别,一张表就说清了:**
传统程序 机器学习
-----------------------------------------------------
规则是谁写的 人写的 机器从数据里找
输入是什么 数据 数据 + 正确答案
产出是什么 结果 一套判断规则(模型)
难在哪 规则写不全 数据不够、规律不明显
拿一个卖货的例子看差别——**给十天的进货量与销量**:
进货量 10 12 14 16 18 20 22 24 26 28
销量 9 10 13 14 17 19 21 22 25 27
**人写规则很难下手**(多进点?少进点?到底几成?),
**而让机器从这十组数据里找,一条式子就出来了:**
销量 ≈ 1.015 × 进货量 -1.59
用这条式子算一算:**进货 15 大约能卖 13.6、进货 25 大约能卖 23.8。**
**这就是机器学习的核心动作:不是人告诉它规律,是它从数据里把规律算出来。**
注意一点:**它学到的是【这批数据里的统计规律】,不是【懂了卖货这件事】。**
实测算出:销量约等于 1.015 乘进货量减 1.59。 人写规则很难下手,而机器从十组数据里就把式子算出来了——这就是机器学习的核心动作。
30 秒实验
- 再添两组数据(比如进货 30 卖 28),看式子的斜率和截距会怎么变。
- 想一想:如果这十天全是旺季,这条式子拿到冬天还准吗。
常见误区
- 以为机器学习是【让机器思考】。它是在数据里找统计规律。
- 以为数据越多就一定越好。有偏的数据,多了只会错得更一致。
自测三问(点开对答案)
1. 机器学习与传统程序的根本差别是什么? —— 传统程序由人写规则;机器学习由人给数据,机器自己从数据里找规律。 2. 机器学习的流程大致是什么? —— 准备数据、训练(反复比较并调整参数)、评估、拿去使用。 3. 为什么说它学到的不是理解? —— 它只掌握这批数据里的统计规律,不解释原因,数据有偏或超出范围就会失效。- ☐ 下一节(12.2 支持向量机)
相关笔记
- 支持向量机 — 一种具体的分类算法
- 准备学习数据 — 数据这一头怎么准备
- CPU的处理其实很简单 — 这些计算最后也是搬算比跳
- ⌨️ 编程原理 · 索引 — 把编程全貌理一遍
- ⚙️ 程序是怎样跑起来的 · 索引