一、前言

1.文章的简要介绍

这是我的机器学习入门学习笔记。

在这里,没有让人头秃的复杂公式,我正试图用最直白的人话和生活中的例子,把那些高大上的概念一点点讲清楚。这既是我的复习,也希望能成为你入门路上的一份暖心参考。

今天是第一课,我们来聊聊最根本的问题:机器学习,到底是什么?

说实话,刚开始学机器学习,别一头就扎进公式里。我们得先弄明白,这东西到底是干嘛的?它擅长什么,不擅长什么?心里有个底,后面学起来才不迷糊。

2.机器学习讲的几件事情

我之前为了入门,啃了不少书。发现这些书的内容,基本可以归为四类:

  1. 讲原理的: 告诉你机器学习是什么,以及它为什么能工作。这部分比较烧脑,是它的理论基础。

  2. 教技术的: 直接上干货,教你怎么选模型、调代码,属于“怎么做”的范畴。

  3. 聊实际工程如何落地的: 这部分最有意思,它不谈理想,只聊现实。比如怎么用最少的钱和时间,把模型真的用起来,解决实际问题。

  4. 应用: 给你看各种的应用,让你感受它的威力。

3.机器学习的含义

机器学习有个非常经典的定义,是1997年提出的,说它是“利用经验来改善自身性能”。

我们举个例子:

比如,我们如何学会挑一个好苹果的? 最开始你可能也懵懵懂懂,但买过几次、尝过几次之后,你就慢慢积累了经验:颜色要红得均匀、捏起来要硬实、闻起来有清香的,大概率又甜又脆。

下次再去水果店,你手里拿着的每一个苹果,都在无声地验证和丰富着你的这套“经验”。你挑苹果的准确率,自然就越来越高了。

在计算机里,“经验”就是数据。所以,机器学习说白了,就是让计算机像我们学挑苹果一样,从海量数据里自己总结规律,从而变得越来越能干

4.智能数据分析与机器学习

在机器学习火起来之前,我们分析数据主要靠传统的统计学和数学方法。这些方法当然很强,但它们更像是在一个设定好的框框里解决问题。

机器学习的出现,相当于给我们换了个脑子。它开启了一个全新的“智能数据分析”时代。

举个简单的例子:

传统数据分析,就像一个只会严格按照菜谱做菜的新手厨师。菜谱上写盐2克,他绝不会放1.9克;菜谱上没写的步骤,他绝对不敢自己加。他的成果完全依赖于那份完美的、预先写好的菜谱。

机器学习,像一位尝遍了无数美食,自己琢磨出做菜门道的美食家。他根本不需要看菜谱,光是尝过成千上万道菜,他的舌头和大脑就自动总结出了什么食材搭配起来会鲜、火候多大最香这些隐藏的规律。最后,他甚至可以自创出一道绝世好菜,而这其中的精妙之处,连他自己都可能无法用具体的规则写出来。

5.模式与模型

(1)模式是局部的“小聪明”

例如,小孩子看摊位上摆放的一大堆的苹果时,看到了一大堆中的两个苹果,发现它们都有果锈,而且都不甜。一大堆中的最红的三个苹果,买过的顾客都说很好。这些都是你在数据中发现的零散的、局部的洞察。

(2)模型是全局的“大智慧”

例如,现在来了一个买苹果的高手。他可以结合所有观察结果,例如颜色、硬度、形状、气味、果锈、产地等等,根据这些形成了一套完整的“好苹果鉴定法则”。这个综合性的、全局的系统,就是模型。它不再只依赖一两个特征,而是权衡了所有已知的“模式”,做出一个最可靠的总体判断。

在机器学习火起来之前,我们分析数据主要靠传统的统计学和数学方法。这些方法当然很强,但它们更像是在一个设定好的框框里解决问题。

二、数据与标签

机器学习的出现,相当于给我们换了个脑子。它开启了一个全新的“智能数据分析”时代。

刚开始学习机器学习时,“数据”和“标签”这两个词听起来很抽象。但其实,我们每天都在做类似的事情。比如,如何去水果店挑一个好苹果?

1.数据

数据,在机器学习中通常表现为特征。特征是用来描述一个事物的各种属性。

在我们的“苹果鉴别系统”中,一个好苹果通常由以下几个特征来决定:

  1. 颜色:是鲜艳的红色,还是暗淡的青色?
  2. 大小:是大果,还是小果?
  3. 硬度:按下去是坚实,还是软塌塌的?
  4. 有无疤痕:表面是光滑,还是有明显的磕碰或斑点?
  5. 气味:闻起来是清香的,还是无味的?

2.标签

标签,是我们想要预测的结果,是给数据打上的“标记”

在这个例子里,我们最终对苹果的判定就是标签:

  1. 好苹果
  2. 坏苹果

现在,我们可以把一个苹果描述成一个数据表格中的一行:

颜色大小硬度疤痕气味好苹果
鲜红坚实清香
青色无味
暗红较软酒味

三、机器学习的适用条件

想象一下,你是一家工厂的设备管理员,负责看守一台价值千万的核心机器。

最初,你试图用一条“硬规则”来预警故障:
这个规则是:

如果机器温度 超过100°C,就拉响警报。

这条规则简单、明确,但很快你就发现它漏洞百出:

有时,机器温度飙到110°C却安然无恙。

有时,机器明明才92°C,却突然“嘎嘣”一声,罢工了。

你开始摸头发了。显然,温度并非唯一的“罪魁祸首”。这台机器是否故障,是由一套你看不见的复杂准则所规定的。这个准则可能是:

故障 = f(温度, 振动频率, 电压稳定性, 负载压力, 昨日运行时长 ...)

这个函数f太复杂了,它可能是上百个因素非线性地交织在一起的结果,根本无法直接推导出它的具体形式,无法给出一个数学函数公式。

看到这里,恭喜你,你已经找到了机器学习的适用条件了。

在以下情况下,就是机器学习大展身手的时候:

  1. 问题由多因素共同决定的,而且关系很复杂:就像那台机器,故障不是由温度决定的,而是温度、振动频率、电压等多个因素相互作用的结果。这种相互作用,传统的规则很难描述。

  2. 你无法直接给定一个准确的规则:你能清晰地告诉计算机如果温度>100℃就报警,但你无法用代码写出那个包含了上百个因素的、神秘的函数。

  3. 你拥有大量的经验:你的监控系统已经记录了这台机器过去三年里,每分钟的温度、振动、电压等数据,以及每一次故障的详细记录。

这时,机器学习就可以登场了:

这些历史数据,例如温度、振动、电压……,这些是我们机器学习中的特征;标签:是否故障。你可以把历史数据“喂”给机器学习算法。

算法会像一位顶尖的侦探,在这些数据中寻找蛛丝马迹,构建出那个隐藏在背后的 “故障预测模型” 。这个模型能综合所有指标,给出一个像这样的智能判断:

虽然温度92°C未超标,但振动幅度异常偏高,且电压波动剧烈,综合故障概率为92%,建议立即检修!

当一个问题规律存在但无法手动定义,同时拥有大量历史数据时,就是机器学习的适用场景。它不依赖我们预设的、僵硬的100度的红线,而是通过数据自己学会那套复杂的法则。

所以,下次当你遇到一个“我知道里面有规律,但我就是说不清楚”的复杂问题时,就该考虑请机器学习来帮忙了。

聊完了机器学习的宏大构想,是时候统一一下语言了。任何学科都有它的一套核心术语,机器学习也不例外。理解这些关键词,不仅能让你更精准地把握概念,更是你未来阅读更多资料、与他人高效讨论的基石。

四、数据集

数据集是数据的家园,它是所有数据的集合,就像一个大家庭。它是我们研究的全部素材,通常会被划分为训练集测试集训练集用于“学习”测试集用于“期末考试”

五、训练与测试

训练与测试的过程其实像一个学习与考核的过程。

1.训练

训练就是模型在训练集上学习数据内在规律的过程。就像学生听课和做练习题。

2.测试

测试就是用模型从未见过的测试集来评估其真实能力。就像学生参加正式考试,目的是检验他是否真正掌握了知识,而不是只会死记硬背练习题。

六、数据的个体与特征

示例、样本、属性、特征、属性值这几个词经常混用,但核心思想一致。

  1. 示例 / 样例 / 样本:数据集中的一条记录一个个体。在苹果的例子中,一个具体的苹果就是一个样本
  2. 属性 / 特征:描述样本的某个方面的指标。比如苹果的“颜色”、“大小”、“硬度”。它们是一个概念的两种叫法,特征在机器学习中更常用。
  3. 属性值:特征的具体取值。比如颜色特征的属性值可以是“红色”、“青色”。

对于样本,有时候我们需要根据上下文判断:

例如,让我们看看下面这3句话:

(1)“这个样本是坏的。”

这里指一行数据,即一个苹果。

(2)“我们缺乏训练样本。”

这里指多行数据,即很多个苹果。

(3)“整个样本的分布有偏。”

这里可能指整个数据集

七、标记空间

标记空间是所有可能输出结果或标签的集合。它就像一个答题卡上所有可能选项的集合。

  1. 在预测房价的回归问题中,标记空间是所有可能的房价实数。
  2. 在判断苹果好坏的二分类问题中,标记空间是{好苹果,坏苹果}。

八、模型与学习器

1.模型

从数据中学到的那个规律本身。它是对真实世界关系的一种逼近。这个规律可能是显式的,比如,一个清晰的数学公式;也可能是隐式的,比如,一个深度神经网络:我们只知道它如何计算,但很难解释它内部的具体决策逻辑。

2.学习器

为了得到一个模型,我们需要运行一个算法。这个算法+参数设置,就构成了一个学习器。你可以把它看作一个工厂

3.模型与学习器的关系

学习器 + 数据 = 模型

九、输出

模型的输出决定了学习任务的类型:

离散输出:

  1. 二分类:输出空间只有两个值。例如:垃圾邮件、非垃圾邮件。
  2. 多分类:输出空间有多个值。例如:识别动物图片是猫、狗、鸟。

连续输出:

  1. 回归:输出是一个连续数值。例如:预测房价、气温。

十、监督学习与无监督学习

1.监督学习

训练数据是 “数据+答案” ,即有标签。就像老师带着答案教你做题。任务通常是分类回归

2.无监督学习

训练数据只有 “数据” ,即无标签。就像给你一堆积木,让你自己发现它们能拼成什么。任务通常是聚类降维

十一、独立同分布

1.独立同分布的概念

独立同分布是一个非常强但至关重要的理想化假设

它假设我们数据集中的每一个样本都是:

  1. 独立的:一个样本的出现不影响另一个样本的出现。

  2. 同分布的:所有样本都来自于同一个永远不变的数据集合。

那可能有读者会问了,为什么需要它呢?

 在这个假设下,我们才能保证模型在训练集上学到的规律,能安全地应用到未来的新数据上。它让“频率趋近于概率”成为可能。

2.现实

我举一个例子:
用户A在拼多多买了自行车,用户B看到用户A买了自行车后买了巧克力。

这两个行为并不是独立的,用户B的行为受到了用户A的影响。

现实中,数据充满了这种依赖性,例如,时间序列。并且数据的分布也总是在悄然变化,比如,用户的购物偏好会随时间改变。如何处理这种 非独立同分布数据,正是当今机器学习研究的前沿和难点。

十二、泛化

泛化是指模型在前所未见的新样本上表现良好的能力。

学习的最终目的,不是完美复述学过的例题(这种情况是过拟合),而是能够举一反三,解决新问题。一个只会背答案的学生考不了高分,一个泛化能力强的模型才是好模型。

十三、归纳偏好

想象一下,你要教一个完全不懂苹果的外星人,如何从一堆水果里挑出最甜的那个。你会怎么教?

你可能会说:“挑最红的!”,而另一个人可能会说:“挑闻起来最香的!”。

你们的目标一致,但所依赖的核心原则完全不同。这个你内心深处所相信的准则,红等于甜就是你的归纳偏好

在机器学习中,任何一个有效的算法,都必须有自己的归纳偏好,否则它就无法从无限多个与训练数据一致的假设中做出选择。这就是“奥卡姆剃刀”原则在机器学习中的体现:“若非必要,勿增实体”,即在所有能解释数据的模型中,应该选择那个“最简单”的。

1.不同的偏好,不同的命运

我们可以把不同的算法,想象成不同流派的“水果鉴定大师”:

只看颜值的大师(比如线性模型)

  1. 偏好:坚信外表决定一切,倾向于找到一条清晰的界线,比如,颜色值大于0.8就是好苹果。
  2. 擅长:如果甜度真的和红色度强相关,它能快速找到规律,简单有效。
  3. 短板:如果好吃的苹果是青色的,它会彻底失败。

只看细节的大师(比如决策树):

  1. 偏好:不放过任何细节,一定要刨根问底,创建复杂的判断流程。比如,苹果如果又红又硬,再看斑点数量;如果又青又香,再看产地。
  2. 擅长:能捕捉非常复杂的、非线性的关系,在训练数据上表现很好。
  3. 短板:容易钻牛角尖,把个别坏苹果的特征也当成规律学来,导致在没见过的新苹果上判断失灵出现过拟合的情况。

2.没有万能钥匙,只有对不对味

这告诉我们一个至关重要的道理:
一个算法性能的好坏,并不完全取决于它本身有多高级,而在于它的“内在偏好”是否与你所要解决的“实际问题”的底层规律相匹配。

  1. 让一位只看颜值的大师去鉴定青苹果,是场灾难。
  2. 让一位只看细节的大师去处理数据很少的问题,他只会编出一套自圆其说的玄学。

因此,理解算法的归纳偏好,就像理解不同工具的特性。你不是在寻找世界上最好的算法,而是在为你的具体问题,寻找那位最对路的专家。

十四、NFL定理

如下是我使用MATLAB R2022a版画出的一个图像,专门用于解释NFL定理的图形,其中:

  1. 7个黑色空心圆圈代表相同的训练数据

  2. 蓝色曲线代表一个相对复杂的模型(6次多项式)

  3. 红色曲线代表一个相对简单的模型(样条插值)

上图中我们可以看到,两条曲线在给定的7个点上都表现完美:

  1. 但在这些点之外的区域,它们的行为完全不同

  2. 如果真实的数据生成过程是平滑的,红色曲线可能泛化更好

  3. 如果真实过程有复杂的波动,蓝色曲线可能更合适

  4. 这就是NFL定理的核心:没有一种算法在所有可能的问题上都最优

算法的好坏必须结合具体问题来判断,脱离问题背景空谈算法优劣是没有意义的。

如果读者感兴趣,也可以尝试拟合一下,如下是我用到的matlab代码:

% 演示NFL定理:没有免费的午餐定理
% 展示两条不同的曲线都能完美拟合相同的数据点
% 但在不同的问题背景下,它们的表现会有所不同

% 创建示例数据 - 7个数据点
x = 1:7;  % x坐标
y = [2.0, 3.8, 1.2, 4.9, 3.1, 5.8, 4.0];  % y坐标

% 创建密集点用于绘制平滑曲线
x_dense = 1:0.01:7;

% 第一条曲线 - 复杂模型(蓝色):6次多项式拟合
p1 = polyfit(x, y, 6);  % 6次多项式,可能过拟合
y1 = polyval(p1, x_dense);

% 第二条曲线 - 相对简单模型(红色):样条插值
y2 = interp1(x, y, x_dense, 'spline');

% 创建图形
figure('Position', [100, 100, 1000, 700]);

% 绘制数据点 - 黑色空心圆圈
plot(x, y, 'ko', 'MarkerSize', 12, 'LineWidth', 2.5, ...
     'MarkerFaceColor', 'none', 'MarkerEdgeColor', 'k', ...
     'DisplayName', '训练数据点');
hold on;

% 绘制第一条曲线 - 蓝色(复杂模型)
plot(x_dense, y1, 'b-', 'LineWidth', 2.5, ...
     'DisplayName', '复杂模型 (6次多项式)');

% 绘制第二条曲线 - 红色(相对简单模型)
plot(x_dense, y2, 'r-', 'LineWidth', 2.5, ...
     'DisplayName', '相对简单模型 (样条插值)');

% 图形美化
grid on;
xlabel('特征 X', 'FontSize', 14, 'FontWeight', 'bold');
ylabel('目标值 Y', 'FontSize', 14, 'FontWeight', 'bold');
title('NFL定理演示:不同模型对相同数据的拟合', ...
      'FontSize', 16, 'FontWeight', 'bold');

legend('Location', 'northwest', 'FontSize', 12);

% 设置坐标轴范围
xlim([0.8, 7.2]);
ylim([0.5, 6.5]);


hold off;

% 可选:保存图片
% saveas(gcf, 'NFL_Theorem_Demo.png');

十五、总结

机器学习是一个强大而实用的工具,但它并非万能。它的核心是从数据中学习规律以解决复杂问题。成功应用它的关键,在于深刻理解你的问题、你的数据,并为它选择那位“最对味”的算法专家。

这门课的旅程才刚刚开始,但有了这些核心概念作为地图,我对接下来的探险充满了期待。希望我的笔记也能为你带来同样的清晰感!

更多推荐