1. 如何在Altair KnowledgeStudio平台应用线性回归
1.1 为什么选择Altair KnowledgeStudio平台
绝大多数的数据分析项目都是遵照着CRISP-DM的行业标准流程 (详情可见:https://zhuanlan.zhihu.com/p/107757240)。
市面上常见的开源或商业数据分析软件大多需要从业人员掌握一定编程知识,且需要大量时间来编写代码并调试。这里需要强调的就是Altair KnowledgeStudio的强大之一在于无需编码,一切的操作都可以通过拖拽完成。下面我会用一个例子来展示如果使用Altair KnowledgeStudio来完成线性回归的建模操作。
这个例子从导入数据到最终模型预测大概需要10-15分钟的时间。操作简便,节约时间成本。 我们会用到的数据是一个有关鱼生长长度的数据集,其中包含了每条鱼的编号(index),年龄(age),生长水温(temp)和最终它的生长长度(length)。我们的目的是去研究鱼的长度与年龄和水温是否存在线性关系,以及存在怎样的的线性关系。
1.2 Altair KnowledgeStudio的线性回归
1.2.1 数据导入
数据在本地以Excel的格式存在,我们在Connect栏选择Excel Import 节点,并双击点开。
选择本地数据的所在路径,并为引入目标数据集命名。选择软件自动识别数据是否包含字节名称。设置好之后请点击next
选择需要导入的字节。在这里,我们知道鱼的编码与鱼的长度是无关的,因此我们可以将这一列数据排除。
点击Next,我们可以进一步确认每一个字节的数据类型,并且这里我们提供了预览该数据集的功能。
点击运行,我们就会看见一个绿色的,名为 fish的数据集自动生成了。
1.2.2 查看数据
双击fish数据集,我们可以看见在页面的最下方有很多不同的选项卡。它们涵盖了Altair KnowledgeStudio数据画像功能的重要部分。
比如说,在overview report 选项卡中,,点击calculate all,可计算出常见的统计指标。% of Missing Values可以选择每个字节的缺失值比例。如下图所示,三个字节均没有缺失值。
又比如,correlations选项卡中,可计算三个变量之间的相关系数,可以看一下age、temp与length的相关程度。便于后续选择模型。
如果您想了解更多选项卡的功能展示,请直接联系作者以获取更多资料。
1.2.3 异常值检验
因为线性回归模型对异常值极度敏感,极大异常值或极小异常值均会对模型造成不可预知的影响。检测数据是否存在异常值是建立每个线性回归模型的必须操作。
在Altair KnowledgeStudio中,我们可以通过Outlier Detector节点完成此操作。在Profile栏中拖出Outlier Detector, 并单机选中fish连线到Outlier Detector。
双击该功能节点,我们可以看见目标数据和设定结果数据名。这里大家可以看见,我们提供了多种计算距离的方法。根据不同的数据类型,和大家都这些检验方法的熟悉程度,大家可以自行选择不同算法。这里为了演示,我们接受默认算法。
点击下一步,选择我们需要检测的字节。
选好变量后,如果点击Next 再点击Run。同样的,这里会自动生成一个结果数据集。点开它,我们会发现,该数据中不存在异常值。
1.2.4 数据分箱
做预测分析时,我们通常会将数据集分成训练集和测试集。我们会用训练集来生成我们的模型结果,随后再用测试集来检测我们模型结果的好坏。
这里,我们可以通过Manipulate栏中的 Partition节点 将原数据集随机抽取70%的样本作为训练集,30%的样本作为测试集。
将fish数据集与partition相连,双击点开,点击add。可先添加训练集,完成后再次点击add,添加测试集。完成后点击run。会出现两个数据集。
分箱结果会如下图所示。
1.2.5 拟合线性回归模型
我们基于训练集拟合线性回归模型。在models栏中选择linear regression。将fish_train数据集与该模型相连。
并双击Linear Regression模型节点
在dependent variable中选择我们的被解释变量。红框的部分可以进行重要变量的选择,按照解释变量对被解释变量的影响程度进行选择,可以将对被解释变量影响不显著的变量剔除。而且用逐步选择也可一定程度上缓解多重共线。在independent variable中将解释变量选入,这里可以选择是否一定包含该变量。若没有,则会根据变量重要性选择。点击run。双击点开linear regression,可查看回归报告。
在output to view中选择currently selected sequence,可看模型最终拟合情况。读者也可在该栏中选择其他选项来看一下单变量的结果。
最终结果如下图
该表可以看出模型的拟合情况,其中Generalized R^2=0.855,F值为82.845,认为模型拟合程度较好,被解释变量的85.5%都可由这两个解释变量来解释。
这一张表是方差分析的表,同样可以看出结果还是不错的。
Independent Variable Statistics中表示的是解释变量的情况,其中Model Parameter表示的是其回归系数,后面是对变量是否显著进行的检验。其中P值均小于0.05,我们认为年龄和温度对鱼的长度是有显著影响的。
多重共线性检验:
Variance Inflation Factors是方差膨胀因子(VIF),VIF越大,显示共线性越严重。经验判断方法表明:当0这里年龄和温度的VIF均小于10,认为该模型不存在多重共线性。
最终模型结果为:
length=3472.564+28.135age-94.399temp
1.2.6 交叉验证
由于我们训练集只有41条数据。建模数据量的严重不足会出现模型过拟合问题。过拟合指的是被创建出来的模型,仅仅在训练数据中变现良好,如果用在未知数据上,结果可能会很差。
这个时候我们可以通过交叉验证看是否存在过拟合现象。交叉验证可以理解为:我们将原始数据复制成多个重复的样本,随后针对每一个样本做出分箱操作,建模并验证模型准确性。通过这个步骤,我们可以让原始数据里面的每个记录都有机会作为建立模型的数据,与此同时,我们可以让每个记录都有机会作为验证模型的数据。
在Evaluate模块中选择Cross Validation,将fish_train数据集和linear regression模型一起连过去,会发现该选项变蓝。双击点开。
这里K-Fold validation指的是我们准备复制多少次重复的样本,实施多少次类似的操作。这里我们选择默认值五次。随后点击Next。
这张表可以修改各字节的名字。这里我们选择不修改。点击Run
做完上述步骤后会出现一个html的report。双击点开。
从下面的结果图中,我们可以看到这五次验证的似然估计的均方误差(MSE)。发现每一次的MSE差别很大,说明之前模型拟合的不好,可能出现了过拟合现象。接下来我们可能需要重新回到数据本身和模型本身,去调整参数,去更正数据再次建立别的预测模型。
1.2.7 模型部署
假设我们已经找到了适合的模型,我们想要将模型结果落地,以供业务使用。Altair KnowledgeStudio主要提供了两种不同方案。
第一种是将模型的结果生成不同的代码。这些代码可以轻松的轻松的嵌入企业自身的IT系统中实现二次开发。我们可以从Action 模块中选择 Generate Code节点。
根据模型不同,企业自身的IT环境不同,我们可以最多从以下的代码中进行选择,常见的有Java,Python,SQL, PMML等。
第二种是,我们可以将新的数据导入到Altair KnowledgeStudio平台中,并利用建立好的模型进行新数据打分。同样的,我们可以从Action 模块中选择 Scoring节点。
在结果数据集中,我们可以找到对每一个记录的模型预测值,以及相应的预测原因。
2. 写在后面
目前暂定下一篇会写逻辑回归模型,如果大家对数据分析或者模型感兴趣,关于数据分析这一块大家还对什么内容感兴趣,欢迎在文后留言与我交流,也欢迎大家提出意见和建议。