目录
1 机器学习
1.1 机器学习的定义
机器学习就是把无序的数据转换成有用的信息。机器学习算法通过对大量数据的分析和学习,能够自动发现数据中的模式,并利用这些模式来做出预测或做出决策。
机器学习横跨了计算机科学、工程技术和统计学等多个学科。
1.2 一些关键术语
- 数据集 (Dataset):用于训练和评估机器学习模型的数据集合。
- 特征 (Feature):用于描述数据集中每个样本的属性或特性,也称为输入变量。特征类型有数值型、二值型、枚举型等。
- 标签 (Label):用于监督学习的数据集中的输出变量,表示样本的真实结果或目标。在分类算法中目标变量的类型通常是标称型的(即,离散型的分类类别),而在回归算法中通常是连续型的。
- 模型 (Model):通过机器学习算法从数据中学习到的规律或模式的表达形式。该模型可以用于预测新数据的结果或进行决策。
- 算法训练 (Training):机器学习模型通过使用训练数据集来学习数据的规律或模式的过程。
- 训练集(TrainDataset):用于训练机器学习算法的数据样本集合。
- 测试集 (TestDataset):用于评估机器学习模型性能的数据集,该数据集与训练数据集是独立的。
- 监督学习 (Supervised Learning):一种机器学习方法,训练数据包含了输入和相应的输出(标签),模型通过学习输入和输出之间的关系来进行预测,例如分类和回归。
- 无监督学习 (Unsupervised Learning):一种机器学习方法,训练数据只包含输入,模型通过学习数据之间的隐藏结构或模式来发现数据的内在关系,例如聚类、密度估计等,无监督学习可以减少数据特征的维度。
- 半监督学习 (Semi-supervised Learning):一种机器学习方法,训练数据集包含部分有标签数据和部分无标签数据,模型利用有标签数据进行监督学习,并利用无标签数据进行学习。
- 强化学习 (Reinforcement Learning):一种机器学习方法,模型通过与环境互动,在尝试达到某个目标的过程中学习最优的行为策略。
- 损失函数 (Loss Function):用于度量模型预测结果与实际标签之间的差异的函数。
- 优化算法 (Optimization Algorithm):用于调整模型参数以最小化损失函数的算法。
- 过拟合 (Overfitting):当模型过度学习训练数据中的噪声或特定样本的特征,导致在新数据上表现不佳的情况。
- 欠拟合 (Underfitting):当模型未能捕获数据中的相关关系,导致无法对训练数据或新数据进行准确预测的情况。
- 交叉验证 (Cross-validation):一种评估机器学习模型泛化性能的技术,通过将数据集划分为多个子集,在不同的子集上进行训练和评估,以减少评估结果的方差。
2 机器学习的主要任务
- 分类 (Classification):将数据集中的样本划分到不同的类别中。常见应用:垃圾邮件识别、图像分类、医学诊断等。
- 回归 (Regression):主要用于预测连续型变量的数值。例如房价预测、销售量预测等。
- 聚类 (Clustering):将数据集中的样本划分为不同的组别,使得组内的样本相似度较高,组间的相似度较低,常用于市场细分、社交网络分析等。
- 降维 (Dimensionality Reduction):减少数据集中特征的维度,保留最重要的特征信息,可以帮助减少计算复杂度、去除冗余信息、可视化数据等。
- 异常检测 (Anomaly Detection):识别数据集中与大多数样本不同的异常样本,可应用于信用卡欺诈检测、网络安全等领域。
- 关联规则学习 (Association Rule Learning):发现数据集中项目之间的关联关系。例如购物篮分析中的频繁项集挖掘。
- 强化学习 (Reinforcement Learning):通过与环境的交互学习最优的动作策略,应用于机器人控制、游戏玩法优化等。
- 生成对抗网络 (Generative Adversarial Networks, GANs):学习生成能够欺骗判别器的新数据,以此来生成逼真的数据样本,可用于图像生成、数据增强等。
- 自然语言处理 (Natural Language Processing, NLP):处理和理解人类语言的任务,包括文本分类、命名实体识别、情感分析等。
- 推荐系统 (Recommendation Systems):根据用户的历史行为和偏好,预测用户可能感兴趣的物品,此系统多应用于电商平台、社交媒体等。
3 如何选择合适的机器学习算法
选择实际可用的算法,须考虑下面两个问题:
1、使用机器学习算法的目的,想要算法完成何种任务?
- 如果要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。
- 确定选择监督学习算法之后,需要进一步确定目标变量类型:
- 如果目标变量是离散型,如是/否、A/B/C、红/黄/黑等,可选择分类算法;
- 如果目标变量是连续型数值,如0.0~100.00、-999~999等,则选择回归算法。
2、需要分析或收集的数据是什么?
我们应该充分了解数据,对数据了解得越充分,越容易创建符合实际需求的应用程序。主要应该了解数据的以下特性:
- 特征值是离散型变量还是连续型变量;
- 特征值中是否存在缺失的值,何种原因造成缺失值;
- 数据中是否存在异常值,某个特征发生的频率如何(是否罕见得如同海底捞针),等等
充分了解这些数据特性可以缩短选择机器学习算法的时间。
一般来说,发现最好算法的关键环节是反复试错的迭代过程。一般并不存在最好的算法或者可以给出最好结果的算法,我们要尝试不同算法的执行效果。对于所选的每种算法,都可以使用其他的机器学习技术来改进其性能。
4 开发机器学习应用程序的一般步骤
1)收集数据。有很多方法收集样本数据,如:制作网络爬虫从网站上抽取数据、使用公开可用的数据源等。
2)准备输入数据:得到数据后
- 必须确保数据格式符合要求;
- 为使用的机器学习算法准备特定的数据格式;
3)分析输入数据:此步骤主要是人工分析得到的数据,确保数据集中没有垃圾数据。
- 最简单的方法是用文本编辑器打开数据文件,查看得到的数据是否为空值;
- 可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常值等;
- 可通过图形化展示数据;
4)训练算法。机器学习算法从这一步才真正开始学习,根据算法的不同,我们将前两步得到的格式化数据输入到算法,从中抽取知识或信息。如果使用无监督学习算法,由于不存在目标变量值,则不需要训练算法这一步骤。
5)测试算法。对于监督学习,已知了用于评估算法的目标变量值;对于无监督学习,用其他的评测手段来检验算法的成功率。无论哪种情形,如果不满意算法的输出结果,则可以回到第4步,改正并加以测试。
6)使用算法。将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述的步骤。
文末作者语:本篇内容纯理论知识,要想深刻掌握还需结合实际案例,多进行编程实战 。