基于云的软件具有许多优势。当服务分为许多独立组件时,它们更容易更新。同样,在高峰需求期间,扩展云服务(只需雇用更多CPU)就更容易。因此,许多组织正在将其整体企业应用程序分为基于云的微服务。最近,使用机器学习来简化此分区任务,已经进行了很多工作。尽管进行了很多研究,但不建议通常使用单个分区方法。更具体地说,这些先前的解决方案是“脆弱”。即,如果它们在一个数据集中的一种目标中效果很好,那么如果应用于许多数据集和多个目标,则可以是最佳选择。为了找到一种通常有用的分区方法,我们深入提出。该新算法通过(a)具有新颖的损失函数和(b)一些超参数优化的算法扩展了Co-GCN深度学习分区生成器。如我们的实验所示,在多个数据集和目标上,通常胜过先前的工作(包括Co-GCN等)。据我们所知,这是SE中这种稳定的超参数优化的第一份报告。为了帮助重复使用这项工作,可以在https://bit.ly/2whfflb上在线提供。
translated by 谷歌翻译
Automatically generated static code warnings suffer from a large number of false alarms. Hence, developers only take action on a small percent of those warnings. To better predict which static code warnings should not be ignored, we suggest that analysts need to look deeper into their algorithms to find choices that better improve the particulars of their specific problem. Specifically, we show here that effective predictors of such warnings can be created by methods that locally adjust the decision boundary (between actionable warnings and others). These methods yield a new high water-mark for recognizing actionable static code warnings. For eight open-source Java projects (cassandra, jmeter, commons, lucene-solr, maven, ant, tomcat, derby) we achieve perfect test results on 4/8 datasets and, overall, a median AUC (area under the true negatives, true positives curve) of 92%.
translated by 谷歌翻译
大多数机器学习算法由一个或多个超参数配置,必须仔细选择并且通常会影响性能。为避免耗时和不可递销的手动试验和错误过程来查找性能良好的超参数配置,可以采用各种自动超参数优化(HPO)方法,例如,基于监督机器学习的重新采样误差估计。本文介绍了HPO后,本文审查了重要的HPO方法,如网格或随机搜索,进化算法,贝叶斯优化,超带和赛车。它给出了关于进行HPO的重要选择的实用建议,包括HPO算法本身,性能评估,如何将HPO与ML管道,运行时改进和并行化结合起来。这项工作伴随着附录,其中包含关于R和Python的特定软件包的信息,以及用于特定学习算法的信息和推荐的超参数搜索空间。我们还提供笔记本电脑,这些笔记本展示了这项工作的概念作为补充文件。
translated by 谷歌翻译
在研究人员急于跨所有可用数据或尝试复杂的方法之前,可能是首先检查更简单的替代方案。具体而言,如果历史数据在某些小区域中具有最多的信息,那么也许从该地区学习的模型就足够了,这是项目的其余部分。为支持这一索赔,我们提供了一个案例研究,其中包含240个GitHub项目,在那里我们发现这些项目中的信息“被聚集”朝向项目的最早部分。从前150个提交的缺陷预测模型也有效,或者比最先进的替代品更好。只使用这个早期生命周期数据,我们可以非常快速地构建模型,很早就在软件项目生命周期中。此外,使用这种方法,我们已经显示了一个简单的模型(只有两个功能)概括为数百个软件项目。基于这种经验,我们怀疑概括软件工程缺陷预测模型的事先工作可能有不必要的复杂化本身简单的过程。此外,在从相对无关的区域中得出的结论以来,需要重新讨论焦点生命周期数据的事先工作。 Replication注意:我们所有的数据和脚本都在https://github.com/snaraya7/simplify-software-analytics上线
translated by 谷歌翻译
超参数优化构成了典型的现代机器学习工作流程的很大一部分。这是由于这样一个事实,即机器学习方法和相应的预处理步骤通常只有在正确调整超参数时就会产生最佳性能。但是在许多应用中,我们不仅有兴趣仅仅为了预测精度而优化ML管道;确定最佳配置时,必须考虑其他指标或约束,从而导致多目标优化问题。由于缺乏知识和用于多目标超参数优化的知识和容易获得的软件实现,因此通常在实践中被忽略。在这项工作中,我们向读者介绍了多个客观超参数优化的基础知识,并激励其在应用ML中的实用性。此外,我们从进化算法和贝叶斯优化的领域提供了现有优化策略的广泛调查。我们说明了MOO在几个特定ML应用中的实用性,考虑了诸如操作条件,预测时间,稀疏,公平,可解释性和鲁棒性之类的目标。
translated by 谷歌翻译
我们介绍了数据科学预测生命周期中各个阶段开发和采用自动化的技术和文化挑战的说明概述,从而将重点限制为使用结构化数据集的监督学习。此外,我们回顾了流行的开源Python工具,这些工具实施了针对自动化挑战的通用解决方案模式,并突出了我们认为进步仍然需要的差距。
translated by 谷歌翻译
比较不同的汽车框架是具有挑战性的,并且经常做错了。我们引入了一个开放且可扩展的基准测试,该基准遵循最佳实践,并在比较自动框架时避免常见错误。我们对71个分类和33项回归任务进行了9个著名的自动框架进行了详尽的比较。通过多面分析,评估模型的准确性,与推理时间的权衡以及框架失败,探索了自动框架之间的差异。我们还使用Bradley-terry树来发现相对自动框架排名不同的任务子集。基准配备了一个开源工具,该工具与许多自动框架集成并自动化经验评估过程端到端:从框架安装和资源分配到深入评估。基准测试使用公共数据集,可以轻松地使用其他Automl框架和任务扩展,并且具有最新结果的网站。
translated by 谷歌翻译
Labeling a module defective or non-defective is an expensive task. Hence, there are often limits on how much-labeled data is available for training. Semi-supervised classifiers use far fewer labels for training models, but there are numerous semi-supervised methods, including self-labeling, co-training, maximal-margin, and graph-based methods, to name a few. Only a handful of these methods have been tested in SE for (e.g.) predicting defects and even that, those tests have been on just a handful of projects. This paper takes a wide range of 55 semi-supervised learners and applies these to over 714 projects. We find that semi-supervised "co-training methods" work significantly better than other approaches. However, co-training needs to be used with caution since the specific choice of co-training methods needs to be carefully selected based on a user's specific goals. Also, we warn that a commonly-used co-training method ("multi-view"-- where different learners get different sets of columns) does not improve predictions (while adding too much to the run time costs 11 hours vs. 1.8 hours). Those cautions stated, we find using these "co-trainers," we can label just 2.5% of data, then make predictions that are competitive to those using 100% of the data. It is an open question worthy of future work to test if these reductions can be seen in other areas of software analytics. All the codes used and datasets analyzed during the current study are available in the https://GitHub.com/Suvodeep90/Semi_Supervised_Methods.
translated by 谷歌翻译
Performance debugging in production is a fundamental activity in modern service-based systems. The diagnosis of performance issues is often time-consuming, since it requires thorough inspection of large volumes of traces and performance indices. In this paper we present DeLag, a novel automated search-based approach for diagnosing performance issues in service-based systems. DeLag identifies subsets of requests that show, in the combination of their Remote Procedure Call execution times, symptoms of potentially relevant performance issues. We call such symptoms Latency Degradation Patterns. DeLag simultaneously searches for multiple latency degradation patterns while optimizing precision, recall and latency dissimilarity. Experimentation on 700 datasets of requests generated from two microservice-based systems shows that our approach provides better and more stable effectiveness than three state-of-the-art approaches and general purpose machine learning clustering algorithms. DeLag is more effective than all baseline techniques in at least one case study (with p $\leq$ 0.05 and non-negligible effect size). Moreover, DeLag outperforms in terms of efficiency the second and the third most effective baseline techniques on the largest datasets used in our evaluation (up to 22%).
translated by 谷歌翻译
算法配置(AC)与对参数化算法最合适的参数配置的自动搜索有关。目前,文献中提出了各种各样的交流问题变体和方法。现有评论没有考虑到AC问题的所有衍生物,也没有提供完整的分类计划。为此,我们引入分类法以分别描述配置方法的交流问题和特征。我们回顾了分类法的镜头中现有的AC文献,概述相关的配置方法的设计选择,对比方法和问题变体相互对立,并描述行业中的AC状态。最后,我们的评论为研究人员和从业人员提供了AC领域的未来研究方向。
translated by 谷歌翻译
无论是在功能选择的领域还是可解释的AI领域,都有基于其重要性的“排名”功能的愿望。然后可以将这种功能重要的排名用于:(1)减少数据集大小或(2)解释机器学习模型。但是,在文献中,这种特征排名没有以系统的,一致的方式评估。许多论文都有不同的方式来争论哪些具有重要性排名最佳的特征。本文通过提出一种新的评估方法来填补这一空白。通过使用合成数据集,可以事先知道特征重要性得分,从而可以进行更系统的评估。为了促进使用新方法的大规模实验,在Python建造了一个名为FSEVAL的基准测定框架。该框架允许并行运行实验,并在HPC系统上的计算机上分布。通过与名为“权重和偏见”的在线平台集成,可以在实时仪表板上进行交互探索图表。该软件作为开源软件发布,并在PYPI平台上以包裹发行。该研究结束时,探索了一个这样的大规模实验,以在许多方面找到参与算法的优势和劣势。
translated by 谷歌翻译
Multilayer Neural Networks trained with the backpropagation algorithm constitute the best example of a successful Gradient-Based Learning technique. Given an appropriate network architecture, Gradient-Based Learning algorithms can be used to synthesize a complex decision surface that can classify high-dimensional patterns such as handwritten characters, with minimal preprocessing. This paper reviews various methods applied to handwritten character recognition and compares them on a standard handwritten digit recognition task. Convolutional Neural Networks, that are specifically designed to deal with the variability of 2D shapes, are shown to outperform all other techniques.Real-life document recognition systems are composed of multiple modules including eld extraction, segmentation, recognition, and language modeling. A new learning paradigm, called Graph Transformer Networks (GTN), allows such multi-module systems to be trained globally using Gradient-Based methods so as to minimize an overall performance measure.Two systems for on-line handwriting recognition are described. Experiments demonstrate the advantage of global training, and the exibility of Graph Transformer Networks.A Graph Transformer Network for reading bank check is also described. It uses Convolutional Neural Network character recognizers combined with global training techniques to provides record accuracy on business and personal checks. It is deployed commercially and reads several million checks per day.
translated by 谷歌翻译
背景:机器学习(ML)可以实现有效的自动测试生成。目的:我们表征了新兴研究,检查测试实践,研究人员目标,应用的ML技术,评估和挑战。方法:我们对97个出版物的样本进行系统文献综述。结果:ML生成系统,GUI,单位,性能和组合测试的输入或改善现有生成方法的性能。 ML还用于生成测试判决,基于属性的和预期的输出序列。经常基于神经网络和强化学习的监督学习通常是基于Q学习的 - 很普遍,并且某些出版物还采用了无监督或半监督的学习。使用传统的测试指标和与ML相关的指标(例如准确性)评估(半/非 - )监督方法,而经常使用与奖励功能相关的测试指标来评估强化学习。结论:工作到尽头表现出巨大的希望,但是在培训数据,再探术,可伸缩性,评估复杂性,所采用的ML算法以及如何应用 - 基准和可复制性方面存在公开挑战。我们的发现可以作为该领域研究人员的路线图和灵感。
translated by 谷歌翻译
本次调查绘制了用于分析社交媒体数据的生成方法的研究状态的广泛的全景照片(Sota)。它填补了空白,因为现有的调查文章在其范围内或被约会。我们包括两个重要方面,目前正在挖掘和建模社交媒体的重要性:动态和网络。社会动态对于了解影响影响或疾病的传播,友谊的形成,友谊的形成等,另一方面,可以捕获各种复杂关系,提供额外的洞察力和识别否则将不会被注意的重要模式。
translated by 谷歌翻译
近年来,在平衡(超级)图分配算法的设计和评估中取得了重大进展。我们调查了过去十年的实用算法的趋势,用于平衡(超级)图形分区以及未来的研究方向。我们的工作是对先前有关该主题的调查的更新。特别是,该调查还通过涵盖了超图形分区和流算法来扩展先前的调查,并额外关注并行算法。
translated by 谷歌翻译
Monolith软件应用程序将所有功能功能封装到单个可部署单元中。虽然甚至在整料中,有意保持函数的清洁分离,但它们往往会因对新功能而不断增长的需求,改变团队成员,艰难的时间表,技能,技能等等等待而受到损害。他们难以理解和维护。因此,微服务架构越来越多地用于通过多个较小的尺寸小型耦合的功能服务构建应用程序,其中每个服务拥有单一的功能责任。这种方法使MicroServices架构作为基于云应用的自然选择。但是,对于已经写入的纪线代码的功能模块自动分离的挑战会减慢其迁移任务。图形是代表软件应用程序的自然选择。各种软件工件如程序,表和文件成为图表中的节点以及它们共享的不同关系,例如函数调用,继承,资源(表,文件)访问类型(创建,读取,更新,删除)可以表示为链接在图表中。因此,我们将这种传统的应用程序分解问题推断到基于异构图形的聚类任务。我们的解决方案是首先利用异构图形神经网络来学习这种多样化的软件实体的表示及其对聚类任务的关系。我们通过与软件工程和现有的基于图表表示技术的作品进行比较来研究效果。我们试验以像java的面向对象的语言编写的应用程序,如cobol等程序语言,并显示我们的工作适用于不同的编程范例。
translated by 谷歌翻译
软件配置调整对于优化给定的性能目标(例如,最小化延迟)至关重要。然而,由于软件的本质上复杂的配置景观和昂贵的测量,成功存在相当轻微的成功,特别是在防止搜索被困在本地Optima中。为了解决这个问题,在本文中,我们采取了不同的视角。除了专注于改进优化器,而不是专注于优化模型的水平,并提出了一种META多象化(MMO)模型,其考虑辅助性能目标(例如,除了延迟之外的吞吐率)。是什么让这个型号独特的是我们没有优化辅助性能目标,而是使用它来类似地进行,而不同的配置较差的不同(即,彼此Nondominize的Pareto),从而防止搜索被困在本地Optima中。重要的是,通过一种新的常规化方法,我们展示了如何有效地使用MMO模型而不担心其重量 - 可能影响其有效性的唯一但高度敏感的参数。来自11个现实世界软件系统/环境的22例实验证实,我们的MMO模型具有新的归一化的MMO模型在82%的情况下比其最先进的单一目标对应物更好,同时实现高达2.09倍的加速。对于67%的病例,新的归一化也使MMO模型能够在使用我们之前的FSE工作中使用的正常化时优于实例,以便在预先调整的最佳重量下,节省了大量资源找到一个很好的重量。我们还表明,具有新标准化的MMO模型可以整合闪存,最近的基于模型的调音工具,在68%的情况下,一般的加速1.22倍。
translated by 谷歌翻译
Vizier是Google的DeCACTO BlackBox和Hyper参数优化服务,它优化了Google一些最大的产品和研究工作。为了按照调整数千个用户的关键系统的规模运行,Google Vizier在提供多个不同的功能方面解决了关键的设计挑战,同时保持完全容忍。在本文中,我们介绍了基于Google内部Vizier基础架构和框架的基于Python的独立界面开源(OSS)Vizier。 OSS Vizier提供了一个能够定义和解决各种优化问题的API,包括多样性,早期停止,转移学习和条件搜索。此外,它被设计为可确保可靠性的分布式系统,并允许对用户的目标函数进行多次平行评估。基于RPC的灵活基础架构使用户可以从任何语言编写的二进制文件中访问OSS Vizier。 OSS Vizier还提供了一个后端(“ Pythia”)API,该API为算法作者提供了一种与Core OSS Vizier系统接口新算法的方法。 OSS Vizier可从https://github.com/google/vizier获得。
translated by 谷歌翻译
Monte Carlo Tree Search (MCTS) is a recently proposed search method that combines the precision of tree search with the generality of random sampling. It has received considerable interest due to its spectacular success in the difficult problem of computer Go, but has also proved beneficial in a range of other domains. This paper is a survey of the literature to date, intended to provide a snapshot of the state of the art after the first five years of MCTS research. We outline the core algorithm's derivation, impart some structure on the many variations and enhancements that have been proposed, and summarise the results from the key game and non-game domains to which MCTS methods have been applied. A number of open research questions indicate that the field is ripe for future work.
translated by 谷歌翻译
软件测试可能是一个漫长且昂贵的过程,尤其是如果无法测试的软件进行测试。重构技术可以通过改善影响可检验性的软件指标来增强可检验性。在构建回归模型学习如何将计算的源代码计算指标与其可检验性相关联的指标时,确定了指标。我们确定了15个软件指标,在解释我们的可检测性预测模型的同时,高度影响可检验性。我们使用42个Java类的实验表明,除了改善其他一些质量属性外,改善这15个指标的重构平均可以提高可测试性15.57%。我们的可测试性预测模型经过训练,可以映射源代码指标,以测试有效性和效率,作为可测试软件的两种重要成分。随着测试套件获得的覆盖范围的增加,测试有效性会提高。另一方面,随着测试套件的大小增加,测试效率会降低。本文提供了一个数学模型,以根据测试套件的大小和覆盖范围来计算类可检验性。我们使用此数学模型来计算可测试性作为我们可检测性预测模型的目标。数学模型要求执行正在测试的类以计算测试覆盖范围,而我们的回归模型在静态上测量了测试性。在测试性方面的测试结果预测应在测试之前,以避免不必要的成本。我们的可测试性预测模型已在23,886个Java类和262个软件指标上进行了培训和测试。学习的模型以R2为0.68,平均平方误差为0.03,可预测可验证性。
translated by 谷歌翻译