在本文中,根本没有足够的空间来涵盖所有的机器学习算法!相反,更好的方法是专注于最常见的那些。
在本章的剩余部分,我们将研究以下内容:
· 监督学习:你可以将这些算法归结为两种变体。一种是分类,它将数据集分为常见的标签。算法示例包括朴素贝叶斯分类器和k-最近邻算法。接下来是回归,它在数据中找到连续的模式。对于这一点,我们将研究线性回归、集成建模和决策树。
· 无监督学习:在这个类别中,我们将介绍聚类。在这方面,我们将涵盖k均值聚类。
图3-3展示了机器学习算法的一般框架。
在本章早些时候,我们看过贝叶斯定理。至于机器学习,已经被修改成了一种称为朴素贝叶斯分类器的东西。它是“朴素”的,因为假设变量是相互独立的,也就是说,一个变量的发生与其他变量无关。的确,这可能看起来像是一个缺点。但事实是,朴素贝叶斯分类器已经被证明是非常有效且开发速度很快的。
还有另一个要注意的假设:先验假设。这表示如果数据发生了变化,预测将是错误的。
朴素贝叶斯分类器有三种变体:
· 伯努利:如果您有二进制数据(真/假,是/否)。
· 多项式:如果数据是离散的,比如书的页数。
· 高斯:如果您正在处理符合正态分布的数据。
朴素贝叶斯分类器的常见用例包括文本分析。例如,电子邮件垃圾邮件检测、客户细分、情感分析、医学诊断和天气预测。原因在于,这种方法对基于关键特征和模式的数据分类很有用。
为了了解如何做到这一点,让我们举个例子:假设您经营一家电子商务网站,拥有大量的客户交易数据库。您想了解产品评论评级、折扣和年度时间等变量如何影响销售。
表3-2显示了数据集的一个示例。
然后,您将把这些数据组织成频率表,如表3-3和表3-4所示。
在研究这些数据时,我们将购买称为一个事件,而将折扣和产品评价视为独立变量。然后,我们可以为其中一个独立变量制作概率表,比如产品评价。请参阅表3-5。
利用这张图表,我们可以看到在产品评价较低的情况下购买的概率为7/24,约为29%。换句话说,朴素贝叶斯分类器允许在数据集内进行更精细的预测。它相对容易训练,可以在小型数据集上表现良好。
K-近邻算法(k-NN)是一种用于对数据集进行分类的方法(k代表近邻算法的数量)。其理论是,彼此接近的值很可能是模型的良好预测因子。可以将其类比为“物以类聚”。
K-NN的一个用例是信用评分,该评分基于多种因素,如收入、付款历史、地理位置、房屋所有权等。算法将数据集划分为不同的客户段。然后,当新客户加入数据库时,您可以查看他或她属于哪个群体,这将成为信用评分。
K-NN实际上很容易计算。事实上,它被称为“惰性学习”,因为数据没有训练过程。
要使用K-NN,您需要确定最近值之间的距离。如果值是数值型的,可以基于欧几里得距离进行计算,这涉及复杂的数学。或者,如果存在分类数据,那么可以使用重叠度量(这是数据相同或非常相似的情况)。
接下来,您需要确定近邻算法的数量。虽然拥有更多的邻居会使模型平滑,但也可能需要大量的计算资源。为了解决这个问题,您可以将更靠近其邻居的数据分配更高的权重。
线性回归显示了某些变量之间的关系。该方程(假设有足够并且有质量的数据)可以根据输入来帮助预测结果。
示例:假设我们有关于备考时间与考试成绩的数据。请参见表3-6。
正如您所看到的,总体关系是正向的(这描述了更多学习时间与更高分数之间的相关趋势)。使用回归算法,我们可以绘制最佳拟合线(这是通过使用称为“最小二乘法”的计算来完成的,该方法最小化了误差)。请参见图3-4。
从中我们得到以下方程式:
成绩 = 学习小时数 × 0.03731 + 0.6889
然后,假设您为考试学习了4小时。您的预估成绩将是多少?方程告诉我们如何计算:
0.838 = 4 × 0.03731 + 0.6889
这个估算有多准确?为了回答这个问题,我们可以使用一个叫做R平方的计算。在我们的案例中,它是0.9180(范围从0到1)。该值越接近1,拟合度就越好。所以0.9180相当高。这意味着学习小时数解释了考试成绩的91.8%。
现在,这个模型是简化的。为了更好地反映现实情况,您可以添加更多的变量来解释考试成绩,比如学生的出勤率。在这种情况下,您将使用多元回归。
■ 注意 如果某个变量的系数非常小,那么最好不要将其包括在模型中。
有时数据可能不是呈直线分布的,此时回归算法将无法工作。但您可以使用更复杂的版本,称为多项式回归。
毫无疑问,对于某些数据集来说,聚类可能不起作用。但好消息是有替代方法,比如决策树。这种方法通常在非数值数据上表现更好。
决策树的起点是根节点,位于流程图的顶部。从这个点开始,将会有一棵决策路径的树,称为分支。在这些点上,您将使用一个算法做出决策,并计算概率。树的末端将是叶子节点(或结果)。
在机器学习领域,一个著名的例子是使用决策树来预测泰坦尼克号的沉没事件。该模型根据三个特征来预测乘客的生存率:性别、年龄和随行的配偶或子女数量(sibsp)。以下是它的样子,见图3-5。
决策树具有明显的优势。它们易于理解,适用于大型数据集,并为模型提供透明度。
然而,决策树也有缺点。一个是误差传播。如果其中一个分支被证明是错误的,那么这个错误可能会在模型的其余部分中蔓延传播!
接下来,随着决策树的增长,将会有更多的复杂性,因为将会有大量的算法。这最终可能导致模型性能降低。
集成建模意味着在预测中使用不止一个模型。尽管这会增加复杂性,但已经证明这种方法能够产生强大的结果。
要看到这一点,可以看看2006年开始的“奈飞奖”,该公司宣布将支付100万美元给任何能够将其电影推荐系统的准确性提高10%或更多的个人或团队。奈飞还提供了一份包含了来自480,189名用户对17,770部电影的超过1亿次评分的数据集。最终这份数据集有超过30,000次的下载。
为什么奈飞要做这一切呢?一个重要原因是公司自己的工程师在取得进展方面遇到了困难。那么为什么不把它交给大家来解决呢?这被证明是相当聪明的,与潜在好处相比,100万美元的奖金真的很微薄。
这次比赛无疑激发了众多程序员和数据科学家的活动,包括学生和AT&T等公司的员工。
奈飞还使比赛变得简单。主要要求是团队必须披露他们的方法,这有助于提高结果(甚至有一个团队排名的仪表板)。
但直到2009年,一个团队——贝尔科的实际混沌——赢得了奖项。然而,也存在相当大的挑战。
那么,获胜的团队是如何做到的呢?第一步是创建一个基准模型,以平滑处理数据的复杂问题。例如,一些电影只有少数几个评分,而其他电影则有数千个评分。然后,存在一个棘手的问题,即有些用户总是给一部电影评一星。为了处理这些问题,贝尔科使用机器学习来预测评分,以填补这些空白。
一旦基准模型完成,就会有更多的困难挑战需要解决,比如以下几点:
获胜的团队使用了集成建模,涉及数百种算法。他们还使用了一种称为“提升”(boosting)的方法,这是构建连续模型的过程。通过这种方法,算法中的权重根据前一个模型的结果进行调整,有助于随着时间的推移提高预测的准确性(另一种方法称为“装袋”(bagging),是同时构建不同模型,然后选择最佳模型)。
但最终,贝尔科找到了解决方案。然而,尽管如此,奈飞并没有使用这个模型!现在不清楚为什么会这样。也许是因为奈飞无论如何都在远离五星评级,更加专注于流媒体。这个比赛也因为有人认为可能存在隐私侵犯而引起了一些负面反应。
不管怎样,这次比赛确实突显了机器学习的威力,以及合作的重要性。
K均值聚类算法对于大型数据集非常有效,它将相似的未标记数据分成不同的组。第一步是选择k,即簇的数量。为了帮助确定k的值,您可以对数据进行可视化,以查看是否存在明显的分组区域。
下面是一个示例数据,如图3-6所示:
对于这个示例,我们假设将有两个簇,这意味着也将有两个质心。质心是簇的中点。我们将随机分配每个质心,您可以在图3-7中看到。
正如您所看到的,左上角的质心看起来偏离较远,但右侧的一个更好。然后,K均值算法将计算质心的平均距离,然后更改它们的位置。这将循环进行,直到错误相当小,这一点称为收敛点,您可以在图3-8中看到。
当然,这只是一个简单的示例。但当然,在处理复杂的数据集时,难以确定初始簇的数量。在这种情况下,您可以尝试不同的k值,然后测量平均距离。通过多次重复此过程,应该会更加准确。
那么为什么不只选择一个较高的k值?您当然可以这样做。但当计算平均值时,您会注意到只会有逐渐的改进。因此,一种方法是在这种情况下停止。这在图3-9中可以看到。
然而,K均值也有其缺点。例如,它在处理非球形数据时效果不佳,就像图3-10中的情况一样。
对于这种情况,K均值算法可能不会捕捉到周围的数据,即使它们具有某种模式。但是有一些算法可以帮助解决这个问题,比如DBScan(具有噪声的基于密度的空间聚类),它旨在处理数据集大小差异很大的混合数据。不过需要指出,DBScan可能需要大量的计算资源。
接下来,还有一种情况是有一些簇包含大量数据,而其他簇包含很少数据。会发生什么情况?K均值算法可能会忽略掉那些包含少量数据的簇,就像图3-11中的情况一样。
这些算法可能会变得复杂,需要强大的技术技能。但重要的是不要在技术细节上陷得太深。毕竟,重点是找到利用机器学习实现明确目标的方法。
再次强调,Stich Fix是获取有关这方面指导的好地方。该公司的首席算法官埃里克·科尔森(Eric Colson)在《哈佛商业评论》(Harvard Business Review)的2023年11月刊上发表了一篇题为“基于好奇心的数据科学”(Curiosity-Driven Data Science)的文章。在文章中,他分享了自己在创建数据驱动型组织方面的经验。
这其中的核心是允许数据科学家探索新的想法、概念和方法。这导致了人工智能被应用于业务的核心功能,如库存管理、关系管理、物流和商品采购。这是一次变革,使组织变得更加灵活和高效。科尔森还认为,这为组织提供了“对抗竞争的保护屏障”。
他的文章还提供了有关数据分析的其他有用建议:
· 数据科学家:他们不应该隶属于其他部门,而应该有自己的部门,直接向首席执行官报告。这有助于关注关键优先事项,以及全面了解组织的需求。
· 实验:当数据科学家有新想法时,应该在少数客户的小样本上进行测试。如果有反响,那么可以推广到其他客户群体。
· 资源:数据科学家需要完全访问数据和工具。还应提供持续培训。
· 通才:聘请横跨不同领域的数据科学家,如建模、机器学习和分析(科尔森将这些人称为“全栈数据科学家”)。这会导致小型团队,通常更高效和更有生产力。
· 文化:科尔森寻找“通过实践学习、适应不确定性、平衡长期和短期回报”等价值观。
· 机器学习的根源可以追溯到20世纪50年代,它是计算机能够在不需要明确编程的情况下学习的领域。它通过使用复杂的统计技术来吸收和处理数据。
· 异常值是数据集中远离其余数字的数据。
· 标准差测量了与平均值的平均距离。
· 正态分布——呈钟形的形状——表示了变量的概率总和。
· 贝叶斯定理是一种复杂的统计技术,可以更深入地研究概率。
· 真正例是模型做出正确预测的情况。另一方面,假正例是模型预测结果为真,但实际上并不是真的情况。
· 皮尔逊相关系数显示了两个变量之间的关系强度,范围从1到-1。
· 特征提取或特征工程描述了选择模型变量的过程。这很关键,因为即使一个错误的变量也可能对结果产生重大影响。
· 训练数据用于创建算法中的关系。另一方面,测试数据用于评估模型。
· 监督学习使用带标签的数据创建模型,而无监督学习则不使用。还有半监督学习,它同时使用了两种方法。
· 强化学习是一种通过奖励准确预测并惩罚不准确预测的方法来训练模型的方法。
· k-近邻算法(k-NN)是一种基于接近的值是模型的良好预测因素的概念的算法。
· 线性回归估计了某些变量之间的关系。R平方将指示关系的强度。
· 决策树是基于是/否决策流程的模型。
· 集成模型使用多个模型进行预测。
· k均值聚类算法将相似的无标签数据分组到不同的组中。
联系客服