机器学习和深度学习已被广泛接受,甚至更广泛地被误解了。 在本文中,我想退一步并从基本的角度解释机器学习和深度学习,讨论一些最常见的机器学习算法,并解释这些算法如何与创建预测模型的其他难题相关联从历史数据。
什么是机器学习算法?
回想一下, 机器学习是一类用于根据数据自动创建模型的方法。 机器学习算法是机器学习的引擎,这意味着它将数据集转换为模型的算法。 哪种算法效果最好(有监督,无监督,分类,回归等)取决于您要解决的问题的类型,可用的计算资源以及数据的性质。
机器学习的工作原理
普通的编程算法以简单的方式告诉计算机该做什么。 例如,排序算法将无序数据转换为按某些条件排序的数据,通常是数据中一个或多个字段的数字或字母顺序。
线性回归算法通常通过执行矩阵求逆以最小化直线和数据之间的平方误差,来将直线或参数(例如多项式)中另一个线性的函数拟合到数值数据。 使用平方误差作为度量标准,因为您不必担心回归线是在数据点之上还是之下。 您只关心线与点之间的距离。
非线性回归算法要使参数参数不是线性的曲线拟合到数据 ,因此稍微复杂一点,因为与线性回归问题不同,它们无法使用确定性方法求解。 取而代之的是,非线性回归算法实现了某种迭代的最小化过程,通常是对最速下降方法进行一些修改。
最陡下降原理基本上是计算当前参数值的平方误差及其梯度,选择步长(又称学习率),遵循“下山”梯度的方向,然后在新的位置重新计算平方误差及其梯度。参数值。 最终,运气很好,过程收敛了。 最速下降的变体试图改善收敛性。
机器学习算法甚至比非线性回归简单得多,部分原因是机器学习省去了适合特定数学函数(例如多项式)的约束。 机器学习通常可以解决两大类问题:回归和分类。 回归用于数字数据(例如,具有给定地址和专业的人的可能收入是多少?),分类用于非数字数据(例如,申请人是否会拖欠这笔贷款?)。
预测问题(例如,明天微软股票的开盘价是多少?)是时间序列数据回归问题的子集。 分类问题有时分为二类(是或否)和多类问题(动物,植物或矿物)。
监督学习与无监督学习
与这些划分无关,还有另外两种机器学习算法:有监督和无监督。 在监督学习中 ,您将为训练数据集提供答案,例如一组动物图片以及动物名称。 该训练的目标是建立一个模型,该模型可以正确识别以前未见过的(训练集中包含的一种动物的)图片。
在无监督学习中 ,该算法会遍历数据本身并尝试得出有意义的结果。 例如,结果可能是一组可能在每个群集内相关的数据点群集。 当群集不重叠时,效果更好。
培训和评估可以通过优化监督型学习算法的参数来找到最符合您数据真实性的一组值,从而将监督型学习算法转变为模型。 这些算法的优化程序通常依赖于最速下降的变体,例如随机梯度下降(SGD),它本质上是从随机起始点执行多次的最速下降。 对SGD的常见改进增加了一些因素,这些因素可以根据动量校正梯度的方向,也可以根据从一次遍历到另一次遍历的进展来调整学习率。
机器学习的数据清理
野外没有干净的数据。 为了对机器学习有用,必须积极过滤数据。 例如,您将要:
- 查看数据,并排除所有缺少大量数据的列。
- 再次查看数据,然后选择要用于预测的列。 (这是您可能需要在迭代时进行更改的东西。)
- 在其余列中排除仍缺少数据的任何行。
- 纠正明显的错别字并合并等效答案。 例如,美国,美国,美国和美国应合并为一个类别。
- 排除数据超出范围的行。 例如,如果您要分析纽约市内的出租车行程,则需要过滤出市区外边界以外的上下车经纬度行。
您可以做更多的事情,但这取决于收集的数据。 这可能很乏味,但是如果您在机器学习管道中设置了数据清理步骤,则可以随意修改并重复进行。
机器学习的数据编码和规范化
要将分类数据用于机器分类,您需要将文本标签编码为另一种形式。 有两种常见的编码。
一种是标签编码 ,这意味着每个文本标签值都用数字代替。 另一种是一键编码 ,这意味着每个文本标签值都将变成具有二进制值(1或0)的列。 大多数机器学习框架都具有为您进行转换的功能。 通常,单热编码是首选,因为标签编码有时会使机器学习算法混淆,以为编码列是有序的。
要将数字数据用于机器回归,通常需要将数据标准化。 否则,具有较大范围的数字可能趋于主导特征向量之间的欧几里得距离,它们的影响可能会以其他场为代价被放大,并且最速下降优化可能会难以收敛。 有很多方法可以对ML数据进行标准化和标准化,包括最小-最大标准化,均值标准化,标准化和缩放到单位长度。 此过程通常称为特征缩放 。
机器学习功能是什么?
由于我在上一节中提到了特征向量,因此我应该解释一下它们是什么。 首先, 特征是观察到的现象的单个可测量属性或特征。 “特征”的概念与解释变量的概念有关,该解释变量在诸如线性回归之类的统计技术中使用。 特征向量将单行的所有特征组合为数值向量。
选择特征的部分技术是选择一组最少的解释问题的自变量。 如果两个变量高度相关,则要么需要将它们组合为一个特征,要么应将其删除。 有时人们进行主成分分析以将相关变量转换为一组线性不相关变量。
人们用来构造新特征或降低特征向量维数的一些转换很简单。 例如,从Year of Death
Year of Birth
减去Year of Birth
Year of Death
然后构建Age at Death
,这是生命周期和死亡率分析的主要自变量。 在其他情况下, 特征构造可能不是那么明显。
通用机器学习算法
机器学习算法有数十种,其复杂度从线性回归和逻辑回归到深度神经网络和集合(其他模型的组合)不等。 但是,一些最常见的算法包括:
- 线性回归,也称为最小二乘回归(用于数值数据)
- Logistic回归(用于二进制分类)
- 线性判别分析(用于多类别分类)
- 决策树(用于分类和回归)
- 朴素贝叶斯(用于分类和回归)
- K最近邻居,又名KNN(用于分类和回归)
- 学习矢量量化,又名LVQ(用于分类和回归)
- 支持向量机,又名SVM(用于二进制分类)
- 随机森林,一种“装袋”集成算法(用于分类和回归)
- 增强方法(包括AdaBoost和XGBoost)是集成算法,可创建一系列模型,其中每个新模型都试图纠正先前模型的错误(用于分类和回归)
我们听到很多的神经网络和深度神经网络在哪里? 它们往往需要大量的计算资源,以至于需要GPU或其他专用硬件,因此您应仅将它们用于不适合简单算法的特殊问题,例如图像分类和语音识别。 请注意,“深层”意味着神经网络中有许多隐藏层。
有关神经网络和深度学习的更多信息,请参阅“ 深度学习的真正含义” 。
机器学习算法的超参数
机器学习算法对数据进行训练,以找到影响预测值或类别的每个自变量的最佳权重集。 算法本身具有变量,称为超参数。 与参数相反,它们称为超参数,因为它们控制算法的操作而不是确定权重。
最重要的超参数通常是学习率,它决定了寻找下一组权重以进行优化时使用的步长。 如果学习率太高,则梯度下降可能会很快收敛于平稳或次优点。 如果学习率太低,则梯度下降可能会停滞并且永远不会完全收敛。
许多其他常见的超参数取决于所使用的算法。 大多数算法都有停止参数,例如最大时期数,最大运行时间或每个时期的最小改进。 特定算法具有控制其搜索形状的超参数。 例如,随机森林分类器具有用于每片叶子的最小样本,最大深度,分裂时的最小样本,叶子的最小权重分数以及大约8个以上的超参数。
超参数调整
现在,一些生产机器学习平台提供了自动超参数调整。 本质上,您告诉系统要更改哪些超参数,以及可能要优化的指标,然后系统会在允许的所有运行中扫描这些超参数。 (Google Cloud超参数调整会从TensorFlow模型中提取适当的指标,因此您不必指定它。)
扫描超参数有三种搜索算法:贝叶斯优化,网格搜索和随机搜索。 贝叶斯优化往往是最有效的。
您会认为,尽可能多地调整超参数将为您提供最佳答案。 但是,除非您在自己的个人硬件上运行,否则可能会非常昂贵。 在任何情况下,收益都是递减的。 凭借经验,您将发现哪些超参数对您的数据和算法选择最重要。
自动化机器学习
说到选择算法,只有一种方法可以知道哪种算法或算法集合将为您的数据提供最佳模型,那就是对它们进行全部尝试。 如果您还尝试所有可能的规范化和功能选择,那么您将面临组合爆炸式增长。
尝试手动进行所有操作都是不切实际的,因此,机器学习工具提供商当然会花很多精力来发布AutoML系统。 最好的方法将特征工程与算法和规范化扫描相结合。 最佳模型的超参数调整通常留待以后使用。 但是,要素工程设计很难实现自动化,而且并非所有的AutoML系统都能处理。
总而言之,机器学习算法只是机器学习难题的一小部分。 除了算法选择(手动或自动)之外,您还需要处理优化器,数据清理,特征选择,特征归一化和(可选)超参数调整。
处理完所有这些并构建适用于数据的模型后,就该部署该模型,然后根据条件的变化对其进行更新。 但是,在生产环境中管理机器学习模型完全是蠕虫。
From: https://www.infoworld.com/article/3394399/machine-learning-algorithms-explained.html