如何选择正确的机器学习算法
机器学习通用方法
1 - 将问题分类
- 按输入分类:如果是标记数据,则是监督学习问题。如果它是用于查找结构的未标记数据,那么这是一个无监督机器学习学习问题。如果解决方案是通过与环境交互来优化目标函数,那么这就是强化学习问题。
- 按输出分类:如果模型的输出是数字,那就是回归问题。如果模型的输出是一个类,那就是分类问题。如果模型的输出是一组输入组,则是一个聚类问题。
2 - 了解数据
在为正确的问题选择正确的算法的过程中,数据的理解过程起着关键的作用。一些算法可以处理较小的样本集,而另一些算法则需要大量的样本。某些算法处理分类数据,而另一些算法则喜欢处理数值输入。
- 分析数据:这一步有两个重要的任务:用描述性统计理解数据,用可视化和图表理解数据。
- 处理数据:数据处理包括预处理、概要分析、清理,它通常还涉及从不同的内部系统和外部源收集数据。
- 转换数据:将数据从原始状态转换为适合建模的状态的传统想法是特征工程。转换数据和特征工程实际上可能是同义词。特征工程是将原始数据转换为更能代表预测模型的基础问题的特征的过程,它提高了模型对不可见数据的准确性。
3 - 查找可用的算法
在对问题进行分类并理解数据之后,下一个里程碑是确定在合理的时间内可以应用和实际实现的算法。影响模型选择的因素包括:
- 模型的准确性。
- 模型的可解释性。
- 模型的复杂性。
- 模型的可扩展性。
- 构建,训练和测试模型需要多长时间?
- 使用该模型进行预测需要多长时间?
- 该模型是否符合业务目标?
4 - 实现机器学习算法
设置一个机器学习管道,使用一组精心选择的评估标准比较每个算法在数据集上的性能。另一种方法是在不同的数据集子组上使用相同的算法。对此,最好的解决方案是只执行一次,或者让一个服务在添加新数据时每隔一段时间执行一次。
5 - 优化超参数。
优化超参数有三种选择:网格搜索、随机搜索和贝叶斯优化。
机器学习任务的类型
- 监督学习
- 无监督学习
- 强化学习
监督学习
监督学习要求算法的可能输出已知,并且用于训练算法的数据已经标记有正确的答案。如果输出是实数,我们称任务回归。如果输出来自有限数量的值,这些值是无序的,那么它就是分类。
无监督学习
无监督机器学习更接近于一些人所说的真正的人工智能,即计算机可以学习识别复杂的过程和模式,而无需人工提供指导。无监督机器学习适用于对象信息较少的情况,特别是训练集没有标记的场景。无监督机器学习可以观察对象组之间的一些相似性,并将它们包含在适当的聚类中。有些对象可能与所有聚类有很大不同,这些对象通常是离群值。
强化学习
强化学习是指面向目标的算法,它学习如何在多个步骤中实现复杂目标或沿特定维度最大化。例如,通过多次移动最大化游戏中赢得的积分。它与监督学习的不同之处在于,在监督学习中,训练数据具有关键作用,因此模型用正确答案本身进行训练,而在强化学习中,没有答案。在没有训练数据集的情况下,必然要从其经验中学习。
常用的机器学习算法
1-线性回归
线性回归是一种统计方法,它允许总结和研究两个连续(定量)变量之间的关系:一个变量,表示为X,被视为自变量。表示为y的另一个变量被视为因变量。线性回归使用一个自变量X来解释或预测因变量y的结果,而多元回归使用两个或两个以上自变量根据损失函数(如均方误差(MSE)或平均绝对误差( MAE))来预测结果。所以当你被告知预测当前正在运行的进程的未来值时,你可以使用回归算法。尽管这个算法很简单,但是当有成千上万个特征时,它还可以很好地工作,例如自然语言处理中的bag of words和n-grams。更复杂算法的缺点是对许多特征的过度拟合(数据集不够大),而线性回归提供了良好的质量。但是,如果特征冗余,则不稳定。
线性回归
2-Logistic回归
不要将这些分类算法与回归方法混淆。Logistic回归执行二元分类,因此标签输出是二进制的。当输出变量是分类时,我们也可以把逻辑回归看作是线性回归的一个特例,我们使用概率的对数作为因变量。逻辑回归采用特征的线性组合并应用一个非线性函数(sigmoid),所以它是神经网络的一个小实例!
3-K-means
假设你有很多数据点(水果的测量值),你想把它们分成苹果和梨两组。K均值聚类是一种聚类算法,用于自动将大组划分为更小的组。
假设你有13个数据点,实际上是7个苹果和6个梨,(但你不知道),你想把它们分成两组。在这个例子中,我们假设所有的梨都比所有的苹果大。您选择两个随机数据点作为起始位置。然后,你把这些点和所有其他点进行比较,找出哪个与起始点最接近。这是您第一次尝试聚类,这是最慢的部分。
你有你最初的组,但是因为你随机选择,这可能是不准确的。假设你有六个苹果和一个梨在一组,一个苹果和五个梨在另一组。所以,取一组所有点的平均值作为该组的新起点对另一组也做同样的计算。然后再次进行聚类以获得新的组。
你怎么知道你做完了呢?你做平均值,然后再做一次分组,看看是否有任何点改变了分组。如果没有,则完成了。否则,你需要再来。
4-KNN
K-最近邻是分类算法,是监督学习的子集。K-means是一种聚类算法,它是无监督学习的一个子集。
如果我们有足球运动员的数据集(包含他们的位置和测量数据),我们想要在我们有测量但没有位置的新数据集中为足球运动员分配位置,那么我们可以使用K-最近邻。
另一方面,如果我们有足球运动员的数据集,需要根据相似性分组为K个不同的组,我们可能会使用K-means。
在K-最近邻中,K表示在确定新玩家位置时投票的邻居的数量。检查K = 5的示例。如果我们有一个新的足球运动员需要一个位置,我们将数据集中的五个足球运动员与最接近我们的新足球运动员的测量值进行对比,我们让他们对我们应该分配新球员的位置进行投票。
在K-means中,K表示我们最终想要拥有的聚类数。如果K = 7,那么在我的数据集上运行算法后,我将拥有七个足球运动员聚类。
5-支持向量机
SVM使用超平面(直线)来分隔两个不同标记的点(X和O)。有时这些点不能被直接分开,所以它需要将它们映射到更高维的空间(使用核),在那里它们可以被直接分开(超平面)。这看起来像原始空间上的曲线,实际上它在更高维度的空间中确实是一个直线!
6-随机森林
假设我们想知道什么时候投资宝洁,基于过去一个月的数据(如开盘价格、收盘价格、价格变化和成交量,假设有900个数据点),我们有三种选择:买进,卖出和持有。
我们想要建立一个决策树来决定最佳策略,例如,如果股票价格的变化比前一天高出10%,并且交易量很大,我们就购买这只股票。我们不知道该使用哪些特征,我们有很多特征。
因此,我们采用随机的一组度量和随机抽样的训练集,并构建决策树。然后我们使用不同的随机测量集和每次随机数据样本多次进行相同的操作。最后,我们有许多决策树,我们使用它们来预测价格,然后根据多数决定最终预测。
7-神经网络
神经网络是一种人工智能。神经网络背后的基本思想是模拟计算机内部大量密集互连的脑细胞,使其能够学习东西,识别模式,并以类似人的方式做出决策。关于神经网络的惊人之处在于,它不需要对其进行编程就可以明确地学习:它可以自己学习,就像大脑一样!
一方面,神经网络有输入,这可能是一张图片,来自无人机的数据,或者围棋棋盘的状态。另一方面,还有神经网络想要做的输出。在它们之间有节点和连接。连接的强度根据输入决定需要什么输出。