一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

机器学习管道骨架实例化的制作方法

2022-08-31 01:22:41 来源:中国专利 TAG:


1.本公开内容中讨论的实施方式涉及机器学习管道骨架的实例化。


背景技术:

2.机器学习(ml)通常采用利用训练数据训练的ml模型来做出预测,所述预测随着持续的训练而自动变得更加准确。ml可以用于多种应用,包括但不限于流量预测、网络搜索、在线欺诈检测、医疗诊断、语音识别、电子邮件过滤、图像识别、虚拟个人助理和自动翻译。
3.本公开内容中要求保护的主题不限于解决任何缺点或仅在诸如上面所描述的那些环境的环境中操作的实施方式。更确切地说,提供该背景技术仅是为了示出可以实践本公开内容中描述的一些实施方式的一个示例技术领域。


技术实现要素:

4.根据实施方式的方面,操作可以包括获得机器学习(ml)管道骨架模型,该ml管道骨架模型被配置成生成用于新ml项目的ml管道骨架,该管道骨架指示用来处理新ml项目的新数据集的一组第一功能块,所述一组第一功能块中的每个第一功能块具有相应功能。对于所述一组第一功能块中的每个相应第一功能块,所述操作包括识别由ml管道骨架模型使用的训练数据以确定管道骨架的相应第一功能块。训练数据指示用于训练ml管道骨架模型的现有ml管道的第二功能块。所述操作还包括识别现有ml管道的与训练数据相关联的代码片段,其中,代码片段对由训练数据指示的第二功能块进行实例化。此外,所述操作包括基于与用来确定第一功能块的训练数据相关联的代码片段来选择用于相应第一功能块的实例化的代码片段。
5.实施方式的目的和优点将至少通过权利要求书中特别指出的元素、特征和组合来实现和达到。
6.前面的总体描述和下面的详细描述两者均作为示例给出,并且是说明性的,而不是对所要求保护的本发明的限制。
附图说明
7.将通过使用附图以附加的特征和细节来描述和说明示例实施方式,在附图中:
8.图1是表示与基于现有机器学习项目自动生成新机器学习项目有关的示例环境的图;
9.图2示出了可以执行以修改新机器学习项目的管道骨架以生成改进的管道骨架的示例操作组;
10.图3a是确定功能块的依赖性的示例方法的流程图;
11.图3b示出了可以指示三个不同功能块关于数据集的不同列的使用的示例表;
12.图4是确定功能块与数据集特征之间的关系映射的示例方法的流程图;
13.图5是确定管道骨架的块实例化的示例方法的流程图;
14.图6是将管道骨架改进为改进骨架的示例方法的流程图;
15.图7示出了可以执行以将管道骨架实例化为具体管道骨架的示例操作组;
16.图8是获得用于管道骨架的实例化的代码片段的示例方法的流程图;
17.图9是获得用于管道骨架的实例化的代码片段的另一示例方法的流程图;
18.图10是确定用于实现的代码片段关于管道骨架的适应性的示例方法的流程图;
19.图11是生成候选管道组的示例方法的流程图;以及
20.图12示出了示例计算系统的框图。
具体实施方式
21.本公开内容中描述的一些实施方式涉及将现有机器学习(ml)项目自动适应新ml项目的方法和系统。
22.随着ml变得越来越普遍,常常缺乏可用于实现新ml项目的ml专家(例如,熟练的数据科学家)。尽管已经提出了各种automl解决方案(例如auto-sklearn、autopandas等)来解决在缺乏ml专家的情况下实现新ml项目所面临的日益严峻的挑战,但当前的automl解决方案仅提供了简单的和部分的解决方案,所述简单的和部分的解决方案不足以使非专家能够全面实现新机器学习项目。此外,尽管现有ml项目的开源软件(oss)数据库(例如,kaggle、github等)也被提议作为用于应对由非专家实现新ml项目的挑战的另一种解决方案,但对于非专家在这些数据库中找到潜在有用的现有ml项目可能是困难的或不可能的。此外,即使非专家可能成功地在这些数据库中找到潜在有用的现有ml项目,对于非专家而言,修改潜在有用的现有ml项目以满足新ml项目的新需求也是困难的或不可能的。
23.在本公开内容中,术语“ml项目”可以指代包括数据集、在数据集上定义的ml任务以及ml管道(例如,脚本或程序代码)的项目,所述ml管道被配置成实现用于在数据集上针对ml任务训练ml模型并使用ml模型以进行新预测的一系列操作。在本公开内容中,术语“计算笔记本”可以指代用来开发和/或表示ml管道的计算结构,尤其是在开发阶段期间的计算结构(例如,jupyter笔记本)。尽管本文公开的实施方式利用python编程语言的ml管道和被构造为jupyter笔记本的计算笔记本来示出,但应当理解,其他实施方式可以包括以不同语言编写的ml管道和在其他平台中构造的计算笔记本。
24.根据本公开内容的一个或更多个实施方式,可以执行操作以将现有ml项目自动适应新ml项目。例如,在一些实施方式中,计算机系统可以通过构建“搜索和适应”风格的工作流来有组织地支持数据科学家的自然工作流,在“搜索和适应”风格的工作流中数据科学家将首先搜索可以用作用于构建新ml项目的良好起点的现有ml项目,并且然后适当地调整现有ml项目来针对新ml项目的新数据集和新ml任务构建ml管道。
25.例如,在一些实施方式中,计算机系统可以从现有ml项目的oss数据库中自动挖掘原始ml项目,并且可以在将原始ml项目存储在现有ml项目的语料库中之前自动管理原始ml项目。在一些实施方式中,对来自大型存储库的现有ml项目的这种挖掘和管理可能产生可以用于搜索和适应工作流中的各种高质量现有ml项目的语料库。此外,这种管理可能涉及清理现有ml项目的ml管道(例如,使用动态程序切片),并且可能涉及计算一组特征以捕获每个ml项目的质量和多样性并选择与这些目标一致的现有ml项目的最佳数目。
26.此外,在一些实施方式中,该管理可能需要执行以自动识别和索引现有ml项目的
ml管道中的功能块的操作。与传统的软件程序不同,ml项目的ml管道通常遵循基于数据集属性的明确定义的工作流,并且可以被视为一系列功能块。因此,一些实施方式可以涉及如下技术:自动提取和标记ml管道中的功能块以在语料库中正确索引功能块,从而可以有效地搜索功能块以合成用于新ml任务的新ml管道。更具体地,该技术可以在适当的级别处使ml管道抽象化,并且可以采用基于图表的序列挖掘算法来提取自定义的功能块和惯用的功能块两者。最后,可以对每个功能块进行语义标记。
27.在本公开内容中,对“功能块”的提及可以指代可以由ml管道执行的操作,在ml管道中特定功能块可以对应于特定类型的功能。语义标记可以指示对应功能块的功能。此外,每个功能块可以在其对应的ml管道中被实例化,其中特定的代码片段被配置成致使对应功能块的功能的执行。在许多情况下,跨不同ml管道的相同功能块可以在每个不同ml管道中具有不同的实例化。
28.在一些实施方式中,在接收到例如来自非专家数据科学家的新ml项目的新数据集和新ml任务时,计算机系统可以自动使用分层方法来首先使用ml模型针对新ml项目合成功能块级别管道骨架。另外地或替选地,计算机系统可以经由另一机制(例如,来自用户输入的机制)获得管道骨架。管道骨架可以指示哪些功能块可以用于新ml项目。
29.在一些情况下,所获得的管道骨架可以包括功能块,功能块在技术上可能彼此不同,但也可能足够相似以至于它们可以被认为是冗余的。另外地或替选地,如上所述,管道骨架可以指示哪些功能块可以用于新ml项目,但在一些情况下可以不指示功能块的使用顺序。如下面详细讨论的,在一些实施方式中,计算机系统可以被配置成通过根据冗余分析去除功能块来改进所获得的管道骨架。另外地或替选地,计算机系统可以被配置成识别管道骨架的功能块的顺序并且可以相应地改进管道骨架。
30.管道骨架可以指示哪些功能块用于新ml项目,但可以不指示功能块的实例化。如下面详细讨论的,在一些实施方式中,计算机系统还可以被配置成确定将管道骨架的每个功能块应用于新数据集的哪些部分。另外地或替选地,计算机系统可以被配置成识别现有ml项目的现有代码片段,所述现有代码片段可以用来将管道骨架实例化为新ml项目的具体管道骨架。
31.因此,在一些实施方式中,非专家数据科学家可以仅仅针对新ml项目制定新数据集和新ml任务,然后计算机系统可以实现工具辅助的交互式搜索和适应工作流以针对ml项目自动生成可以立即执行以在新数据集上执行新ml任务的新ml管道,而无需非专家数据科学家进行任何修改。因此,一些实施方式可以使新手数据科学家能够有效地针对新ml项目创建新的高质量端到端ml管道。
32.根据本公开内容的一个或更多个实施方式,与要求数据科学家(例如,其通常是非专家)手动查找潜在有用的现有ml项目并修改潜在有用的现有ml项目以满足新ml项目的新需求相比,可以通过配置计算系统以基于现有ml项目自动生成新ml项目来改进ml项目开发的技术领域。这样的配置可以使得计算系统能够更好地搜索相关的现有ml项目,并且通过从现有ml管道中识别和提取功能块及其对应的实例化并自动使用并修改它们以用于新ml管道中而更好地使用相关的现有ml项目来生成新ml项目。
33.参照附图说明了本公开内容的实施方式。
34.图1是表示根据本公开内容中描述的至少一个实施方式布置的与基于现有ml项目
自动生成新ml项目有关的示例环境100的图。环境100可以包括修改模块120,该修改模块120被配置成修改管道骨架102以生成具体管道122,该具体管道122可以用于新ml项目115的实现。在一些实施方式中,修改模块120可以被配置成基于现有ml项目110修改管道骨架102,该现有ml项目110可以包括在ml项目语料库105中。
35.ml项目语料库105可以包括现有ml项目110的任何合适的储存库。每个现有ml项目110可以包括电子数据,该电子数据至少包括数据集109、在数据集上定义的ml任务和ml管道111(例如,脚本或程序代码),ml管道111被配置成实现一系列操作以针对ml任务训练ml模型并使用ml模型以进行新预测。在一些实施方式中,每个现有ml项目110可以包括计算笔记本,该计算笔记本可以是用来开发和/或表示对应ml管道的计算结构,尤其是在开发阶段期间的计算结构。计算笔记本的一个示例是jupyter笔记本。
36.在一些实施方式中,ml项目语料库105可以包括一个或更多个oss ml项目数据库,所述一个或更多个oss ml项目数据库可以是现有ml项目的大型存储库。现有ml项目110的大型存储库的一些示例包括但不限于kaggle和github。
37.另外地或替选地,在一些实施方式中,ml项目语料库105的现有ml项目110可以从一个或更多个oss ml项目数据库中管理和选择。管理可以使得ml项目语料库105可以是可以在自动化的“搜索和适应”风格的工作流中采用的清洁的高质量的索引的现有ml项目的大型语料库。管理可以根据任何合适的技术执行。
38.管道骨架102可以包括一组功能块,所述一组功能块可以指示可以用来关于新ml项目115的新数据集106完成新ml任务108的功能。在一些实施方式中,功能块可以在管道骨架102中没有排位。另外地或替选地,管道骨架102可以包括与管道骨架102的一个或更多个其他功能块相比可能相对冗余的一个或更多个功能块。
39.在一些实施方式中,可以使用管道骨架模型104来生成管道骨架102。管道骨架模型104可以包括一个或更多个ml模型,所述一个或更多个ml模型被训练以学习数据集元特征与功能块语义标签之间的映射(例如,基于包括在ml项目语料库105的现有ml项目110中的现有ml项目信息)。例如,给定新数据集106的元特征,管道骨架模型104可以使用映射来识别与新数据集106的元特征对应的功能块,并且可以相应地合成管道骨架102。另外地或替选地,管道骨架102可以手动生成或通过任何其他合适的技术生成。
40.在一些实施方式中,管道骨架模型104可以包括在生成管道骨架之前训练的多元多值分类器。多元多值分类器可以被配置成将新数据集的元特征映射到管道骨架应该包含的一组无序的功能块(由相应的语义标签表示)中。该训练可以包括执行关系映射,例如下面关于图2所描述的关系映射。例如,训练可以包括:从与特定语义标签相关的现有ml项目的现有数据集中提取数据集特征;从现有ml项目的功能块中识别一组所有标签;准备包含输入向量的训练数据,该输入向量具有数据集特征和表示一组所有标签中的每一个的存在或不存在的二进制输出元组;以及训练管道骨架模型104以学习数据集特征与一组所有标签中的对应标签之间的映射。在一些实施方式中,管道骨架模型104的训练可以使管道骨架模型104能够使用新数据集106和新ml任务108的显著特性(元特征)来预测一组功能块作为管道骨架的骨架块。
41.修改模块120可以包括被配置为使计算设备能够执行一个或更多个操作的代码和例程。另外地或替选地,修改模块120可以使用包括处理器、微处理器(例如,用于执行或控
制一个或更多个操作的性能)、现场可编程门阵列(fpga)或专用集成电路(asic)的硬件来实现。在一些其他情况下,修改模块120可以使用硬件和软件的组合来实现。在本公开内容中,描述为由修改模块120执行的操作可以包括修改模块120可以指示相应系统所执行的操作。
42.修改模块120可以被配置成获得管道骨架102并且修改管道骨架102以生成具体管道122。例如,在一些实施方式中,修改模块120可以被配置成修改管道骨架102以改进管道骨架102。例如,修改模块120可以通过确定将管道骨架102的不同功能块应用于新数据集106的哪些部分来改进管道骨架102。另外地或替选地,修改模块120可以被配置成识别包括在管道骨架102中的功能块的顺序作为改进的一部分。在这些或其他实施方式中,修改模块120可以被配置成通过对管道骨架102执行冗余分析来改进管道骨架。另外地或替选地,修改模块120可以基于冗余分析来从管道骨架102去除一个或更多个功能块。在一些实施方式中,修改模块120可以被配置成修改管道骨架102以生成改进的管道骨架,例如下面关于图2至图6所描述的。
43.在这些或其他实施方式中,修改模块120可以被配置成识别来自现有ml管道111的代码片段,所述代码片段可以用来对管道骨架102的功能块进行实例化并因此将管道骨架102具体化为具体管道122。另外地或替选地,修改模块120可以被配置成确定识别的代码片段关于将识别的代码片段适用为具体管道122的一部分的适应性。在这些或其他实施方式中,修改模块120可以被配置成生成一个或更多个候选管道,所述一个或更多个候选管道可以是管道骨架102的不同具体管道。候选管道可以各自包括使用不同识别代码片段对管道骨架102的相同功能块的不同实例化。另外地或替选地,修改模块120可以被配置成分析候选管道以确定候选管道的性能。在这些或其他实施方式中,修改模块120可以基于性能确定来选择候选管道之一作为具体管道122。在一些实施方式中,修改模块120可以被配置成识别、选择和实现代码片段以用于例如下面关于图7至图12所描述的具体管道122的生成和选择。
44.修改模块120可以相应地被配置成修改管道骨架102以生成具体管道122以用作新ml项目115的一部分。这些操作可以通过计算机系统来改进新ml项目的生成和实现的自动化,这可以提高将机器学习应用于增加数目的项目的能力。
45.在不脱离本公开内容的范围的情况下,可以对图1进行修改、添加或省略。例如,环境100可以包括比在本公开内容中示出和描述的那些元件更多或更少的元件。
46.图2示出了示例操作组200(“操作组200”),操作组200可以被执行以修改新ml项目215的管道骨架202以生成改进的管道骨架212。操作组200可以由任何合适的系统或设备执行。例如,操作组200的一个或更多个操作可以由图1的修改模块120执行或在图1的修改模块120的指导下执行。另外地或替选地,操作组200可以由诸如图12的计算系统1202的计算系统(例如,在修改模块120的指导下)执行。
47.通常,操作组200可以被配置成执行关于管道骨架202、新数据集206和一个或更多个现有ml项目210的一个或更多个操作以生成改进的管道骨架212。在一些实施方式中,操作组200可以包括依赖性分析250、现有ml映射252、实例化确定254和管道改进256以生成改进的管道骨架212。
48.管道骨架202可以类似于图1的管道骨架102,并且可以包括与新ml项目215相关联
的一组功能块(被称为“骨架块”)。新数据集206也可以是新ml项目215的一部分并且可以类似于图1的新数据集106。现有ml项目210可以类似于图1的现有ml项目110,并且可以包括现有ml管道211和对应的现有数据集209,所述现有ml管道211和对应的现有数据集209可以分别类似于图1的现有ml管道111和对应的现有数据集109。
49.依赖性分析250可以包括可以用来确定一个或更多个功能块依赖性258的操作。功能块依赖性258可以基于相应对的功能块中的每一个功能块是否应用于相同数据集的相同部分来指示功能块对是否彼此依赖。在一些实施方式中,依赖性分析250可以基于一个或更多个现有ml管道211的功能块的使用来确定功能块依赖性258。现有ml管道211的功能块可以被称为“现有功能块”。
50.在一些实施方式中,依赖性分析250的使用确定可以包括确定现有功能块应用于现有数据集209的哪些部分。例如,依赖性分析250可以包括确定现有功能块应用于现有数据集209的哪些列。
51.在这些或其他实施方式中,依赖性分析250可以包括确定哪些现有功能块被应用于现有数据集209的相同部分。在这些或其他实施方式中,被应用于相同部分的现有功能块在功能块依赖性258中可以被认为彼此依赖。相反地,未被识别为曾经应用于相同部分的不同现有功能块可以被认为彼此独立。
52.例如,现有功能块的第一功能块和第二功能块都可以应用于特定现有数据集209的特定列。在一些实施方式中,功能块依赖性258可以相应地指示第一功能块和第二功能块是依赖对。作为另一示例,现有功能块的第一功能块和第三功能块可能永远不被识别为应用于任何现有数据集209的同一列。在一些实施方式中,功能块依赖性258可以相应地将第一功能块和第三功能块指示为独立功能块对。
53.在一些实施方式中,可以针对现有功能块的多个功能块对来执行依赖性分析250。在这些或其他实施方式中,可以针对每个可能的现有功能块对执行依赖性分析250。另外地或替选地,功能块依赖性258可以包括所有不同依赖性的指示。应当理解,现有ml管道211可以包括相同现有功能块的多个实例,使得对现有功能块的“每对”的提及可以不一定包括现有功能块的每个实例的各个对,而是可以指代每个不同的现有功能块类型的各个对。在一些实施方式中,依赖性分析250可以包括下面关于图3a和图3b描述的一个或更多个操作。如下面进一步讨论的,在一些实施方式中,功能块依赖性258可以用于管道改进256中。
54.现有ml映射252(“ml映射252”)可以包括生成关系映射260(“关系映射260”)的操作。关系映射260可以指示数据集的特定特征与功能块关于数据集的具有这些特征的部分的使用之间的关系。在一些实施方式中,ml映射252可以基于一个或更多个现有ml管道211的现有功能块的使用来确定映射260。
55.在一些实施方式中,ml映射252的使用确定可以包括确定指示现有功能块应用于现有数据集209的哪些部分的使用信息。例如,ml映射252可以包括确定将现有功能块应用于现有数据集209的哪些列。在一些实施方式中,该信息可以从关于依赖性分析250做出的相同确定中获得。
56.在这些或其他实施方式中,ml映射252可以包括识别现有数据集209的不同部分的一个或更多个元特征(“数据集特征”)。数据集特征可以包括但不限于行数、特征数、数目的存在、缺失值的存在、数字的存在、数字类别的存在、字符串类别的存在、文本的存在和目标
类型。
57.在一些实施方式中,ml映射252可以包括确定现有功能块与应用现有功能块的部分的数据集特征之间的关系。关系可以基于使用信息来确定,并且可以指示特定功能块关于具有特定数据集特征的部分被使用的可能性有多大。ml映射252可以基于确定的关系来生成关系映射260。例如,关系映射260可以提供根据关系所确定的指示不同功能块对应于哪些数据集特征的映射。
58.在一些实施方式中,ml映射252可以包括下面关于图4描述的一个或更多个操作。如下面进一步讨论的,在一些实施方式中,关系映射260可以用于实例化确定254中。
59.如上面所讨论的,在一些情况下,管道骨架202可以包括一组骨架块,所述一组骨架块指示针对新ml项目215执行的操作,但可以不指示将不同骨架块应用于新数据集206的哪些部分。实例化确定254可以包括确定将骨架块应用于新数据集206的哪些部分(例如,列)的操作。在一些实施方式中,可以通过基于新数据集206的不同部分的数据集特征将关系映射260应用于骨架块和新数据集206来确定实例化确定254。在一些实施方式中,实例化确定254可以生成块实例化262,所述块实例化262可以基于确定指示将不同骨架块应用于新数据集206的哪些部分。在一些实施方式中,实例化确定254可以包括下面关于图5描述的一个或更多个操作。如下面进一步讨论的,在一些实施方式中,实例化确定254可以用于管道改进256。
60.管道改进256可以包括与改进管道骨架202有关的操作。例如,管道改进256可以包括从管道骨架202去除一个或更多个骨架块。在这些或其他实施方式中,一个或更多个骨架块的去除可以基于冗余分析,冗余分析可以使用功能块依赖性258。另外地或替选地,一个或更多个骨架块的去除可以基于块实例化262。在一些实施方式中,一个或更多个骨架块的去除可以包括下面关于图6描述的一个或更多个操作。
61.在这些或其他实施方式中,管道改进256可以包括确定骨架块的执行顺序。该顺序可以通过首先从现有ml项目210中的ml管道211推断块排位的部分顺序来确定。例如,在一些实施方式中,该部分顺序可以表示为图表,其中对于出现在任意ml管道211中的每个功能块均存在一个节点。在这些或其他实施方式中,图表可以包括节点之间的边,这些边指示对应功能块的执行顺序。例如,从第一节点到第二节点的定向边可以包括在如下实例中:在上述实例中,在两个块共同出现的每个ml管道211中,对应于第一节点的第一功能块出现在对应于第二节点的第二功能块之前。然后可以使用该部分顺序来确定骨架块的执行顺序(例如,确定骨架功能块上的全部顺序,如与推断的部分顺序一致的任何顺序)。
62.另外地或替选地,管道改进256可以包括利用从块实例化262中选择的一个或更多个实例化来注释管道骨架202。例如,可以在改进的管道骨架212中指示与在管道改进256之后保留在改进的管道骨架212中的骨架块有关的块实例化262。
63.操作组200可以相应地被配置成修改管道骨架102以生成改进的管道骨架212。通过指示骨架块的执行顺序和/或去除可能冗余或不需要的骨架块,改进的管道骨架212可以比管道骨架202更适合于实例化。
64.在不脱离本公开内容的范围的情况下,可以对图2进行修改、添加或省略。例如,操作组200可以包括比在本公开内容中示出和描述的那些操作更多或更少的操作。此外,操作组200的操作的描述顺序并不意指必须以所描述的顺序来执行操作。另外,在一些情况下,
相同操作可以针对操作组200的不同部分来描述(例如,针对依赖性分析250和ml映射252的使用确定),但在一些情况下,相同操作可以仅执行一次并用于操作组200的不同部分。
65.图3a是根据本公开内容中描述的至少一个实施方式的确定功能块的依赖性的示例方法300的流程图。方法300可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,在修改模块的指导下)可以执行与方法300相关联的一个或更多个操作。此外,如上所述,在一些实施方式中,方法300的一个或更多个操作可以针对图2的依赖性分析250来执行。尽管利用分立块来示出,但与方法300的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。
66.方法300可以包括:在块302处,对一个或更多个ml项目的一个或更多个管道和一个或更多个对应数据集执行数据集和抽象语法树(ast)分析。例如,可以针对存储在语料库中的一个或更多个现有ml项目的一个或更多个现有管道和相应现有数据集来执行ast分析。ast分析可以包括基于现有管道的代码来生成现有管道的相应ast。数据集分析可以包括识别现有数据集的部分的名称(例如,现有数据集的列的名称)。ast可以指示哪些代码元素可能与特定功能块有关。例如,ast可以指示对与功能块对应的应用程序接口(api)的调用。此外,ast可以指示数据集的哪些部分可能是特定操作和api调用的目标。
67.基于这些指示,数据集和ast分析可以包括识别现有功能块关于现有数据集的不同部分的使用。例如,可以确定可以将不同的现有功能块应用于现有数据集的哪些部分(例如,哪些列)。例如,图3b示出了可以指示三个不同功能块关于数据集的不同列的使用的示例表350,这可以基于数据集和ast分析来确定。在图3b的示例中,表350指示功能块“drop”被应用于数据集的“year”列。在图3b的示例中,表350还指示功能块“labelencoder”被应用于数据集的“publisher”和“genre”列。在图3b的示例中,表350还指示功能块“fillna”被应用于数据集的“publisher”列。
68.返回图3a,在块304处,可以识别应用于数据集的相同部分的功能块。例如,关于图3b的示例,功能块“labelencoder”和“fillna”可以被识别为应用于同一列“publisher”。
69.在块306处,可以基于在块304处执行的识别来识别相关功能块。例如,可以将应用于相同部分的功能块识别为彼此依赖。例如,图3b的功能块“fillna”和“labelencoder”可以基于两者都应用于“publisher”列而被识别为依赖对。
70.在块308处,还可以基于在块304处执行的识别来识别独立功能块。例如,没有被识别为应用于相同部分的功能块可以被识别为彼此独立。例如,图3b的功能块“drop”和“labelencoder”可以基于它们没有被应用于任何相同的列而被识别为独立对。
71.在一些实施方式中,可以针对现有功能块的多个功能块对来执行块306和块308的依赖性分析。在这些或其他实施方式中,可以针对每个可能的现有功能块对执行块306和块308的依赖性分析。此外,可以针对图2的每个ml管道211和数据集209执行这样的分析,并且在所有管道上聚合结果,使得如果一对块在块共同出现的一个或更多个管道中是被认为是依赖的,则所述一对块被认为是依赖的,否则,是独立的。
72.在不脱离本公开内容的范围的情况下,可以对方法300进行修改、添加或省略。例如,方法300的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的
情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
73.图4是根据本公开内容中描述的至少一个实施方式的确定功能块与数据集特征之间的关系映射的示例方法400的流程图。方法400可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,在修改模块的指导下)可以执行与方法400相关联的一个或更多个操作。尽管利用分立块来示出,但与方法400的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。
74.通常,方法400可以被配置成确定现有ml管道的现有功能块关于现有数据集的应用现有功能块的部分的特征的使用。该使用可以用来确定功能块与数据集特征之间的映射,这可以指示功能块可以对应于哪些数据集特征。此外,如上所述,在一些实施方式中,方法400的一个或更多个操作可以针对图2的ml映射252来执行。
75.方法400可以包括块402,在块402处,可以获得数据集特征。例如,在一些实施方式中,可以获得现有ml项目的一个或更多个现有数据集。在这些或其他实施方式中,可以获得现有数据集的一个或更多个特征。例如,可以获得现有数据集的一个或更多个元特征。在这些或其他实施方式中,现有数据集的不同部分(例如,不同的列)可能具有不同的特征。在这些或其他实施方式中,数据集特征的识别还可以包括识别哪些部分具有哪些特征。在这些或其他实施方式中,不同数据集特征的识别可以基于可以应用于具有不同数据集特征的不同部分的语义标签。语义标签可以指示对应部分的对应数据集特征。
76.在一些实施方式中,方法400可以包括块404,在块404处,可以确定功能块关于数据集特征的使用。例如,在一些实施方式中,确定使用可以包括确定关于具有相应数据集特征的不同部分使用相应现有功能块的次数(也被称为“功能块的出现率”)。例如,可以确定关于具有给定数据集特征的部分使用特定功能块的次数。
77.作为另一示例,确定使用可以包括确定功能块关于具有相应数据集特征的部分的使用频率。例如,可以将关于具有给定数据集特征的部分使用特定功能块的次数与具有给定数据集特征的数据集部分的总数进行比较,以确定特定功能块关于具有给定数据集特征的数据集部分的使用频率(例如,使用百分比)。
78.在一些实施方式中,确定使用可以包括基于使用来确定一个或更多个条件概率。条件概率可以指示对应的功能块可以应用于具有特定数据集特征的数据集部分的可能性。例如,可以针对特定功能块关于第一数据集特征来确定第一条件概率。第一条件概率可以基于特定功能块关于具有第一数据集特征的数据集部分的使用来确定,并且可以指示特定功能块在具有第一数据集特征的数据集部分中使用的可能性有多大。也可以针对特定功能块关于第二数据集特征来确定第二条件概率。在一些实施方式中,可以针对每个功能块和每个数据集特征来确定不同的条件概率。
79.在一些实施方式中,确定使用信息可以基于ast和数据集分析,例如上面关于图3a所描述的。另外地或替选地,可以使用所识别的数据集特征来确定应用功能块的部分的特征。
80.在块406处,可以基于所确定的使用来确定数据集特征与功能块之间的映射。例如,响应于关于特定功能块和给定数据集特征的一个或更多个使用因数满足阈值,可以将
特定功能块和给定数据集特征彼此映射为彼此对应。
81.例如,第一功能块可以被确定为关于具有第一数据集特征的数据集部分被使用的第一次数。另外,第一功能块可以被确定为关于具有第二数据集特征的数据集部分被使用的第二次数。在这些或其他实施方式中,第一次数可以满足出现率阈值,但第二次数可以不满足出现率阈值。在这些或其他实施方式中,第一功能块可以映射到第一数据集特征而不是第二数据集特征。
82.作为另一示例,第二功能块可以被确定为具有关于第一数据集特征的第一条件概率并且可以被确定为具有关于第二数据集特征的第二条件概率。在一些实施方式中,第二条件概率可以满足概率阈值,但第一条件概率可以不满足概率阈值。在这些或其他实施方式中,第二功能块可以相应地映射到第二数据集特征而不是第一数据集特征。
83.在这些或其他实施方式中,映射可以指示所确定的对应关系,而与阈值无关。例如,在一些实施方式中,映射可以指示每个功能块关于每个不同特征的条件概率、出现率和/或使用频率。
84.在不脱离本公开内容的范围的情况下,可以对方法400进行修改、添加或省略。例如,方法400的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
85.图5是根据本公开内容中描述的至少一个实施方式的针对管道骨架确定块实例化的示例方法500的流程图。方法500可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1200(例如,在修改模块的指导下)可以执行与方法500相关联的一个或更多个操作。尽管利用分立块来示出,但与方法500的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。此外,如上所述,在一些实施方式中,方法500的一个或更多个操作可以针对图2的实例化确定254来执行。
86.方法500可以包括块502,在块502处,可以选择新数据集的数据集部分。例如,可以选择新数据集的列。新数据集可以是已经针对其生成管道骨架的数据集。
87.在块504处,可以获得所选择部分的一个或更多个数据集特征。例如,可以确定所选择部分的一个或更多个元特征。
88.在块506处,可以识别管道骨架的与所选择部分的数据集特征对应的功能块(“骨架块”)。在一些实施方式中,可以基于关系映射例如图2的关系映射260或关于图4描述的关系映射来识别对应的骨架块。例如,所选择部分可以具有被指示为与关系映射中第一功能块对应的第一数据集特征。管道骨架的与第一功能块相同(例如,具有相同功能)的骨架块因此可以被识别为与新数据集的所选择部分对应。
89.作为另一示例,关系映射可以指示不同功能块关于不同数据集特征的使用频率、条件概率和/或出现率。在这些或其他实施方式中,对应关系可以基于所选择部分的与根据特定阈值的功能块对应的数据集特征。例如,关系映射可以指示第二功能块可以具有关于所选择部分的第二数据集特征的条件概率。在这些或其他实施方式中,与第二功能块对应的骨架块可以被相应地映射到所选择部分。相比之下,与具有不满足概率阈值的关于第二
数据集特征的条件概率的第三功能块对应的骨架块可以不被映射到所选择部分。
90.在块508处,可以针对所选择部分确定一个或更多个块实例化。如上所述,块实例化可以指示哪些骨架块应用于所选择部分。在一些实施方式中,块实例化可以基于在块506处确定的对应关系来确定。例如,在块506处确定的对应关系可以指示第一骨架块和第二骨架块对应于所选择部分。因此,可以确定指示第一骨架块将被应用于所选择部分的第一块实例化。另外地,还可以确定指示第二骨架块将被应用于所选择部分的第二块实例化。
91.在一些实施方式中,可以针对新数据集的多个部分执行方法500。在这些或其他实施方式中,可以针对新数据集的每个不同部分(例如,每列)执行方法500。因此,在一些实施方式中,新数据集的所有不同部分可以通过块实例化的生成映射到一个或更多个骨架块。
92.在不脱离本公开内容的范围的情况下,可以对方法500进行修改、添加或省略。例如,方法500的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
93.图6是根据本公开内容中描述的至少一个实施方式的将管道骨架改进为改进的骨架的示例方法600的流程图。方法600可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,在修改模块的指导下)可以执行与方法600相关联的一个或更多个操作。尽管利用分立块来示出,但与方法600的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。
94.通常,方法600可以被配置成从管道骨架去除一个或更多个骨架块。另外地或替选地,方法600可以被配置成确定骨架块的执行顺序。在这些或其他实施方式中,方法600可以包括利用选自在方法500处确定的块实例化的一个或更多个实例化来注释管道骨架。此外,如上所述,在一些实施方式中,方法600的一个或更多个操作可以针对图2的管道改进256执行。
95.方法600可以包括块602,在块602处,可以识别管道骨架的功能块(“骨架块”)。在块604处,可以获得诸如使用方法500确定的块实例化的块实例化。
96.在块606处,可以根据块实例化从管道骨架去除一个或更多个骨架块。例如,在一些实施方式中,可以去除不包括在任意块实例化中的骨架块。在这些或其他实施方式中,可以去除不包括在块实例化中的所有骨架块。
97.在块608处,可以获得功能块依赖性。例如,可以获得基于方法300确定的功能块依赖性。另外地或替选地,在块608处,可以获得与一个或更多个现有ml项目的一个或更多个现有ml管道的现有功能块相关联的使用信息。例如,使用信息可以相似于或类似于关于图4的方法400的块404确定的使用信息。例如,使用信息可以包括关于相应数据集特征的功能块的出现率、关于相应数据集特征的使用频率和/或关于相应数据集特征的条件概率。
98.在块610处,可以去除一个或更多个骨架块。去除可以使得可以去除表示应用于新数据集的相同部分的重复功能的一个或更多个功能块。
99.在一些实施方式中,去除可以基于块实例化和依赖性以及使用信息。例如,使用功能块依赖性信息,可以通过将骨架块与依赖性信息中指示的功能块匹配(例如,基于相同的
功能、相同的名称等)来确定骨架块的依赖性。在匹配之后,可以根据被识别为与骨架块匹配的功能块的依赖性,将依赖性信息中指示的依赖性应用于骨架块。
100.另外地或替选地,可以从块实例化中识别映射到新数据集的相同部分的骨架块。在这些或其他实施方式中,映射到相同部分的骨架块对(“映射对”)可以使用所确定的骨架块的依赖性信息被识别为彼此独立或彼此依赖。响应于映射的骨架块对彼此独立,可以去除映射对的骨架块之一。
101.在一些实施方式中,去除可以基于使用信息。例如,可以去除映射对的具有较低条件概率的骨架块。作为另一示例,可以去除映射对的具有较低出现次数或较低使用频率的骨架块。
102.在不脱离本公开内容的范围的情况下,可以对方法600进行修改、添加或省略。例如,方法600的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
103.图7示出了根据本公开内容的一个或更多个实施方式的可以被执行以实例化管道骨架702的示例操作组700(“操作组700”)。操作组700可以由任何合适的系统或设备来执行。例如,操作组700的一个或更多个操作可以由图1的修改模块120执行或在图1的修改模块120指导下执行。另外地或替选地,操作组700可以由诸如图12的计算系统1202的计算系统(例如,在修改模块120的指导下)执行。
104.操作组700可以包括针对管道骨架702、管道骨架模型704、一个或更多个现有ml项目710和/或新数据集706执行的一个或更多个操作以将管道骨架702实例化为具体管道732。在一些实施方式中,操作组700还可以包括代码片段识别720、适应性分析722、候选管道生成724和管道分析726以将管道骨架702实例化为具体管道732。
105.管道骨架702可以包括与新ml项目相关联的一组功能块(被称为“骨架块”)。在一些实施方式中,管道骨架702可以类似于图1的管道骨架102或图2的管道骨架202。另外地或替选地,管道骨架702可以类似于图2的改进的管道骨架212。在这些或其他实施方式中,管道骨架702可以包括一个或更多个块实例化718。块实例化718可以类似于图2的块实例化262,因为块实例化718可以指示将管道骨架702的哪个骨架块应用于新数据集706的哪些部分(例如,应用于哪列)。
106.新数据集706也可以是新ml项目的一部分并且可以类似于图1的新数据集106。现有ml项目710可以类似于图1的现有ml项目110,并且可以包括现有ml管道711和对应的现有数据集709,所述现有ml管道711和对应的现有数据集709可以分别类似于图1的现有ml管道111和对应的现有数据集109。在一些实施方式中,管道骨架模型704可以被配置成生成管道骨架702。管道骨架模型704可以类似于图1的管道骨架模型104。具体管道732可以类似于图1的具体管道122。
107.代码片段识别可以包括可以用来识别一个或更多个代码片段728的操作。代码片段728可以包括来自现有ml管道711的一个或更多个现有代码片段。可以被识别为代码片段728的现有代码片段可以被识别为潜在地用来实例化管道骨架702的相应骨架块。
108.在一些实施方式中,代码片段728可以基于代码片段728所对应的新数据集706与
现有数据集709之间的相似性来识别。相似性可以基于现有数据集709的一个元特征与新数据集706的一个元特征之间的相似性来确定。在一些实施方式中,基于所确定的相似性对代码片段728的识别可以包括下面关于图8描述的一个或更多个操作。
109.在这些或其他实施方式中,代码片段728可以基于经由管道骨架模型704对管道骨架702的生成的分析来识别。例如,可以确定使用管道骨架模型704的哪些训练数据来确定在管道骨架702中包括哪些功能块。在这些或其他实施方式中,所识别的训练数据可能已经从现有ml项目710获得。例如,所识别的训练数据可以例示现有数据集的特定特征与管道中特定现有功能块的存在之间的依赖性,这可能使管道骨架模型704包括管道骨架702中的针对新数据集706预测的特定功能块。在这些或其他实施方式中,在一些情况下,所识别的训练数据可以因此表示新数据集706的环境中功能块的最合适的实例化。另外地或替选地,所识别的训练数据可以包括对所识别训练数据的现有功能块进行实例化的代码片段,或者可以用来识别对所识别训练数据的现有功能块进行实例化的代码片段。与所识别的训练数据相关联的代码片段可以用于实例化管道骨架702。在一些实施方式中,基于用来生成管道骨架702的训练数据对代码片段728的识别可以包括下面关于图9描述的一个或更多个操作。
110.适应性分析722可以包括如下操作:操作与确定代码片段728有多适合用于对于管道骨架702的实现有关。适应性分析722可以包括基于代码片段728的程序元素来确定代码片段728的元素适应性。另外地或替选地,适应性分析722可以包括基于代码片段728的数据流来确定代码片段728的数据流适应性。在这些或其他实施方式中,适应性分析722可以包括基于相应代码片段728的基数兼容性来确定代码片段728的基数适应性。在一些实施方式中,适应性分析722可以包括基于相应代码片段728的元素适应性、数据流适应性或基数适应性中的两个或更多个的组合来确定相应代码片段728的相应总体适应性。
111.在一些实施方式中,适应性分析可以输出关于代码片段728的增强的代码片段信息730(“增强的信息730”)。增强的信息730可以包括针对相应代码片段728的相应适应性确定。在这些或其他实施方式中,增强的信息730可以包括代码片段728。在一些实施方式中,适应性分析722可以包括下面关于图10描述的一个或更多个操作。
112.另外地或替选地,增强的信息730可以包括代码片段728关于彼此的排位。例如,不同代码片段可能是相同骨架块的实例化的潜在候选。在一些实施方式中,可以关于相同骨架块的实例化相对于彼此对不同代码片段进行排位。在一些实施方式中,可以对不同代码片段进行排位,例如下面关于图8、图9和/或图10所描述的。
113.候选管道生成724可以包括可以基于增强的信息730来生成一个或更多个候选管道734的操作。候选管道734可以各自是使用一组选定的代码片段728的管道骨架702的具体化实例。在一些实施方式中,可以基于包括在增强的信息730中的适应性信息来选择代码片段728。在这些或其他实施方式中,可以基于可以包括在增强的信息730中的排位来选择代码片段728。在一些实施方式中,候选管道生成724可以包括下面关于图11描述的一个或更多个操作。
114.管道分析726可以包括可以分析候选管道734以选择候选管道734之一用作具体管道732的操作。例如,在一些实施方式中,每个候选管道734可以应用于新数据集706以确定相应候选管道的性能水平。在这些或其他实施方式中,可以基于所确定的性能水平来选择特定候选管道734作为具体管道732。在一些实施方式中,可以使用任何合适的技术来执行
管道分析726。另外地或替选地,在一些实施方式中,新数据集706可以相对大并且可以使用数据采样(例如,分层数据采样)来修剪新数据集706以减少用来分析候选管道734的数据量。
115.在不脱离本公开内容的范围的情况下,可以对图7进行修改、添加或省略。例如,操作组700可以包括比在本公开内容中示出和描述的那些操作更多或更少的操作。此外,操作组700的操作的描述顺序并不意指必须以所描述的顺序来执行操作。另外,在一些情况下,相同操作可以针对操作组700的不同部分来描述,但在一些情况下,相同操作可以仅执行一次并用于操作组700的不同部分。
116.图8是根据本公开内容中描述的至少一个实施方式的获得用于管道骨架的实例化的代码片段的示例方法800的流程图。方法800可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,如由修改模块所指向的)可以执行与方法800相关联的一个或更多个操作。尽管利用分立块来示出,但与方法800的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。此外,如上所述,在一些实施方式中,方法800的一个或更多个操作可以针对图7的代码片段识别720来执行。
117.方法800可以包括块802,在块802处,可以获得与新ml项目有关的信息。新ml信息可以包括新ml项目的新数据集和/或新ml项目的管道骨架。例如,新ml信息可以包括图7的管道骨架702和/或图7的新数据集706。
118.在这些或其他实施方式中,可以在块802处获得与一个或更多个现有ml项目有关的信息。现有ml信息可以包括一个或更多个现有ml项目和对应的信息,例如现有ml项目710。例如,现有ml信息可以包括现有ml项目的现有管道和/或现有数据集。另外地或替选地,现有ml信息可以包括现有ml管道的代码。在这些或其他实施方式中,现有ml信息可以包括指示不同现有功能块和对应的现有代码片段可以应用于现有数据集的哪些部分的使用信息。在这些或其他实施方式中,可以基于现有ml信息来获得使用信息,例如上面关于图3a的方法300的块302所描述的。
119.在块804处,可以识别现有ml管道的一个或更多个现有功能块。在一些实施方式中,可以基于新ml项目的管道骨架的功能块(“骨架块”)来识别现有功能块。例如,在一些实施方式中,可以基于与骨架块相同(例如,基于具有相同的名称和/或功能)来识别现有功能块。
120.在块806处,可以基于所识别的现有功能块来识别现有ml项目的一个或更多个现有数据集。例如,可以识别应用现有功能块的现有数据集。在一些实施方式中,可以使用包括在现有ml项目信息中的使用信息来识别现有数据集。
121.在块808处,可以确定新数据集与每个所识别的现有数据集之间的相应相似性。在一些实施方式中,可以基于现有数据集的一个或更多个所获得的元特征与新数据集的一个或更多个所获得的元特征之间的比较来确定相似性。例如,元特征可以包括数据集的行数、数据集的列数和/或数据集的列的列类型。在这些或其他实施方式中,可以基于新数据集的不同元特征与相应现有数据集的对应元特征有多相似来确定相应相似性分数。例如,可以使用任何合适的距离度量确定来确定相似性分数。在这些或其他实施方式中,关于与新数据集的相似性,每个现有数据集可以被给定关于其他现有数据集的相似性排位。例如,可以
对现有数据集进行排位,使得最相似的现有数据集(如由相似性分析所指示的)被排位最高。在一些实施方式中,代码片段本身可以根据它们对应的现有数据集的排位进行排位。
122.在块810处,可以基于现有数据集相似性确定来识别和选择一个或更多个现有代码片段。例如,可以识别从用于最高排位的现有数据集的管道得到的现有代码片段。在这些或其他实施方式中,可以识别应用于满足关于新数据集的相似性阈值的现有数据集的现有代码片段。在这些或其他实施方式中,现有代码片段可以是对在块804处识别的现有功能块进行实例化的那些代码片段,这些现有功能块也与最高排位的现有数据集相关联。在这些或其他实施方式中,可以基于可以对应于现有数据集排位的代码片段排位来识别所识别的代码片段。在一些实施方式中,代码片段的排位可以包括在增强的代码片段信息例如图7的增强的代码片段信息730中。
123.在一些实施方式中,所识别的现有代码片段可以被识别为管道骨架的骨架块的潜在实例。例如,在一些实施方式中,所识别的现有代码片段可以是图7的代码片段728。
124.在不脱离本公开内容的范围的情况下,可以对方法800进行修改、添加或省略。例如,方法800的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
125.图9是根据本公开内容中描述的至少一个实施方式的获得用于管道骨架的实例化的代码片段的示例方法900的流程图。方法900可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,在修改模块的指导下)可以执行与方法900相关联的一个或更多个操作。尽管利用分立块来示出,但与方法900的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。此外,如上所述,在一些实施方式中,方法900的一个或更多个操作可以针对图7的代码片段识别720来执行。
126.方法900可以包括块902,在块902处,可以获得管道骨架模型。如上所述,管道骨架模型可以是用来生成可以识别代码片段的管道骨架的ml模型。在一些实施方式中,管道骨架模型可能已经被先前生成。在这些或其他实施方式中,可以在块902处生成管道骨架模型作为获得管道骨架模型的一部分。例如,可以通过训练如上所述的多元多值分类器来生成管道骨架模型。在这些或其他实施方式中,可以在块902处使用管道骨架模型来生成管道骨架。
127.在块904处,可以识别由管道骨架模型使用以生成管道骨架的训练数据。在一些实施方式中,识别训练数据可以包括识别新ml项目的元特征(例如,新数据集和/或对应的新任务的元特征),所述元特征由管道骨架模型使用以预测包括在管道骨架中的功能块。在这些或其他实施方式中,元特征可以在骨架块的逐个功能块的基础上被识别,使得可以识别用来确定管道骨架的每个单独骨架块的元特征。
128.在一些实施方式中,在进行预测时使用的元特征的识别可以基于一种或更多种“白盒”技术,其中管道骨架模型的结构是已知的。例如,对于管道骨架模型基于决策树族的实例,可以识别用来针对包括在管道骨架中的特定功能块得出特定决策的路径。在这些或其他实施方式中,可以识别用来针对管道骨架的每个相应功能块得出每个相应决策的每个
路径。另一示例“白盒”技术可以包括找到管道骨架模型的线性回归模型中使用的主要术语。上面仅仅是示例“白盒”技术,并且可以使用任何其他合适的白盒技术。
129.另外地或替选地,在进行预测时使用的元特征的识别可以基于一种或更多种“黑盒”技术,其中管道骨架模型的特定结构可以不已知或不需要。这样的“模型不可知”技术可以包括任何合适的技术,包括lime(局部可解释模型不可知解释)技术或shap(形状相加解释)技术。
130.在一些实施方式中,所识别的元特征可以用来生成关于管道骨架模型的新数据集的一个或更多个数据集向量(“新数据集向量”)。这些新数据集向量可以是新数据集的所识别的元特征的值的向量。在一些实施方式中,可以针对每个骨架块识别新数据集向量。
131.在这些或其他实施方式中,新数据集向量可以用来识别用作训练数据的现有ml项目,该训练数据可能对管道骨架的生成有影响。例如,通过在现有数据集的环境中计算先前识别的元特征,现有ml项目的数据集向量(“现有数据集向量”)可以根据现有ml数据集构建,这类似于根据新数据集构建新数据集向量。在这些或其他实施方式中,可以识别最接近新数据集向量的现有数据集向量。例如,可以识别在新数据集向量的阈值距离内的现有数据集向量。
132.在一些实施方式中,关于最接近的现有数据集向量的确定可以针对与管道骨架的不同骨架块对应的不同新数据集向量进行。在一些实施方式中,可以通过在每个相应的新数据集向量与每个相应的现有数据集向量之间执行任何合适的最接近点分析来识别最接近的现有数据集向量。在一些实施方式中,与对应于最接近的现有数据集向量的现有ml项目相关联的训练数据可以被识别为对管道骨架的生成有影响的训练数据。
133.在块906处,可以根据在块904处识别的训练数据识别一个或更多个代码片段。例如,在一些实施方式中,可以识别与训练数据相关联(例如,包括在训练数据中或由训练数据指示)的现有ml项目的现有ml管道。此外,还可以识别对现有ml管道的现有功能块进行实例化的代码片段。
134.在一些实施方式中,来自与不同ml项目相关联的不同现有ml管道的不同代码片段(可能有助于选择相同的功能块)可以关于彼此排位。在一些实施方式中,排位可以基于新数据集向量关于与代码片段对应的现有ml项目的现有数据集向量的距离。例如,第一代码片段可以对应于具有第一现有数据集向量的第一ml项目,该第一现有数据集向量是距新数据集向量的第一距离。另外,第二代码片段可以对应于具有第二现有数据集向量的第二ml项目,该第二现有数据集向量是距新数据集向量的第二距离,其中第二距离大于第一距离。该示例中的第一代码片段的排位可以高于第二代码片段。
135.在块908处,可以选择所识别的代码片段中的一个或更多个。在一些实施方式中,可以基于对由训练数据指示的与管道骨架的骨架块对应的现有功能块进行实例化的那些代码片段来选择所选择的代码片段。因此,可以基于用来确定管道骨架的骨架块的训练数据来选择所选择的代码片段。在一些实施方式中,所选择的代码片段可以是具有特定排位的那些代码片段。在一些实施方式中,代码片段的排位可以包括在增强的代码片段信息中,例如图7的增强的代码片段信息730。
136.在不脱离本公开内容的范围的情况下,可以对方法900进行修改、添加或省略。例如,方法900的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更
多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
137.图10是根据本公开内容中描述的至少一个实施方式的确定用于实现的代码片段关于管道骨架的适应性的示例方法1000的流程图。方法1000可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,在修改模块的指导下)可以执行与方法1000相关联的一个或更多个操作。尽管利用分立块来示出,但与方法1000的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。如上所述,在一些实施方式中,方法1000的一个或更多个操作可以针对图7的适应性分析722来执行。另外地或替选地,方法1000可以针对分别使用图8的方法800和/或图9的方法900识别的代码片段来执行。
138.方法1000可以包括块1002,在块1002处,可以获得针对管道骨架的潜在实例化识别的代码片段。例如,图7的代码片段728,其在一些实施方式中可以使用方法800或方法900来识别。
139.在块1004处,可以针对每个相应代码片段确定元素适应性。在一些实施方式中,元素适应性可以基于相应代码片段的程序元素。例如,可以识别程序元素并且可以确定程序元素是通用代码元素还是域特定代码元素。通用代码元素可以包括可以通常适用于多个数据集的那些代码元素。相比之下,域特定代码元素可以包括特定于应用相应代码片段的数据集的那些代码元素。
140.在一些实施方式中,识别程序元素可以包括从相应代码片段中提取所有常量并且将常量识别为程序元素。另外地或替选地,可以将所识别的常量与应用代码片段的数据集的名称或值进行比较。例如,可以将常量与数据集的列名进行比较。另外地或替选地,可以将常量与包括在数据集的字段中的值进行比较。响应于与数据集的名称或值匹配的特定常量,与其对应的程序元素可以被确定为域特定代码元素。相比之下,响应于与数据集的名称或值不匹配的特定常量,与其对应的程序元素可以被确定为通用代码元素。
141.在这些或其他实施方式中,可以确定域特定代码元素是否可以映射到管道骨架所对应的新ml项目的新数据集。例如,可以确定新数据集是否包括可以映射到特定的域特定代码元素所对应的现有数据集的名称或值的名称或值。响应于包括可以映射到现有数据集的名称或值的名称或值的新数据集,特定的域特定代码元素可以被认为可映射到新数据集。
142.相应代码片段的元素适应性可以基于相应代码片段是否包括任何域特定代码元素。例如,在一些实施方式中,响应于包括一个或更多个域特定代码元素的特定代码片段,特定代码片段可以被认为潜在地不具有元素适应性。在这些或其他实施方式中,可以确定域特定代码元素是否可映射到新数据集。响应于域特定代码元素可映射到新数据集,特定代码片段可以被认为具有元素适应性。相比之下,响应于一个或更多个域特定代码元素不可映射到新数据集,特定代码片段可以被认为不具有元素适应性。另外地或替选地,响应于特定代码片段仅具有通用代码元素,特定代码片段可以被认为具有元素适应性。
143.在块1006处,可以针对每个相应代码片段确定数据流适应性。在一些实施方式中,数据流适应性可以基于可以输入到相应代码片段的输入流和可以由相应代码片段输出的
输出流。特别地,可以确定输入是否源自相应数据集的数据帧以及输出是否被发送至相应数据集的数据帧。响应于所有对应于数据帧的输入和输出(例如,源自数据帧或被发送至数据帧),相应代码片段可以被认为具有数据流适应性。相比之下,响应于不对应于数据帧的一个或更多个输入和/或一个或更多个输出,相应代码片段可以被认为不具有数据流适应性。
144.在一些实施方式中,可以执行静态分析以针对每个代码片段确定输入和输出。此外,静态分析可以指示可以从相应现有数据集的哪些部分获得输入和/或可以将输出发送至相应现有数据集的哪些部分。静态分析可以因此指示输入或输出是否对应于相应现有数据集的数据帧。
145.在块1008处,可以针对每个相应代码片段确定基数适应性。基数适应性可以基于相应代码片段关于新数据集的基数兼容性。例如,与关于新数据集的可以应用相应代码片段的部分的数目相比,基数兼容性可以基于关于其相应现有数据集的应用相应代码片段的部分的数目(例如,列的数目)。
146.例如,为了确定基数适应性,可以确定新数据集的可以应用相应代码片段的多少部分(例如,列)。在一些实施方式中,可以基于可以包括在管道骨架中的块实例化(例如,图7的块实例化718)来做出该确定。例如,可以针对管道骨架的特定功能块的潜在实例化选择相应代码片段。此外,块实例化可以指示将特定功能块应用于新数据集的哪些部分。因此,可以确定新数据集的可以应用相应代码片段的多少部分作为特定功能块的实例化。新数据集的可以应用相应代码片段的部分的确定数目可以被称为“新数据集部分数目”。另外,可以确定相应现有数据集的应用相应代码片段的多少部分。该确定可以基于对相应代码片段的任何合适的分析。现有数据集的应用相应代码片段的部分的确定数目可以被称为“现有数据集部分数目”。
147.基数适应性可以基于新数据集部分数目与现有数据集部分数目之间的比较。例如,第一代码片段可以具有等于第一现有数据集部分数目的第一新数据集部分数目。此外,第二代码片段可以具有不等于第二现有数据集部分数目的第二新数据集部分数目。在该示例中,第一代码片段可以具有比第二代码片段高的基数适应性。
148.在一些实施方式中,响应于新数据集部分数目与现有数据集部分数目不匹配,可以确定是否可以将一个或更多个变换应用于相应代码片段以提高基数适应性。例如,对于特定代码片段,响应于现有数据集部分数目为一并且新数据集部分数目大于一,可以将特定代码片段放置在循环中,该循环被迭代多次以与新数据集部分数目匹配。在这些或其他实施方式中,可变换以提高基数的代码片段仍可以被认为具有比具有匹配的基数的代码片段低的基数适应性。另外地或替选地,可变换以提高基数的代码片段可以被认为具有比不可变换以提高基数的代码片段高的基数适应性。在这些或其他实施方式中,响应于具有匹配的新数据集部分数目和现有数据集部分数目的代码片段或者响应于代码片段是可变换以使得不同的数据集部分数目相匹配,代码片段通常可以被认为具有基数适应性。
149.在一些实施方式中,方法1000可以包括块1010,在块1010处,可以针对每个相应代码片段确定总体适应性。在一些实施方式中,总体适应性可以基于元素适应性、数据流适应性或基数适应性中的两个或更多个的组合。在这些或其他实施方式中,总体适应性可以基于所有元素适应性、数据流适应性和基数适应性的组合。
150.例如,在一些实施方式中,相应代码片段可以被认为具有总体适应性,在该总体适应性中相应代码片段被认为是可适应的或不可适应的。在一些实施方式中,响应于相应代码片段被确定为具有元素适应性、数据流适应性和基数适应性,相应代码片段可以被认为具有总体适应性。
151.在这些或其他实施方式中,作为管道骨架的相同骨架块的潜在实例化的代码片段可以关于彼此以及它们各自的适应性进行排位。例如,第一代码片段可以具有可映射到新数据集的域特定代码元素,使得第一代码片段可以具有程序元素适应性。另外,对相同骨架块进行实例化的第二代码片段可能具有程序元素适应性,这是因为该第二代码片段可能仅具有通用代码元素。因此,第二代码片段关于程序元素适应性的排位可能高于第一代码片段。另外地或替选地,在所有其他条件相同的情况下,第二代码片段关于总体适应性的排位可能高于第一代码片段。类似地,由于变换而具有基数适应性的代码片段的排位可能低于无需变换而具有基数适应性的代码片段。
152.在一些实施方式中,关于不同代码片段的适应性确定可以包括在增强的代码片段信息例如图7的增强的代码片段信息730中。另外地或替选地,基于适应性确定的代码片段的排位可以包括在增强的代码片段信息中。
153.在不脱离本公开内容的范围的情况下,可以对方法1000进行修改、添加或省略。例如,方法1000的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
154.图11是根据本公开内容中描述的至少一个实施方式的生成候选管道组的示例方法1100的流程图。方法1100可以由任何合适的系统、装置或设备来执行。例如,图1的修改模块120或图12的计算系统1202(例如,如由修改模块所指向的)可以执行与方法1100相关联的一个或更多个操作。尽管利用分立块来示出,但与方法1100的一个或更多个块相关联的步骤和操作可以被划分为附加的块,被组合为更少的块,或者被消除,这取决于特定的实现方式。
155.通常,方法1100可以包括生成多个具体管道作为新ml项目的管道骨架的潜在实例化。多个具体管道可以因此是新ml项目的候选管道,所述候选管道可以应用于新ml项目的新数据集。如上所述,在一些实施方式中,方法1100的一个或更多个操作可以针对图7的候选管道生成724来执行。另外地或替选地,可以使用关于图7的代码片段728的增强的代码片段信息730来执行方法1100,图7的代码片段728可以分别使用图8的方法800、图9的方法900和/或图10的方法1000来识别。
156.方法1100可以包括块1102,在块1102处,可以获得可以被识别以对管道骨架进行实例化的不同代码片段的代码片段排位。代码片段排位可以在管道骨架的骨架块的基础上基于逐个骨架块。例如,可以根据各个代码片段可以实例化的骨架块对代码片段进行分组。在这些或其他实施方式中,代码片段排位可以针对每个不同代码片段组。例如,对应于第一骨架块的第一代码片段组可以相对于彼此进行排位,并且对应于第二骨架块的第二代码片段组可以相对于彼此进行排位。在一些实施方式中,代码片段排位可以包括诸如上面关于方法1000所描述的适应性排位的任意合适组合。另外地或替选地,代码片段排位可以包括
用来选择代码片段的排位,例如上面关于方法800或方法900所描述的。
157.在块1104处,可以针对管道骨架的每个骨架块选择相应代码片段。在一些实施方式中,可以基于它们在各自组中的各自排位来选择各自的代码片段。例如,可以针对第一骨架块选择第一代码片段组中最高排位的代码片段,并且可以针对第二骨架块选择第二代码片段组中最高排位的代码片段。在这些或其他实施方式中,可以针对每个骨架块选择多个不同代码片段,从而可以评估每个骨架块的多于一个的实例化。
158.在一些实施方式中,在块1104处,操作还可以包括在新数据集的环境中变换每个所选择的代码片段。这种变换可以包括解决代码片段的变量名称或对象名称的任何差异(例如,基于程序分析来调整名称)。
159.在块1106处,可以使用所选择的代码片段来生成候选管道组。例如,每个候选管道可以是包括管道骨架的每个骨架块的实例化的具体管道。因此,在一些实施方式中,可以选择所选择的代码片段组作为可以各自用来生成候选管道的管道组。
160.例如,管道骨架可以包括骨架块a至d。可以选择另外的多个管道组来生成管道骨架的多个候选管道。例如,第一管道组可以用来生成管道骨架的第一候选管道,其中,第一管道组包括对骨架块a进行实例化的第一代码片段、对骨架块b进行实例化的第二代码片段、对骨架块c进行实例化的第三代码片段以及对骨架块d进行实例化的第四代码片段。另外地,第二管道组可以用来生成管道骨架的第二候选管道,其中,第二管道组包括对骨架块a进行实例化的第五代码片段、对骨架块b进行实例化的第六代码片段、对骨架块c进行实例化的第七代码片段以及对骨架块d进行实例化的第八代码片段。在该示例中,第一代码片段和第五代码片段可以是对应于骨架块a的同一代码片段组的一部分,第二代码片段和第六代码片段可以是对应于骨架块b的同一代码片段组的一部分,第三代码片段和第七代码片段可以是对应于骨架块c的同一代码片段组的一部分,以及第四代码片段和第八代码片段可以是对应于骨架块d的同一代码片段组的一部分。
161.在一些实施方式中,可以针对代码片段的不同组合的不同排列中的每一个排列生成不同的骨架组。因此,在一些实施方式中,在块1106处生成的候选管道组可以包括针对不同排列中的每一个排列的不同候选管道。
162.在一些实施方式中,可以将模板代码添加至候选管道组中的每个候选管道。模板代码可以提供出现在所有管道中的常见操作的标准实例化,包括读取数据集,将数据集拆分为训练和测试数据集,将模型从实例化的管道骨架中拟合到训练数据上,以及在测试数据上评估训练后的模型。由于这样的操作通常不会在功能或语法上从一个管道或数据集到另一管道或数据集发生变化,因此在一些实施方式中,可以使用利用适当参数实例化的标准样板代码来完成实例化管道的这些部分。
163.在块1108处,可以输出候选管道组。候选管道组中的每个具体管道可以是管道骨架的候选实例化。
164.在不脱离本公开内容的范围的情况下,可以对方法1100进行修改、添加或省略。例如,方法1100的一些操作可以以不同的顺序实现。另外地或替选地,可以同时执行两个或更多个操作。此外,所概述的操作和动作仅作为示例提供,并且在不偏离所公开的实施方式的情况下,一些操作和动作可以是可选的,被组合为更少的操作和动作,或者被扩展为附加的操作和动作。
165.图12示出了根据本公开内容的至少一个实施方式的示例计算系统1202的框图。计算系统1202可以被配置成实现或指导与修改模块(例如,图1的修改模块120)相关联的一个或更多个操作。计算系统1202可以包括处理器1250、存储器1252和数据存储装置1254。处理器1250、存储器1252和数据存储装置1254可以通信地耦接。
166.通常,处理器1250可以包括任何合适的专用或通用计算机、计算实体或包括各种计算机硬件或软件模块的处理设备,并且可以被配置成执行存储在任何适用的计算机可读存储介质上的指令。例如,处理器1250可以包括微处理器、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者被配置成解释和/或执行程序指令和/或处理数据的任何其他数字或模拟电路系统。尽管在图12中被示出为单个处理器,但处理器1250可以包括任意数目的处理器,这些处理器被配置成单独地或共同地执行本公开内容中描述的任意数目的操作或者指导本公开内容中描述的任意数目的操作的执行。另外地,一个或更多个处理器可以存在于一个或更多个不同的电子设备例如不同的服务器上。
167.在一些实施方式中,处理器1250可以被配置成解释和/或执行程序指令和/或处理存储在存储器1252、数据存储装置1254、或存储器1252和数据存储装置1254中的数据。在一些实施方式中,处理器1250可以从数据存储装置1254中获取程序指令并且将程序指令加载到存储器1252中。在程序指令被加载到存储器1252之后,处理器1250可以执行程序指令。
168.例如,在一些实施方式中,修改模块可以作为程序指令被包括在数据存储装置1254中。处理器1250可以从数据存储装置1254中获取相应模块的程序指令,并且可以将相应模块的程序指令加载到存储器1252中。在相应模块的程序指令被加载到存储器1252之后,处理器1250可以执行程序指令,使得计算系统可以按照指令指示的那样实现与相应模块相关联的操作。
169.存储器1252和数据存储装置1254可以包括用于携带或具有存储在其上的计算机可执行指令或数据结构的计算机可读存储介质。这样的计算机可读存储介质可以包括可以由通用或专用计算机例如处理器1250访问的任何可用介质。作为示例而非限制,这样的计算机可读存储介质可以包括有形的或非暂态计算机可读存储介质,所述有形的或非暂态计算机可读存储介质包括随机存取存储器(ram)、只读存储器(rom)、电可擦可编程只读存储器(eeprom)、光盘只读存储器(cd-rom)或其他光磁盘存储装置、磁盘存储装置或其他磁性存储设备、闪存设备(例如,固态存储器设备)、或者可以用来携带或存储计算机可执行指令或数据结构形式的特定程序代码并且可以由通用或专用计算机访问的任何其他存储介质。上面的组合也可以包括在计算机可读存储介质的范围内。计算机可执行指令可以包括例如被配置成使处理器1250执行某个操作或一组操作的指令和数据。
170.在不脱离本公开内容的范围的情况下,可以对计算系统1202进行修改、添加或省略。例如,在一些实施方式中,计算系统1202可以包括可能未明确示出或描述的任意数目的其他部件。
171.如上所述,本公开内容中描述的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机,如下面更详细讨论的。此外,如上所述,本公开内容中描述的实施方式可以使用用于携带或具有存储在其上的计算机可执行指令或数据结构的计算机可读介质来实现。
172.如在本公开内容中使用的,术语“模块”或“部件”可以指代被配置成执行模块或部件的动作的特定硬件实现方式以及/或者可以存储在计算系统的通用硬件(例如,计算机可读介质、处理设备等)上和/或由计算系统的通用硬件执行的软件对象或软件例程。在一些实施方式中,本公开内容中描述的不同部件、模块、引擎和服务可以被实现为在计算系统上执行的对象或进程(例如,作为单独的线程)。虽然本公开内容中描述的一些系统和方法通常被描述为以软件(存储在通用硬件上和/或由通用硬件执行)实现,但特定的硬件实现方式或软件与特定的硬件实现方式的组合也是可能的并且是可预期的。在本说明书中,“计算实体”可以是如本公开内容中先前限定的任何计算系统或者在计算系统上运行的任何模块或模块的组合。
173.在本公开内容中并且特别是在所附权利要求(例如,所附权利要求的主体)中使用的术语通常旨在作为“开放式”术语(例如,术语“包括”应被解释为“包括但不限于”,术语“具有”应被解释为“至少具有”,术语“包含”应被解释为“包含但不限于”等)。
174.另外地,如果意指所引入的权利要求叙述的具体数目,则在权利要求中将明确地叙述这样的意图,并且在没有这样的叙述的情况下不存在这样的意图。例如,为了有助于理解,所附权利要求书可以包含使用引入性短语“至少一个”和“一个或更多个”以引入权利要求叙述。然而,即使在同一权利要求包括引入性短语“一个或更多个”或“至少一个”以及不定冠词例如“一”或“一个”(例如,“一”和/或“一个”应被解释为意指“至少一个”或“一个或更多个”)的情况下,对这样的短语的使用也不应被解释为暗指通过不定冠词“一”或“一个”引入的权利要求叙述将包含这样引入的权利要求叙述的任何特定权利要求限制为仅包含一个这样的叙述的实施方式;这同样适用于使用定冠词来引入权利要求叙述。
175.另外,即使明确地记载了所引入的权利要求叙述的具体数目,本领域技术人员也将认识到,这样的叙述应被解释为至少意指所记载的数目(例如,没有其他修饰语的“两个叙述”的无修饰叙述意指至少两个叙述,或者两个或更多个叙述)。此外,在使用类似于“a、b和c等中的至少一个”或“a、b和c等中的一个或更多个”的惯用语的那些情况下,通常这样的构造旨在包括仅a、仅b、仅c、a和b一起、a和c一起、b和c一起、或a、b和c一起,等等。即使有时可能使用术语“a和/或b”来包括“a”或“b”或“a和b”的可能性,对短语“a或b”的这种解释仍然适用。
176.此外,无论是在说明书、权利要求书中还是在附图中,呈现两个或更多个替选术语的任何分隔词或短语都应被理解为考虑包括术语之一、术语中的任一个或所有术语的可能性。例如,短语“a或b”应被理解为包括“a”或“b”或“a和b”的可能性。
177.本公开内容中记载的所有示例和条件语言旨在用于教导目的以有助于读者理解本公开内容和发明人为了促进本领域的发展所贡献的构思,并且应被解释为不限于这样的具体记载的示例和条件。尽管已经详细地描述了本公开内容的实施方式,但是在不脱离本公开内容的精神和范围的情况下可以对本公开内容的实施方式进行各种改变、替换和变更。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献