1701

Basics of Machine Learning with SQL Server 2017 and R

原文:Basics of Machine Learning with SQL Server 2017 and R

作者:

概览

传统的BI方法专注于从不同的源系统中获取数据,并在数据仓库/数据湖中增加数据。此数据存储库充当用于不同目的(如数据集市,报告和数据挖掘)的主源。所有这些形式的数据分析都要求最终用户应用分析思维来解释结果。机器学习是一种高级分析形式,系统/模型从提供给模型的数据中学习,并获得用于预测分析的智能。分析取决于机器学习模型开发过程,该过程由探索性数据分析,数据转换/建模,模型开发,模型训练,模型测试和模型即兴创作组成。

许多专业人士通常认为他们对数据库的经验已经涵盖了探索性数据分析技能。数据库专业人员精通数据分析,这更像是数据库模型/查询逻辑评估。机器学习系统中涉及的探索性数据分析本质上是统计性的,通常称为数据科学。

机器学习在统计学中有着深厚的根基,这需要为探索性数据分析的数据科学基础奠定坚实的基础。我们可以将统计分为两大类 – 描述性和推理性,广泛用于机器学习模型开发。

SQL Server 托管数据具有预定义架构和T-SQL构造的优势。像SSIS这样的ETL工具提供了以更快的速度和更广泛的规模转换数据的优势。假设在数据捕获/数据质量期间对数据进行了适当的结构化处理和错误处理,可以对该数据应用探索性数据分析,这是机器学习模型开发的基本步骤。模型开发,模型培训和模型测试遵循此分析。

在本教程中,我们将学习机器学习的基础知识,我们将学习必要的数据科学,以检查与机器学习模型开发相关的数据。我们将在SQL Server 2017中使用R来应用与机器学习相关的技术和分析。如果你是新的R,即可快速通过以下将R教程起床的速度 在这里

下面列出了本教程的结构。

  1. 机器学习术语和概念
    1. 什么是机器学习以及学习它的原因?
    2. 机器学习的应用
    3. 机器学习的类型
    4. Microsoft技术堆栈中的机器学习支持
  2. 统计基础知识
    1. 在机器学习中使用统计数据
    2. 统计分支
    3. 统计术语和概念 – 人口,样本,独立和依赖变量,概率分布
    4. 如何研究机器学习的足够统计数据
    5. 参考资料的有用链接
  3. SQL Server 2017和R的基础数据科学和探索性数据分析
    1. 集中趋势的度量 – 均值,中位数,模式
    2. 色散度量 – 范围,方差,标准偏差,四分位数范围
    3. 关联度量 – 相关性,协方差
    4. 如何使用R在SQL Server 2017托管数据中推导出上述内容
  4. 使用SQL Server 2017和R进行机器学习的基本图形分析
    1. 直方图
    2. 核密度图
    3. 散点图
    4. 箱形图
  5. SQL Server 2017和R的机器学习模型开发生命周期
    1. 机器学习模型生命周期
    2. 线性回归模型案例研究
    3. 模型开发,模型存储,模型提取,模型使用
    4. 预测和模型测试

阅读课程日程后,我相信您很高兴能够开始学习机器学习的基础知识。那么让我们从“什么是机器学习?”这个问题开始。

 

机器学习术语和概念

概览

机器学习和人工智能是当今行业中的流行语。几乎每个人都从他们的角度对这意味着什么有所了解。在我们开始掌握机器学习的基础知识之前,我建议您在没有任何偏见或影响您已经知道的情况下接近它。这将有助于通过清晰的思考过程建立您的基础。让我们尝试用一个基本的例子来理解机器学习。

什么是机器学习和学习的理由?

将下面的图像视为您手动解析的数据集。根据我们的经验,我们的大脑可以轻松地解释这些对象 现在让我们说,给定像苹果或狗这样的物体,我们可以很容易地识别和分类物体所属的群体。假设机器必须这样做,机器将如何学习这样做?要回答这个问题,首先我们需要了解人类大脑如何处理这些图像。人类大脑首先解析这些图像并从中学习,然后对图像进行分组。当为识别提供新对象时,它将测试对象与来自学习存储库的最近匹配对象匹配,并将其在同一组中进行分类。
具有按相似性排序的对象的示例图像
当我们训练机器从给定的数据集中学习,以便它可以将项目用于不同的目的,如分类,预测等,我们称之为概念机器学习。需要注意的一点是,机器并不意味着物理机器。为了简化理解,您可以将机器视为程序或数据模型。

下面提到了与机器学习相关的一些要点和定义:

  1. 机器学习涉及通过经验自动改善其性能的计算机程序。
  2. 机器学习是一种人工智能,它为计算机提供了在没有明确编程的情况下学习的能力。
  3. 机器学习专注于计算机程序的开发,这些程序在暴露于新数据时可能会发生变
  4. 机器学习的过程类似于数据挖掘。两个系统都搜索数据以查找模式。然而,在数据挖掘的情况下,机器学习不是提取用于人类理解的数据,而是使用该数据来检测数据中的模式并相应地调整程序动作。

为了最好地回答学习机器学习的原因,让我们来看看机器学习的一些应用。

机器学习的应用

以下是机器学习的一些应用,它清楚地说明了为什么我们需要学习机器学习。

  • 网络搜索:根据用户点击可能性对网页进行排名。
  • 财务:确定目标用户的新信用卡优惠。
  • 电子商务:预测欺诈交易。
  • 太空探索:太空探测器和射电天文学。
  • 机器人:处理自动驾驶汽车等新环境中的不确定性。
  • 社交网络:关系和偏好的数据。
  • 计算:基于认知处理建议应用程序中的错误。

机器学习处理预先预测/规范分析,这使其成为寻求提高技能的数据专业人员的自然延伸。

机器学习的类型

您可以在不同的参考资料中找到不同的机器学习分类。通常,机器学习过程分为三类 – 监督,无监督和强化学习。

  1. 监督机器学习 – 这种机器学习形式从标记数据中学习并采取行动。例如,考虑一个数据集,其中收集一组花的不同属性。使用这些属性,可以识别花家族的类别。在这里,模型从标记的历史数据中学习并预测结果。在本教程中,我们将学习这种机器学习形式。
  2. 无监督机器学习 – 这种机器学习形式从未标记的数据中学习并采取行动。例如,考虑一个包含给定国家或州或城市中所有房屋属性的数据集。使用像平方英尺的大小,设施,附近的公园,附近的学校等属性,不可能预测给定的房子。另外,即使是这样,预测的目的是基于属性而不是属性属于哪个房屋来预测给定房屋的价格。
  3. 强化学习 – 这种形式的机器学习取决于模型所执行的动作,从基于奖励的系统中学习。这是最先进的机器学习形式,适用于基于人工智能的系统,如神经网络,机器人和推荐引擎。

Microsoft技术堆栈中的机器学习支持

微软去年收购了R,其愿景是在内部部署,混合云环境和Microsoft Azure的Microsoft数据平台内实现高级分析。收购后,微软已将R与SQL Server,PowerBI,Azure和Cortana Analytics集成。此外,Revolution R Open已更名为Microsoft R Open和Revolution R Enterprise到SQL Server R服务(SQL Server 2017中的SQL Server机器学习服务)和/或Microsoft R Server。

SQL Server R服务/ SQL Server机器学习服务安装R的开源分发,以及Microsoft提供的支持分布式和/或并行处理的软件包。该体系结构的设计使得使用R的外部脚本在与SQL Server不同的进程中运行。R Services将R语言与SQL Server集成在一起,这有助于执行与数据接近的分析,并消除与数据移动相关的成本和安全风险。

传统的数据分析方法依赖于从OLTP数据库传输和转换数据>数据仓库>数据集市使用PowerShell进行管理,SSIS用于ETL,SSAS用于多维/内存分析,SSRS用于报告。使用基于集合的操作和数学代数的数据操作是使用T-SQL存储在OLTP数据库中的数据的最佳解决方案。将R与T-SQL结合使用可将数据科学,统计计算,机器学习和其他高级预测分析功能扩展到OLTP系统。

在接下来的章节中,我们将使用R和T-SQL进行动手练习,以进行探索性数据分析和机器学习。假设您已经安装了SQL Server 2017,机器学习服务以及R.如果还没有,您可以 在这里学习如何操作

统计基础知识

概览

在本节中,我们将介绍有关统计数据的信息,这些信息将帮助您更好地了解机器学习。

在机器学习中使用统计学

机器学习在数学和统计学方面有很深的根基。下面提到的是机器学习模型开发的不同阶段及其顺序。

  1. 数据探索 – 结构数据分析,如集中趋势,概率,方差等。
  2. 数据标准化 – 特征提取,归一化,噪声过滤等
  3. 数据转换(可选,如果需要) – 降维,特征选择等。
  4. 模型开发与培训
  5. 模型测试
  6. 模特即兴

在机器学习模型开发过程中,第一步是探索数据。这里的探索并不意味着使用复杂的查询,函数或连接来查询数据源中的数据。探索的目的是从统计角度评估数据的平衡,以开发机器学习模型。如果数据不平衡,也可能需要标准化和转换。在识别输入属性后,开发机器学习模型并用大部分数据进行训练。其余数据测试模型的预测准确性。即兴创建模型的预测准确性是一个迭代过程,直到达到令人满意的置信水平。

上面的文字中的一些术语对您来说可能不熟悉。其原因在于这些纯粹的统计术语在机器学习模型开发过程中具有重要意义。这突出了一个非常重要的观点。它需要强大的统计学基础知识来开发机器学习模型。我们将尝试在本节中介绍一些基本概念,并将更详细地介绍一些有用的资源。

统计分支

一般而言,我们将统计数据分为两个更高层次的分支 – 描述性和推理性。

描述性统计解释了数据的摘要和组织,并描述了一个示例。描述性统计的主要部分是中心趋势度量,可变性度量和相关性。我们将在下一节中介绍所有这些内容。这一统计分支构成了任何定量分析的基础。要获得更多描述性统计数据,您可以在此处阅读更多内容 。

推理统计解释数据并确定统计显着性,并从样本数据集中得出关于更广泛的未知数据集的结论。推论统计的基础在于 假设检验理论 和 中心极限定理。学习这一点对任何机器学习专业人士来说都是必不可少 基于推论统计,许多算法处理特定类型的预测分析问题。机器学习模型使用这些算法,这意味着在应用之前需要详细了解算法。

统计术语和概念

在得知机器学习在统计学中有深厚的根基之后,人们可能想要了解统计学的基本概念。详细学习统计数据超出了本教程的范围。但是,我们将介绍一些基本的统计概念,这些概念将帮助您开始理解基础知识。

让我们通过一个例子来学习一些统计术语。考虑一个实验,我们打算在美国找到喝啤酒的人的平均年龄。几乎不可能捕捉每个喝啤酒的人的年龄。饮用啤酒的人的整个数据集被称为人口。为了得出平均年龄,我们可以考虑在美国不同的主要城市(可能在每个州)进行调查,并收集固定数量的随机选择的不同年龄的人喝啤酒的年龄。这部分人被称为样本

考虑到我们想要获得智能来预测人们在给定年龄时消耗的啤酒量。我们可以绘制一个人的平均年龄数据与散点图上消耗的啤酒平均量来研究这种关系。这里的年龄将决定消费的啤酒量。因此,年龄被称为独立或解释变量,啤酒的量被称为 依赖或响应变量。统计算法应用于独立和因变量的不同组合或集合以开发机器学习模型。大多数机器学习算法都假设数据正常分布。下面是正态分布曲线的图像,也称为“钟形曲线”。
正常的数据分布
一旦你可以彻底解释上面的图表,你可以认为自己是机器学习的新手。在统计学中教育自己是学习机器学习的必要条件。请考虑阅读本 术语表中的统计术语的详细列表 ,并花时间了解这些术语的重要性和用法。词汇表文档包含数据科学或机器学习用语中常用统计术语的简明定义,这些术语可能没有足够的材料来详细解释每个术语。查找每个术语的详细解释的最简单方法是搜索Wikipedia或任何统计门户。有足够的材料可供学习这些概念。在您学习了不同的概念之后,您的理解应该发展为能够解释上面的图表,它的意义和它的应用。

如何研究机器学习的足够统计数据?

对机器学习算法的任何解释都将从它背后的统计数据开始。统计数据通常处于较高水平,因为从地面层面解释它需要为每种算法单独设置一本书。这对想要理解算法的专业人员提出了挑战,但没有正确的统计背景来学习这些概念。关于机器学习的任何书籍/教程/课程都看起来像没有正确的统计基础的数学课程。那么,问题是如何学习足够的统计数据而不会因为学习越来越多的统计数据而陷入失去兴趣或放弃机器学习的崩溃点?

每个人都有不同的方法来学习基于他们喜欢或不喜欢的新概念。我建议的一种方法是采用自上而下的方法来确定最佳起点。您可以从统计信息中的任何主题开始。如果您没有理解该主题的背景知识,请继续前进到较低级别的连接主题,直到达到最低级别主题。例如,假设您开始使用机器学习算法,该算法使用不同的统计术语,其中一个术语是正态分布。

  • 如果您还不知道标准偏差,则可能无法理解正态分布的特征。
  • 如果您不了解方差,您可能无法理解标准偏差,计算方法和重要性。
  • 为了理解方差,您需要知道均值和计算方差的公式。
  • 均值与任何其他统计推导无关,是小学数学的一部分。

因此,通过这种方式,您可以推断出具有正确背景的地方,以便了解最基本的主题并慢慢积累,直到您达到机器学习算法中使用的统计术语。

参考资料的有用链接

  1. 统计基础知识
  2. 变量
  3. 采样
  4. 描述性统计
  5. 中心极限定理
  6. 中央趋势的措施
  7. 分散的措施
  8. 协会的措施
  9. 正态分布

附加信息

  • 在继续下一部分之前,请考虑从这些链接中读取参考资料。我们将使用R和T-SQL在下一节中应用从这些链接中学到的概念。

探索性数据分析

概览

描述性统计通常用于探索性数据分析和理解数据的形状和分布。收集不同的统计系数,然后根据集中趋势的测量,关联度量和分散度量进行分类。我们将在最简化的统计术语中查看系数,公式及其意义。

中央趋势的措施

在统计学中,集中趋势是概率分布的中心或典型值。最常见的集中趋势衡量指标是算术平均值,中位数和模式。可以针对有限值集合或针对理论分布(例如正态分布)计算集中趋势。

意思

数学中有各种类型的手段,如算术平均值,几何平均值和谐波平均值。我们通常处理算术平均值,也称为“平均值”。以下是算术平均值的一个示例。

均值对数据集中的非常小或大的值非常敏感。考虑向下面的数据集再添加一个值,比如值1000,然后再计算平均值并再次测量,以便通过添加一个或多个数据点来查看它的偏差程度。
样本均值计算

中位数

中位数是将数据样本的较高一半,人口或概率分布与下半部分隔开的值。对于数据集,可以将其视为“中间”值。例如,在数据集{1,3,3,6,7,8,9}中,样本中的中值是6,第四大,也是第四小数。与平均值相比,中位数描述数据的基本优势在于它不会因极大或极小的值而偏斜,因此可以更好地了解典型值。例如,在理解家庭收入或资产等统计数据的变化很大时,少数极高或极低的数值可能会使平均值出现偏差。例如,中位数收入可能是建议“典型”收入的更好方式。

模式

一组数据值的模式是最常出现的值。与统计平均值和中位数一样,模式是一种以(通常)单个数字表示有关随机变量或总体的重要信息的方式。模式的数值与正态分布中的均值和中值的数值相同,并且在高度偏斜的分布中可能非常不同。

分散的措施

在统计学中,分散(也称为可变性,散射或扩散)是分布被拉伸或挤压的程度。统计分散度量的常见示例是方差,标准差和四分位数范围。

方差

在统计中,方差衡量数字与其平均值的差异。它通常也被称为标准偏差的平方。计算方差而不进入统计公式的公式如下所示。

标准偏差

在统计学中,标准偏差(也用希腊字母sigmaó表示)是量化一组数据值的变化或分散量的量度。低标准偏差表示数据点倾向于接近集合的平均值(也称为期望值),而高标准偏差表示数据点分布在更宽范围的值上。随机变量,统计总体,数据集或概率分布的标准差是其方差的平方根。在不进入统计公式的情况下计算方差的公式如下所示。
样本计算包括平均值,偏差,方差,总体和模式

范围

这个重要的统计数据描述了数据集中最高值和最低值之间差异的度量。范围是一个非常基本的措施。四分位数范围是通过将数据除以四分位数来计算的。四分位数范围在描述箱形图上的数据中起着重要作用,我们将在下一节中进行研究。你可以在这里阅读更多 。

协会的措施

在统计学中,用于量化两个或更多变量之间的关系的各种因素或系数中的任何一个。两个最重要的关联度量是相关性和协方差。在实践中,相关性是唯一经常使用的并且作为单变量或多变量分析的起点。

相关性可以指示一个或多个变量之间的预测关系。例如,基于电力需求和天气之间的相关性,电力公用事业可以在温和的一天产生更少的电力。在这个例子中,存在因果关系,因为极端天气导致人们使用更多的电来加热或冷却。

统计界有一句名言 – 相关性并不意味着因果关系。例如,在某个时间点有一个案例研究表明,在美国境外有麦当劳特许经营权的任何国家都没有参加过战争(也许是在第二次世界大战之后)。战争与麦当劳特许经营之间似乎存在关联。这是否意味着拥有麦当劳特许经营权是世界和平的手段?因此,这证明了相关性并不意味着因果关系。

使用R和T-SQL计算描述性统计系数

考虑到我们在某些表中存储了SQL Server数据库中的示例数据。我们打算测量不同的统计数据,如均值,中位数,标准差,标准误差,范围等。我们可以使用R中的心理包并将其应用于数据集以生成许多描述性统计系数,如下所示。

execute sp_execute_external_script 
-
@language = N'R',-
@script = N'-
 -
library(psych)-
OutputDataSet = data.frame(describe(InputDataSet))-
 -
',-
@input_data_1 = N'select TotalProductCost, UnitPrice, Orderquantity, SalesAmount, TaxAmt, Freight, ExtendedAmount -
from FactInternetSales'-
with result sets ((colnumber int, totalrecords int, mean float, std_dev float, median float, trimmed float, mad float, min_val float, -
max_val float, range float, skew float, kurtosis float, standard_error float))

在上面的代码中,我们从数据库中读取一个表,并使用R中的psych库,我们在从表中读取的输入数据上应用describe函数。输出模式在with result sets子句中定义。执行时,结果如下所示。
从数据库中读取一个表,并使用R中的psych库,我们在从表中读取的输入数据上应用describe函数
如果你清楚地理解这些统计数据,只需要两行R代码就可以得到一些统计数据,可以告诉你很多关于数据结构和传播的信息。没有讨论一些统计数据,如偏斜,峰度,标准误差,修正均值,平均绝对偏差等。这是一项为您自己研究和学习的任务,因为统计学是一个非常广泛的主题,您可能不得不养成自己研究新概念的习惯。

这些数字需要一些实践来分析和解释。可视化分析相对更容易探索和分析数据。我们将在下一节中学习一些用于探索性数据分析的可视化技术。

附加信息

  • 首先考虑学习公式,然后考虑它们在理解结构,传播或概率方面的重要性。

 

使用R和SQL Server进行图形分析

概览

借助图形分析而不是查看许多数字,可以更轻松,更快速地进行某些推断。统计数据中存在大量可视化,具体取决于分析类型和变量类别。其中一些非常基础,几乎用于各种分析作为起点。图形探索性分析最常用的可视化是:直方图,密度图,箱形图和散点图。

直方图

直方图是一种条形图。要构建直方图,第一步是“分箱”值范围,即将整个值范围划分为一系列间隔,然后计算每个间隔中有多少值。这些箱被指定为变量的连续,非重叠区间。箱(间隔)必须相邻,并且通常(但不是必须)具有相同的尺寸。直方图粗略地表示数据的基础分布的密度,并且通常用于密度估计。

要了解直方图的创建方式,请考虑以下数据集。假设我们想要了解在此数据集中赢得的游戏的分布。我们可以将Won字段中的所有值划分为固定范围的桶,并根据每个桶中的记录数量,我们可以创建一个称为直方图的条形图。
NFL每队的胜负数据
创建直方图时,其外观如下所示。下面的图表是使用R和T-SQL创建的。我们将在本节末尾了解如何执行此操作。该直方图解释了数据似乎几乎是正态分布的。第二个条形图从200到300不等,有待研究。此外,我们可以清楚地发现,总共有10支球队赢得了400到500场比赛。
来自NFL数据的胜利直方图

核密度图

直方图是理解数据分布的良好起点。如果您设置不同数量的箱或直接更改箱的开始和结束,直方图结果可能会有很大差异,尤其是使用相对少量的数据。这可以使解释变得困难。限制是您必须想象数据集中的传播形状。可视化分布形状的更有效方法是绘制如下所示的核密度图。核密度图实际上是平滑的直方图。密度估算涉及的科学涉及的不仅仅是绘制描述数据传播的平滑曲线。你可以 在这里阅读更多相关信息 。

下面是赢得的游戏的核心密度图。它描述了上面直方图中显示的相同数据的传播。下面的图表是使用R和T-SQL创建的。我们将在本节末尾了解如何执行此操作。
NFL的核密度图获胜

箱形图

在描述性统计中,箱形图或箱形图是用于通过其四分位数图形描绘数值数据组的方法。箱形图也可以具有从箱子(胡须)垂直延伸的线,指示上下四分位数之外的可变性,因此术语盒须图。我们在上一节简要介绍了四分位间距(IQR)。如果你分析下面的图表,这里盒子的大小等于IQR,胡须的长度是IQR与Q1或Q3相加的1.5倍。Boxplot通常是单个变量/字段的异常值分析的首选。此外,箱线图总结了许多信息,如Median,Q1,Q3以及任何异常值。

如果将其与正态分布进行比较,您还可以估计概率。要解释下图,您需要知道平均值,中位数,标准差,正态分布和IQR。这证明了基础统计对机器学习系统的工作至关重要。我们仍处于机器学习的第一阶段,我们正在探索数据的分布。
NFL数据的框图
下面是一个框图,显示了由团队部门分组的胜利的传播。从下面的图表箱线图,很容易弄清楚的是,美联南师(3 盒)具有最大的数据传播。AFC South包含获胜次数最少的球队,NFC North包含获胜次数最多的球队。似乎没有任何异常值,通常用两侧晶须上方的点表示。如果你了解盒子图背后的科学,你可以从这个盒子图中做出更多的推导。下面的图表是使用R和T-SQL创建的。我们将在本节末尾了解如何执行此操作。
方框图AFC南区的NFL数据示例

散点图

我们已经看到一些可视化解释了集中趋势的度量以及分散度量。解释关联度量的可视化,即使用散点图最佳地分析相关性。使用散点图,可以研究两个变量/两个字段之间的关系的性质。下面是一个散点图的示例,该散点图在Y轴上具有总游戏,在X轴上具有总体胜利。从该图可以很容易地看出两个变量之间似乎存在近似线性的关系。胜利的数量会随着球队比赛的总数而成比例地增加。下面的图表也是使用R和T-SQL创建的。
NFL数据的散点图
现在让我们快速查看使用T-SQL和R在SQL Server 2017中生成上述可视化的代码。

DECLARE @sqlquery nvarchar(max) =  N'SELECT Won, Team, Division, TotalGames FROM NFLTest'  

EXECUTE sp_execute_external_script @language = N'R', 
@script = N'

   jpeg(filename="C:\\temp\\plots\\Wins_Histogram.jpeg", width = 1080, height = 1080, units = "px", pointsize = 12, quality = 75,);  
   hist(InputDataSet$Won, col = ''lightgreen'', xlab=''Won'', ylab = ''Counts'', main = ''Histogram of Wins'');  

   jpeg(filename="C:\\temp\\plots\\Wins_vs_TotalGames.jpeg", width = 1080, height = 1080, units = "px", pointsize = 20, quality = 75,);  
   plot(InputDataSet$Won, InputDataSet$TotalGames, main="Scatterplot Example", xlab="Wins ", ylab="Total Games", pch=19)

   jpeg(filename="C:\\temp\\plots\\Wins_Density.jpeg", width = 1080, height = 1080, units = "px", pointsize = 20, quality = 75,);  
   data <- density(InputDataSet$Won)-
   plot(data, main="Kernel Density Plot Example",  xlab="Wins ", pch=19)
   polygon(data, col="red", border="blue")

   jpeg(filename="C:\\temp\\plots\\Wins_Teams_Boxplot.jpeg", width = 1080, height = 1080, units = "px", pointsize = 20, quality = 75,);  
   boxplot(InputDataSet$Won~InputDataSet$Division,data=mtcars, main="Boxplot Example", xlab="Division", ylab="Wins")

   dev.off();  
   ',  
@input_data_1 = @sqlquery

这里我们使用jpeg函数来指定我们要保存图表的文件的路径以及分辨率的详细信息。然后我们使用不同的绘图功能,如hist plot来创建不同类型的图表。正在使用的数据集由@sqlquery参数传递,我们只是从表中读取字段。要在R脚本中使用此数据,我们使用默认数据集名称 – InputDataSet并使用$ sign引用字段(即InputDataSet $ Won)。在图表功能中,我们提供图表相关的细节,如颜色,x轴标签,y轴标签,主要等。

有了这个,我们在T-SQL sp_execute_external_script存储过程中只用了几行R脚本创建了4个图形。执行此代码时,jpeg函数会创建绘图函数呈现输出的图形设备,并且具有相应图表的三个jpeg文件将保存在代码中指定的文件路径中。

附加信息

  • 考虑使用任何样本数据,并尝试使用这些基本可视化对数据的形状和传播进行推断。
  • 此图形分析的整个目的是分析数据是否正常分布和平衡,或者是否需要某些标准化。此外,它有助于理解数据集中不同字段之间的关系。

机器学习开发生命周期

概览

机器学习开发生命周期始于探索性数据分析。我们已经在最后两节中学到了与此相关的一些技术。我们学到的技术并非详尽无遗,并且根据数据类型和预期的机器学习算法,可能需要应用各种各样的探索性分析技术。

机器学习开发生命周期的下一步是确定模型开发的正确属性/字段/变量。监督机器学习可以分为两类 – 分类 和回归。在我看来,回归比分类导向方法更容易掌握。下面显示的是Microsoft提供的Microsoft Azure机器学习算法备忘单。你可以从 这里下载 。选择如下所示的正确机器学习模型的算法非常通用,甚至可以在Azure之外使用。
Microsoft Azure机器学习算法备忘单

线性回归模型案例研究

假设我们有一个如下所示的数据集,我们打算使用自变量预测因变量的输出。这可以说是最简单的机器学习用例。我们假设已经进行了尽职调查以清理数据,识别重要的独立和因变量,以及评估依赖变量和自变量的结构,扩散和相关性。

我们有如下所示的以​​下数据集,有两个字段。通常,数据集中有许多变量,在探索性数据分析之后,会识别出正确的依赖和独立字段集。将C视为独立字段,将F视为依赖字段或响应字段。让我们尝试按照上图中解释的算法,找出最接近的匹配算法,我们可以用它来找到下面数据集中两个变量(C和F,如下所示)之间的关系。
线性回归模型的数据集

  1. 我们想预测未来的数据点吗? – 是的
  2. 我们想要预测价值或类别吗? – 价值观。我们希望能够使用C的值来预测F.根据上图,这意味着我们应该实现回归。
  3. 我们的数据是按等级排序的类别吗? – 不。虽然我们可以创建存储桶并手动对其进行分类,但这不是必需的。
  4. 我们想要预测事件计数吗? – 不。我们想要预测响应值而不是计数。
  5. 我们想要预测单个值还是分布? – 单值。我们想要预测对应于C值的F的值。
  6. 线性逼近可以吗? – 我们需要使用散点图来分析这种关系的本质。下图显示两个变量之间存在完美的线性关系。这仅在确定性模型的情况下发生。统计模型不具有完美的线性关系。有些点落在线上,有些点位于线的上方或下方。我们正在使用确定性数据来简化问题,并将更多精力放在机器学习方法上。所以这里的答案是 – 是的,我们可以使用线性近似模型。

具有线性关系的散点图
最后,我们得出结论,我们应该使用线性回归算法。要使用它,应该了解此算法的详细信息。这实际上是初学者最简单的回归算法。总之,该算法找到一条最佳拟合线,该线以所有数据点距离线最小距离的方式通过所有数据点。此外,还有一个方程式可以找到相同的线。你应该考虑从这里阅读更多关于线性回归理论的内容 。

线性回归模型的开发与应用

任何机器学习模型开发都可以分解为一些标准和有序的任务集,如下所述。这些任务在任何机器学习模型中都很常见。根据算法的复杂性和类型,一些模型除了以下之外还可以具有其他任务。

  • 模型开发
  • 模型存储
  • 模型提取
  • 模型用法

我们上面探讨的数据集实际上是华氏度和摄氏度的数据。假设我们不知道这些变量之间的关系,我们打算使用线性回归模型找出它。因此,我们必须在SQL Server中托管的数据上使用R和T-SQL实现相同的功能。这个 技巧详细解释了相同的内容。考虑自己实现这一点,以获得第一次机器学习算法的实践经验。

预测和模型测试

用于简单线性回归模型(即一个独立的和一个响应变量)的普通最小二乘线性回归算法的公式如下所示。应用该算法的目的是找到系数“a”和“b”。在我们的例子中,Y-hat是华氏度,X是摄氏度,“a”是Y截距,“b”是斜率,如下所示。我们已经知道X和Y中的内容。我们模型的结果将提供a和b的值。
线性回归公式
要找出系数“a”和“b”,只需打印线性模型的摘要,您就应该能够找到如下所示的结果。
要找出系数“a”和“b”,只需打印线性模型的摘要,您应该能够找到结果
R平方是模型的准确性,它能够解释数据集中的变化。这里“1”表示100%的变化被解释,因此我们可以确信系数是准确的。在统计模型的实际情况中几乎从不100%,并且整个努力是找到使R平方接近“1”的变量组合。还有其他统计数据,如p值,t值,零假设概率等。这些统计数据解释了模型的不同属性,与模型的准确性和置信度有关。您将对这些结果的解释有很多疑问,您可以从 这里找到很多关于此的参考资料 。

最后一个问题是我们如何利用这些结果从摄氏度预测华氏温度?让我们尝试一个非常简单的例子来理解这一点。这里的截距是32,斜率是1.8。鉴于我们打算预测华氏温度为1摄氏度,预测这一点的线性回归方法的公式如下所述。

华氏度=(Y-截距)+(斜率*摄氏度)| 华氏度= 32 +(1.8 * 1)= 33.8。

这意味着1摄氏度将是33.8华氏度。使用这个与导出系数的等式,我们可以预测任何给定摄氏温度值的华氏温度值。我们使用线性回归算法开发了一个模型,并通过向数据集提供数据集来训练我们的模型,从中学习并推导出推断以预测预期结果。这就是我们称之为最简单形式的机器学习。

摘要

假设您对机器学习的学科完全陌生,我们开始本教程,讨论机器学习的一些基本术语,概念和理论。我们理解SQL Server 2017中支持机器学习相关要求的组件,包括R.机器学习在数学和统计学中有着深厚的根基。我们学习了一些基本的统计术语,基础知识,并了解了如何学习足够的机器学习统计数据,这样我们就不会失去对该主题的关注。

我们具备强大的统计学基础知识,机器学习的理论知识和R的实施知识,通过学习使用R和T-SQL提取的不同统计数据,学习了数据的形状和传播。我们还学习了如何使用不同的统计可视化以图形方式执行此操作。

在最后一节中,我们简要介绍了机器学习模型开发生命周期,使用R对样本数据实现了机器学习算法,并理解了在更高层次上解释测试结果的方法。我希望本教程在SQL Server 2017中使用机器学习服务,R和T-SQL为机器学习的初学者提供启动板

下一步

机器学习是一个非常广泛的主题,本教程中涉及的概念旨在通过最简单的用例为初学者提供机器学习实现的总体思路。为了在这门学科中脱颖而出,有必要练习并养成研究你遇到的每一个新术语或概念的习惯。请考虑彻底了解您选择的算法,并在开始实施之前了解有关如何使用SQL Server机器学习服务在Microsoft R Open中实现此功能的更多详细信息。有了这个,我们已经到了本教程的末尾。

28 total views, 3 views today

Author: Albert

Leave a Reply