1. 如何定义机器学习?

一个程序通过学习经验E,在任务T上的性能P随着经验E的增加而提高。
简单来说​​:机器学习是关于从数据中自动分析并获得模型,并利用模型对未知数据进行预测或决策的学科。

2. 机器学习在哪些问题上表现突出,你能说出四类应⽤吗?

机器学习在以下四类问题上表现尤为出色:

1、​​存在复杂模式或规则的问题​​: 这些问题背后的规则对于人类来说过于复杂或难以清晰定义。例如:

​​图像识别​​(判断照片中是猫还是狗)

​​语音识别​​(将音频转换为文字)

传统方法难以编写规则,而机器学习可以通过大量样本自动学习其中的复杂模式。

​​2、需要大规模个性化的问题​​: 为海量用户或项目定制解决方案,手工操作不现实。例如:

​​推荐系统​​(Netflix 推荐电影,Amazon 推荐商品)

​​精准广告投放​​

机器学习可以为每个用户学习其独特的偏好。

​​3、环境快速变化的问题​​: 问题的模式不是静态的,会随时间演变。例如:

​​欺诈检测​​:欺诈分子的手段不断翻新,系统需要持续学习新的欺诈模式。

​​股票市场预测​​

机器学习模型可以随着新数据的到来不断更新和适应。

**4、​​从复杂数据中获得洞察的问题​​:**需要探索大型、高维数据集以发现隐藏的相关性或结构。例如:

​​客户细分​​:将客户群分成具有不同特征的组别,用于制定营销策略。

​​基因数据分析​​:发现疾病与特定基因序列之间的关系。

无监督学习算法可以自动发现这些有价值的洞见。

3. 什么是被标记的训练集?

一个被标记的训练数据集是指其中每个​​训练实例​​(或样本)都同时包含了:

​​输入数据(特征,Features)​​:描述该实例的一组属性。

​​期望输出(标签,Label 或 目标,Target)​​:我们希望模型为该输入预测的正确结果。

​​例如​​:在一个垃圾邮件分类器中,一个被标记的数据集包含成千上万封邮件。对于每一封邮件:

**​​输入(特征)​​:**可能是邮件的发件人、标题、正文内容等。

**​​输出(标签)​​:**是人工预先标注好的类别,如 “spam”(垃圾邮件)或 “ham”(非垃圾邮件)。

被标记的数据集是​​监督学习​​的基础。

4. 最常⻅的两种监督学习任务是什么?

最常见的两种监督学习任务是:

1、​​分类(Classification)​​:

​​任务​​:预测一个​​离散的类别标签​​。

​​例子​​:

判断一封邮件是“垃圾邮件”还是“非垃圾邮件”(二分类)。

识别图片中的动物是“猫”、“狗”还是“鸟”(多分类)。

判断肿瘤是“良性”还是“恶性”。

​​2、回归(Regression)​​:

​​任务​​:预测一个​​连续的数值​​。

​​例子​​:

预测一套房子的售价。

预测明天某只股票的价格。

根据一个人的教育年限和工作经验预测其年薪。

5. 你能说出四种常⻅的⽆监督学习任务吗?

​​**聚类(Clustering)**​​ :将数据分成相似的组(如客户细分)。

​​异常检测(Anomaly detection) ​​:识别数据中的异常点(如信用卡欺诈检测)。

​​降维(Dimensionality reduction)​​ :减少数据中的特征数量,同时保留其重要结构(如数据可视化)。

​​关联规则学习(Association rule learning)​​ :发现数据中属性之间的有趣关系(如“购物篮分析”)。

6. 你会使⽤什么类型的算法让机器⼈在各种未知地形中⾏⾛?

强化学习(Reinforcement Learning)​​。机器人(智能体)通过尝试不同的动作(行走方式)并从环境(地形)中获得奖励(如成功前进)或惩罚(如摔倒)来学习最优策略。

7. 你会使⽤什么类型的算法将客户分成多个组?

聚类(Clustering)​​,这是一种无监督学习任务。常见的算法有 K-Means、DBSCAN 等

8. 你会把垃圾邮件检测问题定义为监督学习问题还是⽆监督学习问题?

监督学习问题​​。因为它需要使用一个已经被标记为“垃圾邮件”或“非垃圾邮件”的历史邮件数据集来训练模型。

9. 什么是在线学习系统?

在线学习系统是一种能够​​逐步、增量地​​进行学习的系统。它每次只接收一个或一小批(mini-batch)数据,并据此快速更新模型,从而能够适应快速变化的数据流。

10. 什么是核外学习?

核外学习(Out-of-core learning)​​ 是在线学习的一种,专门用于处理​​体积过大而无法全部装入计算机主内存(RAM)的数据集​​。算法将数据分成小批量,一次只加载一批到内存中进行训练。

11. 什么类型的算法依赖于相似性度量来进⾏预测?

基于实例的学习(Instance-based learning)​​ 算法。最典型的例子是 ​​k-最近邻算法(k-Nearest Neighbors, k-NN)​​,它通过计算新实例与训练集中所有实例的相似度(如距离)来进行预测。

12. 模型参数和模型超参数有什么区别?

模型参数(Model Parameters)​​:是模型​​内部​​的变量,其值​​从训练数据中学习​​得到(如线性回归中的权重、神经网络中的连接权重)。

**​​模型超参数(**Model Hyperparameters)​​:是学习算法​​外部​​的配置变量,其值​​不能在训练过程中学习​​,必须在训练开始前由人工设定(如 k-NN 中的 k 值、随机森林中树的数量)。

13. 基于模型的算法搜索什么?它们最常⽤的成功策略是什么?它们如何做出预测?

​​**搜索什么:**基于模型的算法从数据中搜索一种​​模式​​或​​模型​​(如一个数学公式或一组规则)。

**​​成功策略​​:**最常用的策略是​​归纳(Generalization)​​,即学习一个能够对未见过的数据做出良好预测的模型,而不是简单地记住训练数据。

**​​如何预测​​:**通过从训练数据中学习到的​​模型​​来对新实例做出预测。

14. 你能说出机器学习中的四个主要挑战吗?

1、​​**数据质量差​​:**训练数据数量不足、噪声太多、特征无关或特征不具代表性。

​​2、**过拟合(Overfitting)​​:**模型在训练数据上表现太好,但学习了噪声和细节,导致在新数据上泛化能力差。

​​3、**欠拟合(Underfitting)​​:**模型过于简单,无法捕捉数据中的基本模式,在训练数据和新数据上都表现不佳。

​​4、**数据漂移(Data Drift)​​:**模型上线后,数据模式随着时间发生变化,导致模型性能下降。

15. 如果你的模型在训练数据上表现很好,但对新实例的泛化能⼒很差,这是怎么回事?你能说出 三种可能的解决⽅案吗?

​​
这是过拟合(Overfitting)​​。

​​三种解决方案​​:

​​简化模型​​:选择参数更少、更简单的模型(如降低多项式次数、减少决策树的深度)。

​​收集更多训练数据​​。

​​减少训练数据中的噪声​​(如修复数据错误、去除异常值)

16. 什么是测试集?为什么要使⽤它?

​​测试集​​:是模型在训练阶段​​从未见过​​的数据子集。

**​​目的​​:**用于在项目最后​​评估最终模型的泛化性能​​,模拟模型在实际应用中的表现。绝不能用于调整模型或选择模型。

17. 验证集的⽬的是什么?

验证集​​用于:

1、​​模型选择​​:比较不同的模型架构。

2、​​超参数调优​​:为模型寻找最佳的超参数组合。

3、​​防止信息泄露​​:在调整模型和超参数时,提供一个 unbiased 的性能评估,避免使用测试集导致过拟合。

18. 什么是train-dev集?什么时候需要它?如何使⽤?

​​Train-dev集​​:是从​​训练集​​中分出的一小部分数据,不用于训练,但其分布与训练集相同。

​​何时需要​​:当训练数据和真实环境中的数据存在​​分布不匹配​​时(例如,用高清网络图片训练,但模型要用于手机拍摄的模糊图片)。

​​如何使用​​:

1、如果在训练集上表现好,但在train-dev集上表现差,说明模型​​过拟合​​了训练集。

2、如果在train-dev集上表现好,但在验证集/测试集上表现差,说明问题来自​​数据不匹配​​,而不是过拟合。

19. 如果使⽤测试集来调整超参数会出现什么问题?

这会导致​​信息泄露​​。你会根据测试集的表现来调整模型,相当于让模型“偷看”了考试答案。这样调整后的模型会对测试集产生​​过拟合​​,使得在测试集上评估出的泛化性能过于乐观,无法真实反映模型在全新数据上的表现。测试集将不再能提供模型性能的无偏估计。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐