机器学习的基本概念
机器学习的概念
总体概念
- 机器学习的基本过程:经验归纳、总结规律、预测未来
- 机器学习的发展过程:统计方法——>简单算法——>概率推理——>反向传播——>数据驱动——>无监督学习——>深度学习
数据集的概念
-
一行数据我们称为一个样本
-
一列数据我们称为一个特征
-
有些数据有目标值(标签值),有些数据没有目标值(如上表中,电影类型就是这个数据集的目标值) 数据类型构成:
- 数据类型一:特征值+目标值(目标值是连续的和离散的)
- 数据类型二:只有特征值,没有目标值 数据分割:
-
机器学习一般的数据集会划分为两个部分:
-
训练数据:用于训练,构建模型
-
测试数据:在模型检验时使用,用于评估模型是否有效
- 划分比例:
- 训练集:70% 80% 90%
- 测试集:30% 20% 25%
- 数据基本处理:即对数据进行缺失值、去除异常值等处理
- 划分比例:
-
其他形式的数据分类
-数据应分为训练集、验证集与测试集
-训练集:用于训练模型
-验证集:确保模型没有过拟合
-测试集:用来评估模型效果
特征工程的概念
- 概念:使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。其意义会直接影响机器学习的效果
- 内容:
- 特征提取:将任意数据(如文本或图像)转换为可用于机器学习的数字特征
- 特征预处理:通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
- 特征降维:指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
机器学习的流程
总体流程图
数学问题的抽象
- 抽象成数学问题要明确可以获得什么样的数据,抽象出的问题,是一个分类还是回归或者是聚类的问题
获取数据
- 数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限
- 数据要有代表性,否则必然会过拟合
- 而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数量级的差距
- 还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下
- 如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了
特征预处理与特征选择
- 特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。
- 归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。
- 筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。
模型训练与调优
- 现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。模型的选择需要根据数据类型、样本数量,问题本身中和考虑。
模型诊断
- 过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等
- 过拟合的基本调优思路是增加数据量,降低模型复杂度
- 欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度
- 误差分析 也是机器学习至关重要的步骤。通过观察误差样本全面分析产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
- 诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。
模型融合
- 一般来说,模型融合后都能使得效果有一定提升。而且效果很好。 工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证
上线运行
- 这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。 这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程
机器学习的分类
- 按照学习模式的不同,可分为监督学习、半监督学习、无监督学习和强化学习
监督学习:
-
是从有标签的训练数据中学习模型,然后对某个给定的新数据利用模型预测它的标签。如果分类标签精确度越高,则学习模型准确度越高,预测结果越精确。
-
监督学习主要用于回归和分类
-
常见的监督学习的回归算法有线性回归、回归树、K邻近、Adaboost、神经网络等
-
常见的监督学习的分类算法有朴素贝叶斯、决策树、SVM、逻辑回归、K邻近、Adaboost、神经网络等
半监督学习
-
半监督学习是利用少量标注数据和大量无标注数据进行学习的模式
-
半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类
-
常见的半监督学习算法有Pseudo-Label、Π-Model、Temporal Ensembling、Mean Teacher、VAT、UDA、MixMatch、ReMixMatch、FixMatch等
无监督学习
无监督学习是从未标注数据中寻找隐含结构的过程
无监督学习主要用于关联分析、聚类和降维
常见的无监督学习算法有稀疏自编码(Sparse Auto-Encoder)、主成分分析(Principal Component Analysis, PCA)、K-Means算法(K均值算法)、DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise)、最大期望算法(Expectation-Maximization algorithm, EM)等
- 监督学习与无监督学习对比
强化学习
强化学习类似于监督学习,但未使用样本数据进行训练,是是通过不断试错进行学习的模式
在强化学习中,有两个可以进行交互的对象:智能体(Agnet)和环境(Environment),还有四个核心要素:策略(Policy)、回报函数(收益信号,Reward Function)、价值函数(Value Function)和环境模型(Environment Model),其中环境模型是可选的
强化学习常用于机器人避障、棋牌类游戏、广告和推荐等应用场景中
用灰色圆点代表没有标签的数据
不同算法之间的比较
监督学习与强化学习的比较
四种算法之间的比较
所有的问题都可以用“神经网络”来处理,但是背后承载算力的硬件成本谁来负担呢?