机器学习笔记——第 1 部分
机器学习笔记——第 1 部分
我第一次做这些笔记是一年前我开始研究 机器学习 .为此,我参加了 Andrew Ng 在 Coursera.com 上的一门在线课程,尽管有学术背景,但其中的主题和技术以非常全面的方式进行了解释。
在这里,我想将这些笔记报告为一系列文章,其中我解释了基本的机器学习原理和算法。此外,我添加了一些使用 Python 的编码示例,以了解如何实施这些技术进行数据研究。
机器学习的定义
“”的旧定义 机器学习 “ 是:
“正是这一研究领域使计算机能够在没有明确编程的情况下学习” (亚瑟·塞缪尔,1959)
但是,现代定义更详细:
“一个 据说计算机程序在某些任务 T 和性能度量 P 方面从经验 E 中学习,如果它在 T 中的任务上的性能(由 P 度量)随着经验 E 而提高” (汤姆·米切尔,1997)
一个例子是下跳棋: 乙 = 尽可能多地玩游戏; 吨 =玩跳棋; 磷 : 赢得下一场比赛的概率。归根结底,机器学习是一种构建能够从数据中学习的系统的方法,即在给定一些性能指标的情况下,在某些任务上做得更好。
有监督和无监督学习
机器学习可以分为两类:
- 监督学习 :程序员告诉计算机该做什么并“教”他们。对于这种学习,我们对数据之间 训练数据 (即,用于构建模型的数据和 训练 他们与 标签 (即,我们想要预测/描述的目标变量)。它可以分为两个子组:
- R 出口 :这是一个程序,在给定一组数据的情况下,根据其他一些数据预测连续输出(即房屋价格、代理收入……) 特征 ,描述数据的其他方面(例如,房子里有多少个房间,有多少层……)。
- 分类 :此过程的输出是离散的,这意味着结果代表类别/类别(例如垃圾邮件/非垃圾邮件、欺诈/非欺诈……)。有可能:
- “二进制分类”(即,它预测两个类别之一——0/1、垃圾邮件/非垃圾邮件);
- “多类分类”(即,它预测多个类之一——0、1、2、3、4,……);
- “多标签分类”(即,它一次预测更多类——例如,一个标签告诉一个数字是否大于 5,另一个告诉它是否为奇数)。
监督算法的例子有: K-最近邻 , 线性 和 逻辑回归 , 支持向量机 , 决策树 , 随机森林 , 和 神经网络 (我将在以后的帖子中讨论它们)。
- 无监督学习 :我们让计算机自己学习,因为我们不知道数据之间可能存在的关系(即我们有没有标签的数据)。可以通过基于变量之间的某些特征关系对数据进行聚类来推导结构和关系,或者在不丢失太多信息的情况下减少数据集的维度。
无监督算法的例子有: K-Means 聚类 , 主成分分析 , 异常检测 (我将在以后的帖子中讨论它们)。
还有一些算法 半监督学习 (即,我们有部分标记的数据)和 强化学习 (即计算机通过根据其执行的操作获得奖励或惩罚来学习)。
构建模型时,可以根据使用的数据数量对过程进行分类:
- 批量学习 :系统通过使用所有可用数据进行学习。
- 小批量学习: 系统使用数据组而不是整个数据集。
- 线下学习: 通过使用新数据和旧数据更新模型来训练系统。
- 在线学习 :每次新数据按顺序到达(数据单独或以小组形式提供)时,系统都会学习丢弃旧数据。
机器学习的问题
在模型训练之前或期间,必须仔细考虑一些问题,以避免建模不佳或性能不佳。当然,这些问题取决于数据:
- 小的 数量 数据的 :如果我们有少量记录,则该模型不能被视为对问题的一般描述,因为它可能仅适用于少数示例。可以收集更多数据或人为创建新数据,从可用数据开始(即所谓的 数据增强 或者 训练集扩展 ——例如:在一个图像样本中,可以通过移动几个像素的图像、添加噪声或旋转它来创建新的图像)。
- 非代表性数据 :有时用于训练模型的数据并不能概括我们想要描述的人群。例如:我们想训练一个模型来预测一个城市内的人口特征,使用 1000 名男性和 100 名女性,但城市中的男女比例为 50-50%。在这种情况下,数据集不是对城市人口的一般描述,必须进行仔细的数据选择。
- 不平衡数据集 :这是一个与目标变量相关的问题,即我们想要用模型预测/描述的变量。当一个类相对于其他类更频繁时,数据集被认为是 不平衡 并且必须考虑到这一点才能访问模型性能。让我们考虑当数据集包含 1000 封非垃圾邮件和 100 封垃圾邮件时检测垃圾邮件/非垃圾邮件的示例:如果模型仅预测“非垃圾邮件”,则在 91% 的情况下它是正确的,但它的性能预测垃圾邮件将是 0%。这不能被认为是一个好的模型,必须进行仔细的分析。
- 较差的 质量 数据 :数据可能包含 异常值 (即异常值)或具有缺失值的特征。在这种情况下,可以删除这些记录或将它们替换为其他值,而无需修改其他记录。这个过程是所谓的一部分 数据清理 过程,即数据集准备好进行训练时的过程。
- 不相关的特征 :数据集中的某些特征对于最终的预测任务可能是多余的或无用的,因此,它们可能会被删除或与其他特征组合。例如:在使用“姓名”、“年龄”和“学校分数”特征来研究学生与智商之间的相关性时,由于智商不依赖于一个人的姓名,因此可以丢弃特征“姓名” .
- 过拟合 :这是可以在模型训练期间评估的。如果模型太复杂(即参数太多),它可以在 训练集 (即用于训练模型的数据集)但在新数据集上表现不佳。这意味着该模型仅适用于特定的一组数据,不能用作一般描述。解决方案是收集更多数据或简化模型。此外,有几种技术可以了解模型是否过拟合(未来的帖子)。
- 欠拟合 : 这是过拟合的相反情况。如果模型太简单(即参数太少),它会在训练集和新数据集上表现不佳。解决方案是使用更强大的模型和/或使用新功能。
一个好的模型必须考虑到上述所有问题才能可靠。从上面的列表中, 数据探索和准备至关重要 因此,有时它们被认为是整个过程中最重要的部分(当然,最长的一个!)。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明