KDNuggets 博客中文翻译(二百四十二)

原文:KDNuggets

协议:CC BY-NC-SA 4.0

TheWalnut.io:一种轻松创建算法可视化的方式

原文:www.kdnuggets.com/2015/07/thewalnutio-algorithm-visualizations.html

作者: Daniel Moisset,(Machinalis.com)。

我们发布了 TheWalnut.io 的初始版本,这是一款允许创建和分享算法可视化的 web 应用程序。我们不仅仅是制作漂亮的算法可视化画廊,而是构建一个人们可以在其中学习、讨论并以视觉方式交流代码的地方。我们在路线图中有许多有趣的功能(和 bug 修复),但我们希望发布,让你能看到我们正在做的事情。

Walnut 允许用户用 Python 或 Javascript 编写程序,并使其与用户设计的虚拟“世界”互动。这些世界定义了共享状态、可能的动作、每个程序可见的状态部分等。可以在一个世界中运行单个或多个程序,然后查看结果。然后,你可以使用简单的声明式 DSL 定义如何表示执行结果(程序所做的操作,以及世界和程序的状态)。你可以对单次运行的不同方面进行多种可视化。

以快速排序为例。有一个 排序 世界,它定义了状态为一组数字,程序可以查看这些数字并对其进行交换,目标是将其排序。然后,你可以添加许多可以在该世界中运行的程序(任何基于交换的排序算法,如 快速排序 或 Shellsort)。你可以定义 场景 以及初始数据(以展示平均和最坏情况,或不同的数组大小)。可视化 可以将这些信息映射到显示上:可能只是移动的条形图,或者是像快速排序这样的递归算法的调用栈,或者是交换宽度随时间变化的图表:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果你访问我们的探索部分,你将能够看到开发团队构建的一些示例作为起点。但我们的愿景是让你创建自己的可视化并分享它们。仅仅通过代码学习算法是很困难的!破解这个难题,让大家看到里面的内容!加入 Walnut 革命吧!

简介: Daniel Moisset @dmoisset 是一位企业家、计算机科学教师和软件开发人员。

相关

  • 50+ 数据科学和机器学习备忘单

  • 开源支持的互动分析:概述

  • 21 个必备的数据可视化工具


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. Google 网络安全证书 - 快速进入网络安全职业生涯

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. Google 数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. Google IT 支持专业证书 - 支持你的组织 IT 部门


更多相关话题

数据科学与数据工程之间的细微差别

原文:www.kdnuggets.com/2019/09/thin-line-between-data-science-data-engineering.html

评论外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编辑注:这是“Climbing the Data Science Ladder”播客系列的第四集,由 Jeremie Harris、Edouard Harris 和 Russell Pollari 主持。他们共同经营一个名为SharpestMinds的数据科学辅导初创公司。你可以在下面收听播客:


我们的三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你所在组织的 IT


如果你在过去几年关注数据科学的发展,你会知道这个领域自 2010 年代初期/中期的“狂野西部”阶段以来,已经发生了很大的变化。那时,几份包含半成品建模项目的 Jupyter 笔记本就能让你在一家体面的公司找到工作,但现在情况已经发生了很大变化。

今天,随着公司们终于认识到数据科学所能带来的价值,对数据科学在生产系统中实施的重视程度越来越高。而这些实施需要能够在实时处理越来越大数据集的模型,因此,很多数据科学问题已变成工程问题。

这就是为什么我们与 Akshay Singh 坐下来讨论,他曾在亚马逊、League 和 Chan-Zuckerberg Initiative(前身为 Meta.com)工作和管理数据科学团队等多个领域。Akshay 在数据科学和数据工程的交汇处工作,并向我们讲解了数据分析与数据科学之间的细微差别、该领域的未来,以及他对那些未受到足够重视的最佳实践的看法。以下是我们的主要收获:

  • 在数据工程中最容易犯的一个错误就是没有深入考虑工具的选择。你为什么使用 S3 作为数据仓库?为什么不使用 Redshift 或 BigQuery?逼迫自己理解这些问题的答案,而不是接受工具的现成配置,是一个很好的成长方式,而且如果你想给潜在雇主留下深刻印象,这一点至关重要。

  • 总是要假设你现在构建的任何东西都会在一年或更短时间内被替代。生产系统不是静态的,你或其他人迟早会不得不重新审视代码库的大部分。这就是为什么学习如何使用文档字符串、使用清晰的函数和变量名称,以及理解关于内联注释的最佳实践如此重要。

  • 数据会随着时间的推移发生漂移,一个在今天的数据上表现良好的模型可能在下周表现不佳。这可能由于许多因素:季节性是一个,但用户行为也可能会发生变化。Akshay 建议说,实时收集用户反馈是解决这个问题的关键:如果你发现他们的反馈意外地变得负面,构建一个警报系统,让你知道有些地方不对劲。

  • 大局是需要记住的最重要的事情。很容易陷入技术问题,但伟大的数据科学家的标志是能够停下来问这个问题是否值得解决。你真的需要一个推荐系统,还是一个简单的基于规则的系统同样有效?如果你无法访问监督学习模型所需的确切训练标签,你能否拼凑出一个不错的替代品?现实世界是混乱的,通常要求你用比 Kaggle 竞赛更多的创造力来处理数据科学问题。

  • 看到大局的重要性随着时间的推移只会越来越显著,因为数据科学家的工作量正通过越来越强大的工具被逐步抽象化。数据科学正慢慢地变成一种产品角色。

TDS 播客 — 剪辑

如果你在 Twitter 上,随时可以联系我 @jeremiecharris!

原文。经许可转载。

相关内容:

  • 关于 AI、分析、数据科学、机器学习的十大最佳播客

  • 构建高效数据科学团队

  • 数据工程师新手在 Google BigQuery 中的 7 个“陷阱”

更多相关内容

事物并不总是正态的:一些“其他”分布

原文:www.kdnuggets.com/2023/01/things-arent-always-normal-distributions.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:Unsplash

关键要点


我们的前三名课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你的组织进行 IT 管理


概率分布在数据科学和统计学中扮演着重要角色。尽管正态(高斯)分布是最流行的概率分布,但在数据科学中也可以使用其他概率分布:

  • 伽马分布用于建模代表事件之间时间间隔的连续变量

  • 贝塔分布用于建模代表比例或概率的连续变量

  • 伯努利分布用于建模二元结果

概率分布是描述随机变量行为的数学函数。在数据科学和机器学习中,概率分布通常用于描述数据集的潜在分布,预测未来事件,并评估机器学习模型的性能。例如,高斯分布是一种参数分布,它依赖于两个变量,即均值标准差。因此,一旦均值和标准差参数已知,就可以创建一个正态分布的数据集。举例来说,下面的代码创建了一个包含 1000 个值的数据集,这些值服从均值为 0、标准差为 0.1 的正态分布。

import numpy as np

import matplotlib.pyplot as plt

mu, sigma = 0, 0.1 # mean and standard deviation

s = np.random.normal(mu, sigma, 1000)

count, bins, ignored = plt.hist(s, 30, density = True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
               np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
         linewidth=2, color='r')
plt.show() 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1. 高斯分布的可视化。

我们还可以绘制不同均值和标准差组合的正态分布,如下所示:

import numpy as np
import scipy.stats as stats 
import matplotlib.pyplot as plt

#define three Gamma distributions
x = np.linspace(-10, 10, 101)
y1 = stats.norm.pdf(x, 0, 2)
y2 = stats.norm.pdf(x, 0, 4)
y3 = stats.norm.pdf(x, 2, 2)

#add lines for each distribution
plt.plot(x, y1, label='mu=0, sigma=2')
plt.plot(x, y2, label='mu=0, sigma=4')
plt.plot(x, y3, label='mu=4, sigma=1')

#add legend
plt.legend()

#display plot
plt.show() 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2. 高斯分布在不同均值和标准差下的可视化。

概率分布在数据科学和机器学习中非常重要,因为它们提供了一种量化和分析不确定性的方法,而不确定性是许多现实世界过程的固有部分。它们在统计推断中也发挥着关键作用,统计推断是使用数据对总体或过程进行推测的过程。

在本文中,我们将解释三种用于机器学习的概率分布,即 伽马分布贝塔分布伯努利分布

伽马分布

伽马分布是一种连续概率分布,常用于建模在以恒定速率发生的过程中事件之间的时间。它由形状参数(k)和率参数(ϴ)来定义,其概率密度函数(PDF)定义为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 Γ(k) 是伽马函数,ϴ 是尺度参数,k 是形状参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3. 伽马分布的可视化。

伽马分布通常用于建模表示事件之间时间间隔的连续变量的分布。例如,它可以用于建模顾客到达商店的时间间隔,或者设备故障的时间间隔。

代码示例: 在 Python 中,可以使用 scipy.stats 模块中的“gamma”函数生成伽马分布。例如,下面的代码将生成一个具有伽马分布的随机变量 x,并绘制该分布的概率密度函数。k 和 theta 参数分别指定伽马分布的形状参数和率参数。

import numpy as np
import scipy.stats as stats 
import matplotlib.pyplot as plt

#define three Gamma distributions
x = np.linspace(0, 40, 100)
y1 = stats.gamma.pdf(x, a=5, scale=3)
y2 = stats.gamma.pdf(x, a=2, scale=5)
y3 = stats.gamma.pdf(x, a=4, scale=2)

#add lines for each distribution
plt.plot(x, y1, label='shape=5, scale=3')
plt.plot(x, y2, label='shape=2, scale=5')
plt.plot(x, y3, label='shape=4, scale=2')

#add legend
plt.legend()

#display plot
plt.show() 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4. 不同形状和尺度参数的伽马分布的可视化。

除了生成随机变量外,scipy.stats 模块还提供了从数据中估计伽马分布参数的函数、检验拟合优度的函数,以及使用伽马分布进行统计检验的函数。这些函数对分析被认为遵循伽马分布的数据很有用。

贝塔分布

贝塔分布是一种定义在区间 [0, 1] 上的连续概率分布。它常用于建模比例或概率,并由两个形状参数定义,通常记作 α 和 β。贝塔分布的概率密度函数(PDF)定义为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PDF 也可以表示为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

是贝塔函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5. 贝塔分布的可视化。

Beta 分布常用于建模代表比例或概率的连续变量的分布。例如,它可以用来建模在某些营销努力下客户进行购买的概率,或机器学习模型做出正确预测的概率。

代码示例:在 Python 中,可以使用 scipy.stats 模块中的 “beta” 函数生成 Beta 分布。例如:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta

# Set the shape paremeters
a, b = 80, 10

# Generate the value between
x = np.linspace(beta.ppf(0.01, a, b),beta.ppf(0.99, a, b), 100)

# Plot the beta distribution
plt.figure(figsize=(7,7))
plt.xlim(0.7, 1)
plt.plot(x, beta.pdf(x, a, b), 'r-')
plt.title('Beta Distribution', fontsize='15')
plt.xlabel('Values of Random Variable X (0, 1)', fontsize='15')
plt.ylabel('Probability', fontsize='15')
plt.show()

这将生成一个具有 Beta 分布的随机变量 x 并绘制该分布的概率密度函数。ab 参数分别指定 Beta 分布的形状参数。

scipy.stats 模块具有从数据中估计 Beta 分布参数、评估拟合优度以及使用 Beta 分布进行统计测试的函数,除此之外,还可以生成随机变量。

伯努利分布

伯努利分布是一种离散概率分布,描述了单个二元事件的结果,例如抛硬币。它由一个参数 p 特征,该参数是事件发生的概率。伯努利分布的概率质量函数定义为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 n 是 0 或 1,代表事件的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6. 伯努利分布的可视化。

该分布通常用于建模二元结果的概率,例如客户进行购买的概率或机器学习模型做出正确预测的概率。

代码示例:在 Python 中,可以使用 scipy.stats 模块中的 “Bernoulli” 函数生成伯努利分布。例如:

from scipy.stats import bernoulli
import seaborn as sb

data_bern = bernoulli.rvs(size=1000,p=0.6)
ax = sb.distplot(data_bern,
                  kde=True,
                  color='crimson',
                  hist_kws={
    
    "linewidth": 25,'alpha':1})
ax.set(xlabel='Bernouli', ylabel='Frequency')

这将生成一个具有伯努利分布的随机变量 x 并绘制该分布的概率质量函数。p 参数指定事件发生的概率。

除了生成随机变量,scipy.stats 模块还提供了从数据中估计伯努利分布概率参数、测试拟合优度以及使用伯努利分布进行统计测试的函数。在评估可能遵循伯努利分布的数据时,这些函数可能会很有用。

总之,Gamma 分布用于建模表示事件间时间间隔的连续变量,Beta 分布用于建模表示比例或概率的连续变量,而 Bernoulli 分布用于建模二元结果。了解这些概率分布背后的概念对于你的机器学习旅程非常有帮助,因为它们能帮助你建模解决数据科学和机器学习中的各种问题。

本杰明·O·塔约 是一位物理学家、数据科学教育者和作家,也是 DataScienceHub 的所有者。之前,本杰明曾在中央俄克拉荷马大学、大峡谷大学和匹兹堡州立大学教授工程学和物理学。

更多相关内容

扩展您的网络数据驱动产品时需要了解的事项

原文:www.kdnuggets.com/2023/08/things-know-scaling-web-datadriven-product.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Getty Images 提供,来自 Unsplash+

当你环顾今天的商业环境时,你很可能会看到一个数据不仅是石油,而是大多数行业的燃料、引擎和轮子时代。


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业道路

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你所在组织的 IT 工作


所以,如果你从事网络数据驱动产品的业务,你的未来部分依赖于扩展。每个决策、每个策略、每个产品都依赖于数据。

那么,你如何成功地扩展你的产品?

本文旨在通过关键考虑因素和实用技巧为扩展照亮道路。无论你在运营招聘平台、潜在客户生成平台,还是任何数据驱动的产品,你都能在这里找到所需的指导。

理解数据驱动产品扩展的基础

首先谈谈可扩展性。它是什么?想象你的产品是一个气球。随着需求的增长,你希望你的气球能够膨胀而不爆裂。

这就是可扩展性的意义。它是平稳处理增加负载的能力,无论是更多的数据、更多的用户,还是更多的交易。

那么,在计划扩展时你应该注意哪些问题?

数据收集和管理策略

首先是数据。它是你产品的核心。但当你的产品扩展时,你如何保持数据收集的一致性和质量?你如何有效整合和使用这些数据?

成功扩展的核心在于高效管理这些方面。让我们解析一下数据收集和管理策略的组成部分:

  1. 持续验证。 定期检查数据来源,确保收集的数据仍然相关和准确。

  2. 严格清理。 使用强大的算法清理数据,去除任何不一致、错误或重复项。

  3. 智能整合。 以保持数据质量和可用性的方法融合数据集。

通过改进这三个领域,你在为数据驱动产品的成功扩展奠定基础。这全在于精准、干净和智能地管理数据流。

数据隐私与合规

扩展不仅仅是关于增长;它还涉及责任。当你处理更多数据,特别是个人数据时,你必然会遇到伦理和法律的考量。

那么,你如何确保数据隐私并满足法规要求呢?

对聪明人的建议:尽可能地匿名化数据,保持对所在地区最新数据法规的了解,并定期进行审计以确保合规。

不同行业数据驱动产品扩展策略

在扩展数据驱动的产品时,具体情况将取决于行业和产品的性质。

让我们看一些具体的例子,了解如何利用网络数据在不同领域实现扩展。

招聘平台

假设你正在运行一个招聘平台。随着平台的增长,越来越多的公司和求职者加入,你将不得不获取和管理更多的职位发布数据和员工数据。

在这种情况下,基于 AI 的匹配算法可能是你扩展的关键。该算法将分析职位描述、技能要求和候选人档案,提供准确的匹配建议。

随着更多数据的加入,算法会学习和改进,提供更好的匹配结果。

一个例子是像 LinkedIn 这样的平台如何利用数据来优化其“你可能感兴趣的职位”功能。

潜在客户生成平台

在潜在客户生成平台的背景下,扩展意味着高效处理和分析更广泛的公司数据、员工数据和职位发布数据,以生成高质量的潜在客户。

例如,你可以通过整合更多数据来扩展你的平台,这会丰富潜在客户数据,帮助企业更好地理解其潜在客户,并更有效地针对其市场营销工作。

随着平台的增长,可以使用预测分析工具来预测客户行为,基于以前的数据模式,改善潜在客户评分,推动更多转化。

预见并克服扩展挑战

扩展并不总是一帆风顺。你将面临挑战,从基础设施限制和数据管理问题到保持数据质量和安全。

  1. 基础设施限制。 随着扩展,你现有的基础设施可能难以应对增加的数据负荷和用户请求。你可能会遇到处理时间变慢或甚至系统崩溃的情况。解决这一问题的关键是从一开始就投资于可扩展的基础设施。考虑像云服务器或数据库这样的解决方案,它们可以根据你的需求进行扩展(或收缩)。像亚马逊网络服务(AWS)或谷歌云这样的供应商提供的托管服务可以帮助缓解这些挑战,提供强大、可扩展的基础设施。

  2. 数据管理问题。 数据量的增加带来了更多的复杂性。你将不得不处理各种数据格式、集成挑战,可能还会遇到不完整或不一致的数据。自动化的数据管理工具在这里可以大显身手,帮助你系统地收集、清理、集成和维护数据。

  3. 维护数据质量。 随着规模的扩大,数据错误、重复或不一致的风险增加。为了保持数据质量,你需要实施复杂的数据验证和清理过程。这些过程可能包括简单的检查和去重,也可能涉及更复杂的机器学习算法。

  4. 数据安全。 随着数据集和用户基数的增加,数据泄露的潜在风险也在增加。实施强有力的安全措施至关重要。这可能包括加密敏感数据、进行定期的安全审计,以及确保你的平台符合相关的数据保护法规。

在扩展过程中,挑战是自然的。关键在于预见潜在问题,为其做准备,并制定应对策略以应对这些问题。

为数据驱动产品的未来做准备

数据领域快速发展,变化无常。为未来做准备不仅仅是保持现状,更是为了在进步的浪潮中站稳脚跟。你如何确保你的数据驱动产品为未来的挑战做好准备?

  1. 持续学习。 未来将带来新的技术、新的方法论和新的数据理解与利用方式。在你的团队中培养持续学习和好奇心的文化至关重要。保持对数据科学和技术最新进展的关注。参加研讨会、网络研讨会和行业活动。鼓励你的团队寻找新的认证和教育机会。

  2. 投资先进技术。 人工智能(AI)和机器学习(ML)不仅仅是流行词汇——它们正在塑造数据驱动产品的未来。这些技术可以自动化数据处理任务,从复杂的数据集中提取见解,并提高产品的效率和可扩展性。此外,区块链技术正被越来越多地用于提升数据安全性和透明度。考虑如何将这些先进技术集成到你的平台中。

  3. 灵活性和适应性。 随着数据驱动产品的规模扩大,你需要对策略和流程进行调整——可能是重大的调整。培养灵活的思维方式可以帮助你更顺利地适应变化。尝试不同的策略,从成功和失败中学习,并在需要时勇于调整方向。

  4. 伦理和合规。 随着公众对数据隐私的关注增加和监管重点的加强,确保道德的数据实践和合规性比以往任何时候都更加重要。这不仅仅是为了避免处罚——也是为了建立与用户的信任。定期审查和更新你的数据隐私政策,并考虑进行第三方审计以确保合规。

  5. 预测分析。 未来就是关于预测趋势和做出前瞻性决策。预测分析工具可以分析过去的数据来预测未来的趋势,帮助你保持领先一步。它们还可以帮助进行风险管理、客户行为预测和性能预测。

为未来做准备不是一次性的任务,而是一个持续学习、适应和预测的过程。以未来为导向的思维方式可以确保你的数据驱动产品始终保持相关性和竞争力。

但你究竟如何保持准备?

  • 投资于人才。 数据相关的技能集不断发展。投资于团队的持续学习,确保他们跟上新兴趋势和技术。

  • 拥抱人工智能和机器学习。 这些技术将继续塑造数据驱动产品的未来。探索它们如何提升你的产品的可扩展性和有效性。

  • 培养敏捷性。 快速变化是技术世界中的常态。培养敏捷的思维方式,准备好根据需要调整或改变你的策略。

结论

在一个越来越依赖数据的世界中,缩放你的网络数据驱动产品不再是选择,而是必要。

无论你处理的是公司数据、员工数据、招聘数据,还是其他数据,你的缩放成功将取决于数据收集和管理策略、隐私和合规性遵守、行业特定的缩放策略以及对未来的准备情况。

Karolis Didziulis 是 Coresignal 的产品总监,该公司是业界领先的公共网络数据提供商。他的专业知识来源于超过 10 年的 Bh1B 业务发展经验和超过 6 年的数据行业经验。目前,Karolis 的主要重点是领导 Coresignal 的工作,帮助数据驱动的初创公司、企业和投资公司通过提供来自最具挑战性来源的最大规模和最新的公共网络数据,从而在其业务中脱颖而出。

更多相关话题

从 fast.ai 课程 V3 中学到的 10 个新知识

原文:www.kdnuggets.com/2019/06/things-learnt-fastai-course.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 评论

Raimi Bin Karim,AI Singapore

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大家都在谈论fast.ai的大规模开放在线课程(MOOC),所以我决定尝试一下他们 2019 年的深度学习课程实用深度学习(程序员版)v3

我一直了解一些深度学习概念/想法(我已经在这个领域待了一年,主要处理计算机视觉),但从未真正理解过一些直觉或解释。我也了解到Jeremy HowardRachel Thomas和 Sylvain Gugger(关注他们的 Twitter!)是深度学习领域的影响力人物(Jeremy 有丰富的 Kaggle 竞赛经验),所以我希望从他们那里获得新的见解和直觉,并得到一些模型训练的技巧和窍门。我有很多东西要向这些人学习。

所以,我在观看视频 3 周后(我没有做任何练习 ???),写下这篇文章来将我学到的 新知识进行整理与分享。当然,也有一些我一头雾水的内容,所以我做了一些额外的研究,并在这篇文章中呈现。最后,我也写了一下对这门课程的感受(剧透:我喜欢它❣️)。

免责声明 不同的人会有不同的学习要点,这取决于你有何种深度学习背景。此文不适合深度学习初学者,也不是课程内容的总结。这篇文章假设你已具备神经网络、梯度下降、损失函数、正则化技术和生成嵌入的基础知识。以下经验也很有帮助:图像分类、文本分类、语义分割和生成对抗网络。

我将我的 10 个学习要点内容组织如下:从神经网络理论,到架构,再到与损失函数(学习率、优化器)相关的内容,到模型训练(及正则化),再到深度学习任务,最终到模型可解释性。

目录:10 个知识点

  1. 通用逼近定理

  2. 神经网络:设计与架构

  3. 理解损失景观

  4. 梯度下降优化器

  5. 损失函数

  6. 训练

  7. 正则化

  8. 任务

  9. 模型可解释性

  10. 附录:Jeremy Howard 谈模型复杂性与正则化

0. Fast.ai & 转移学习

“如果可以,使用转移学习[来训练你的模型]总是好的。” — Jeremy Howard

Fast.ai 等同于迁移学习,并在短时间内取得出色成果。这个课程真的名副其实。迁移学习和实验主义是 Jeremy Howard 强调的两个关键理念,以便成为高效的机器学习从业者。

1. 通用逼近定理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源:Vincentiu SolomonUnsplash

通用逼近定理 说明你可以用一个隐藏层的前馈神经网络来逼近任何函数。由此可见,你也可以对任何更深层的神经网络实现相同类型的逼近。

我的意思是,哇!我刚刚才知道这个,现在才知道。这 深度学习的基础。如果你有堆叠的仿射函数(或矩阵乘法)和非线性函数,最终得到的结果可以逼近任何函数。这是追求不同仿射函数和非线性组合的原因。这也是架构越来越深的原因

2. 神经网络:设计与架构

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这一部分,我将重点介绍在课程中受到关注的架构,以及像丢弃法这样的最先进(SOTA)模型中纳入的一些设计。

  • ResNet-50 几乎是最先进的,因此你通常会希望在许多图像相关任务中使用它,比如图像分类和目标检测。这个架构在课程的 Jupyter 笔记本中使用得很频繁。

  • U-net 几乎是图像分割任务中的最先进技术。

  • 对于卷积神经网络(CNNs),前几层常见使用步幅=2 的卷积。

  • DenseNet 在构建块的最终操作中使用了拼接,而 ResNet 使用了加法操作。

  • 丢弃法

    我们随机丢弃 激活。直观理解:这样没有任何激活可以记住输入的任何部分。这有助于解决过拟合问题,其中模型的某一部分基本上是在学习识别特定图像,而不是特定特征或项目。还有 嵌入丢弃,但这一点只是略微提及。

  • 批量归一化(BatchNorm)

    BatchNorm 做了 2 件事:(1)规范化激活值,(2)为每个规范化的激活值引入缩放和平移参数。然而,结果表明(1)不如(2)重要。在论文 Batch Normalization 如何帮助优化? 中提到,“[BatchNorm] 重新参数化了底层优化问题,使其景观显著平滑。” 直观上讲:因为它现在不那么崎岖,我们可以使用更高的学习率,因此收敛更快(见图 3.1)。

3. 理解损失景观

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3.1:损失景观;左侧景观有很多凸起,右侧则是平滑的景观。来源:arxiv.org/abs/1712.09913

损失函数通常有崎岖和平坦区域(如果你将其可视化为二维或三维图)。看看图 3.2。如果你进入一个 崎岖 区域,该解决方案通常不会很好地泛化。这是因为你找到的解决方案在一个地方很好,但在其他地方不太好。但如果你在 平坦 区域找到了解决方案,你可能会有很好的泛化能力。这是因为你找到的解决方案不仅在一个点很好,而且在 周围 也很好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3.2:在二维图中可视化的损失景观。截取自 course.fast.ai。以上大部分内容引自 Jeremy Howard。这是一个简单而美丽的解释。

4. 梯度下降优化器

我学到的新知识是 RMSprop 优化器充当了“加速器”。直观理解:如果你的梯度在过去几步中很小,很明显你现在需要加快一点速度。

(有关梯度下降优化器的概述,我写了一篇题为 10 Gradient Descent Optimisation Algorithms 的文章。)

5. 损失函数

学习了 2 个新的损失函数:

  1. 像素均方误差 (Pixel MSE)。这可以用于语义分割,这是课程内容之一,但本文没有涵盖。

  2. 特征损失 ???。这可以用于图像恢复任务。见任务:图像生成。

6. 训练

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Victor Freitas 提供,自 Pexels

本节探讨了一些调整的组合:

  • 权重初始化

  • 超参数设置

  • 模型拟合/微调

  • 其他改进

迁移学习

模型权重可以是(i)随机初始化的,或者(ii)通过一种称为 转移学习 的过程从预训练模型中转移来的。转移学习利用了预训练的权重。预训练的权重 包含有用的信息

转移学习中的常见模型拟合方法如下:训练靠近输出的权重,并冻结其他层。

对于转移学习,使用 与预训练模型相同的‘统计数据’ 是很重要的,例如,用某种偏差校正图像的 RGB 值。

❤️ 1cycle 策略 ❤️

这是我在这门课程中学到的最重要的知识。我一直以来对学习率掉以轻心。找到一个好的学习率 非常重要,因为我们至少可以为梯度下降提供一个经过深思熟虑的学习率,而不是一个可能只是次优的直觉值。

Jeremy Howard 在他的代码中持续使用 lr_finder()fit_one_cycle(),这让我困惑,因为它虽然效果很好,但我不知道为什么它能有效。所以我阅读了 Leslie Smith 的 论文 和 Sylvain Gugger 的 博客文章(推荐阅读!),这就是 1cycle 的工作原理:

1. 执行 LR 范围测试:用从小到大的(线性)学习率训练模型,从一个小值(10e-8)增加到一个大值(1 或 10)。绘制损失与学习率的图表,如下所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6.1:损失与学习率的关系。来源: https://sgugger.github.io/how-do-you-find-a-good-learning-rate.html

2. 选择最小和最大学习率。选择最大学习率时,查看图表并选择一个足够高的学习率,以获得较低的损失值(既不要太高也不要太低)。在这里,你可以选择 10e-2。选择最小学习率时,可以选择约低十倍的值。在这里,它是 10e-3。有关如何选择这些值的更多信息。

3. 根据 周期性学习率 的周期数来拟合模型。一个周期是指你的训练过程通过从选择的最小学习率到选择的最大学习率,然后再返回到最小值的学习率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: https://sgugger.github.io/the-1cycle-policy.html

那么我们为什么这样做呢?整个想法是这样的。在损失地形中,我们希望跳过凸起(因为我们不想陷入某个沟壑)。因此,在开始时增加学习率有助于模型跳出沟壑,探索函数表面,并尝试找到损失较低且区域不崎岖的地方(因为如果地形崎岖,模型会再次被推出)。这使得我们可以更快地训练模型。我们还往往会得到更具泛化能力的解决方案。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6.2:来自 course.fast.ai 的截图

用于预训练模型的判别学习率

使用超低学习率训练早期层,使用较高学习率训练后期层。这个想法是除了微小的调整外,不要剧烈改变几乎完美的预训练权重,对接近输出层的层进行更激进的训练。判别学习率是在 ULMFiT 中引入的。

一个神奇的数字除数

在 1cycle 拟合中,要获取最小学习率,将最大值除以 2.6⁴。这个数字适用于 NLP 任务。有关更多信息,请参见 https://course.fast.ai/videos/?lesson=4 的 33:30。

用于超参数搜索的随机森林

提到可以使用随机森林来搜索超参数。

使用默认值

使用库或实现论文代码时,使用默认超参数值,“不要做英雄”。

针对预训练模型的模型微调

我注意到 Jeremy 的风格:在训练最后一层之后,解冻所有层并训练所有权重。然而,这一步是实验性的,因为它可能会或可能不会提高准确性。如果没有提高,我希望你保存了最后训练的权重 ???。

渐进式调整图像大小

这最适用于图像相关任务。首先使用较小版本的图像进行训练。然后,使用较大版本的图像进行训练。为此,使用迁移学习将训练好的权重迁移到具有相同架构但接受不同输入大小的模型中。真是天才。

混合精度训练

简化版的解释是:使用单精度(float32)数据类型进行反向传播,但使用半精度(float16)进行前向传递。

7. 正则化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 Rosemary Ketchum 提供,来源于 Pexels

使用神奇的数字 0.1作为权重衰减。如果使用过多的权重衰减,你的模型训练得不够好(欠拟合)。如果使用过少,你可能会过拟合,但没关系,因为你可以提前停止训练。

8. 任务

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传请注意,并非所有课程中涉及的任务都在此处提及。

  • 多标签分类

  • 语言建模

  • 表格数据

  • 协同过滤

  • 图像生成

a) 多标签分类

我一直在想如何进行[图像]分类任务,其标签数量可能会变化,即多标签分类(不要与多类分类/多项式分类混淆,其相关概念是二分类)。

没有详细说明多标签分类的损失函数如何工作。但经过搜索,我发现标签应该是多热编码的向量。这意味着每个元素必须在最终模型输出中应用 sigmoid 函数。损失函数,即输出和真实值的函数,是使用二元交叉熵来计算的,以独立地惩罚每个元素。

b) 语言建模

对于这个语言建模任务,我喜欢“语言模型”如何被定义(重新表述):

语言模型是一个学习预测句子下一个词的模型。为了做到这一点,你需要对英语和世界知识有相当多的了解。

这意味着你需要用大量的数据来训练模型。这部分课程介绍了ULMFiT,这是一个可以基于预训练(换句话说,就是迁移学习)进行重用的模型。

c) 表格数据

这是我第一次遇到使用深度学习处理具有分类变量的表格数据!我之前不知道可以这样做?无论如何,我们可以做的是我们可以从分类变量中创建嵌入。如果我没有上过这门课程,我可能不会想到这一点。稍微搜索了一下,我找到了 Rachel Thomas 写的关于表格数据深度学习入门的帖子,介绍了这种嵌入的使用。

那么,问题是如何将(a)连续变量的向量和(b)来自分类变量的嵌入结合起来?课程中没有提到这一点,但这个 StackOverflow 的帖子强调了三种可能的方法:

  1. 2 个模型——一个用于(a),一个用于(b)。将它们进行集成。

  2. 1 个模型,1 个输入。这个输入是(a)和(b)的连接。

  3. 1 个模型,2 个输入。这两个输入分别是(a)和(b)。你将这两个输入在模型内部连接起来。

d) 协同过滤

协同过滤是当你需要预测一个用户对某个项目的喜好程度时(在这个例子中,我们以电影评分为例)。课程中介绍了使用嵌入来解决这个问题。这是我第一次遇到使用深度学习的协同过滤(就像我之前对协同过滤的经验很丰富一样)!

目标是为每个用户和项目创建大小为n的嵌入。为此,我们随机初始化每个嵌入向量。然后,对于每个用户对电影的评分,我们将其与各自嵌入的点积进行比较,例如,使用均方误差(MSE)。接着我们进行梯度下降优化。

e) 图像生成

这是我学到的一些东西:

  • 劣化’用于生成数据,按我们希望的方式。这个术语我特别喜欢。

  • 生成对抗网络(GANs)讨厌 动量,所以将其设置为 0。

  • 仅仅通过观察损失很难了解模型的表现。必须亲自查看生成的图像(尽管在训练结束时,判别器和生成器的损失大致应保持不变)。

  • 提高生成图像质量的一种方法是在我们的损失函数中包含感知损失(也称为 fast.ai 中的特征损失)。特征损失通过取网络中间某处张量的值来计算。

9. 模型可解释性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由Maria Teneva拍摄,来自Unsplash

在其中一节课中,Jeremy Howard 展示了一个激活 热图,用于图像分类任务。这个热图显示了被“激活”的像素。这种可视化将帮助我们理解哪些特征或图像的部分导致了模型的输出???。

10. 附录:Jeremy Howard 谈模型复杂度与正则化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由NEW DATA SERVICES拍摄,来自Unsplash

我转录了这部分课程(第 5 课),因为直觉实在太引人入胜了❤️。这里 Jeremy 首先总结了那些认为增加模型复杂度不是解决办法的人的观点,然后改变了他们的看法,接着带他们了解L2 正则化

哦,我以前学的是统计学,所以他在这方面让我措手不及???。

所以,如果你们中的任何人不幸地被统计学、心理学、计量经济学或类似课程的背景洗脑了,你们需要重新认识你们需要更少参数的想法,因为你们实际上需要意识到的是,你们会适应这种谎言,即你们需要更少的参数,因为这是一个方便的虚构,真实的情况是你们不希望你的函数过于复杂。而拥有更少的参数是使其不那么复杂的一种方式。

但是如果你有一千个参数,其中 999 个参数是1e-9呢?或者如果有 0 呢?如果是 0,那它们实际上并不存在。或者如果它们是1e-9,那它们几乎也不存在。

那么如果很多参数都非常小,我为什么不能有很多参数呢?答案是你可以。实际上,用[参数数量]来限制复杂性的做法是极其有限的。这是一个有很多问题的虚构方法,对吧?因此,如果在你脑海中复杂性是通过参数数量来衡量的,那你是完全错误的。要正确地衡量它。

那么我们为什么在乎呢?我为什么要使用更多的参数?

因为更多的参数意味着更多的非线性、更复杂的交互、更曲折的部分,对吧?而现实生活(损失景观)充满了曲折的部分。现实生活并不像这个[欠拟合的直线]。但我们不希望它们比必要的更加曲折,或更多地交互。

所以我们使用大量参数,然后惩罚复杂性。

好的,一种惩罚复杂性的方法是,正如我之前建议的那样:让我们求出参数值的总和。不过这并不完全有效,因为有些参数是正的,有些是负的,对吧?那我们可以求出参数平方的总和。

这实际上是一个非常好的主意。

让我们实际创建一个模型,并在损失函数中添加参数平方的总和。不过这里有一个问题。也许那个数字太大,以至于最佳的损失是将所有参数设置为 0。那样就不好了。因此,我们实际上希望避免这种情况发生。因此,不仅仅是将参数平方的总和添加到模型中,而是将其乘以我们选择的某个数字。在 fastai 中,我们选择的那个数字叫做wd

你可能也想看看我的文章《L1 和 L2 正则化的直观解释》,我在这里解释了这两种正则化技术。

结论

我真的很喜欢这门课程。以下是一些原因:

  • 他们提供了直观且易于理解的解释。

  • 他们用很棒的资源来补充他们的课程。

  • 他们鼓励你将深度学习应用到你各自的领域中去构建事物。

  • 他们似乎总是跟上有趣且新颖的出版物,并在适当的地方将它们融入 fastai 库中。

  • 他们还进行大量关于深度学习的研究(请参阅:ULMFiT)。

  • 他们围绕 fastai 库建立了一个社区,因此你将容易获得支持。

  • 他们的技巧和窍门对 Kagglers 和以准确性为驱动的建模非常有用。

期待课程的下一部分!

简历:Raimi Bin Karim 是 AI Singapore 的 AI 工程师

原文。经许可转载。

相关:

  • fast.ai 深度学习第一部分完整课程笔记

  • 使用 fast.ai 进行快速特征工程

  • 深度学习 3 门热门课程概述


我们的前三名课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速入门网络安全职业

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你的组织 IT


更多相关内容

如何像数据科学家一样思考以成为数据科学家

原文:www.kdnuggets.com/2017/03/think-like-data-scientist-become-one.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传评论

我们都读过头条新闻——数据科学家是最性感的工作,数量不足,薪资非常高。这个角色被销售得非常成功,以至于数据科学课程和大学项目的数量疯狂增长。在我之前的博客文章之后,我收到了很多人询问如何成为数据科学家——哪些课程最好,应该采取哪些步骤,最快的获得数据科学工作的方式是什么?

我尝试深入思考这个问题,并回顾了我的个人经历——我怎么来到这里?我如何成为一名数据科学家? 是数据科学家吗?我的经历非常复杂——我起初是一个证券分析师,在一家投资公司主要使用 Excel。随后,我逐渐转向银行业的商业智能和多个咨询项目,最终做到了真正的“数据科学”——建立预测模型,处理大数据,处理大量数据并编写代码进行数据分析和机器学习——这在早期被称为“数据挖掘”。

当数据科学的热潮开始时,我试图理解它与我迄今为止所做的有什么不同。我是否应该学习新技能,成为数据科学家,而不是一个在“分析”领域工作的人?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

像每个对它着迷的人一样,我开始参加多个课程,阅读数据书籍,进行数据科学专业化(但没有完成……),大量编写代码——我想成为那张(不)著名的数据科学维恩图的中间交集中的那一个。我学到的现实是,这些“数据科学”独角兽(维恩图中传奇般的人物)很少存在,即使存在——他们通常是对这些领域都有了解的通才,但却是“样样通,样样松”。

尽管我现在认为自己是一名数据科学家——我在亚马逊领导一个极其有才华的数据科学团队,建立机器学习模型,处理“大数据”——我仍然觉得这个行业周围的混乱太多,清晰度却少得多,尤其是对于那些考虑职业转换的人。不要误解我的意思——数据科学有很多非常复杂的分支——如人工智能、机器人技术、计算机视觉、语音识别等——这些领域需要非常深厚的技术和数学知识,甚至可能需要一个……或两个博士学位。但如果你对进入一个几年前被称为商业/数据分析师的数据科学角色感兴趣——这里有四条规则帮助我进入并继续在数据科学领域生存。

规则 1 – 确定你的优先级和动机。

对你现在拥有的技能和你希望达到的目标要非常现实——数据科学中有很多不同类型的角色,了解并评估你当前的知识基础是很重要的。比如说,你现在在 HR 部门工作,想要换职业——学习 HR 分析!如果你是律师——了解法律行业中的数据应用。事实是,对洞察力的渴望如此巨大,以至于所有行业和业务职能都开始使用它。如果你已经有了工作,试着理解哪些方面可以通过数据优化或解决,并学习如何自己做到这一点。这将是一个渐进而漫长的转变,但你仍然会有工作,并通过实际操作进行学习。如果你是刚毕业的学生或在校生——你有一个绝佳的机会来发现自己对什么充满热情——也许是电影,也许是音乐,或者是汽车?你无法想象这些行业中雇用了多少数据科学家——他们都对自己所从事的领域充满热情。

规则 2 – 很好地掌握基础知识。

尽管每个数据科学领域的具体内容非常不同,但基础知识是相同的。你应该在三个领域建立扎实的基础——基本的数据分析、入门统计学和编码技能。

数据分析。 你应该理解并大量练习基本的数据分析技术——什么是表格,如何连接两个表格,分析以这种方式组织的数据的主要技术是什么,如何构建数据集的汇总视图并从中得出初步结论,什么是探索性数据分析,哪些可视化方法可以帮助你理解和学习数据。这是非常基础的,但相信我——掌握了这些,你将具备一项在工作中绝对必需的基本技能。

统计学。 同样,要非常好地掌握入门统计学——什么是均值、 медиан、何时使用其中一种而不是另一种,什么是标准差以及在什么情况下使用它没有意义,为什么平均值“欺骗”但仍然是最常用的汇总值等等。当我说“入门”时,我真的指的是“入门”。除非你是一名数学家,并计划成为一名经济计量学家,应用高级统计和计量经济学模型来解释复杂现象——否则,学习高级统计学。如果你没有数学博士学位,就慢慢来,耐心一点,扎实掌握基础统计学和概率论。

编码。 当然 – 学习如何编码。这是最常被提及的陈词滥调建议,但实际上它是一个有效的建议。你应该从学习如何使用 SQL 查询数据库开始 – 不管你信不信,大多数数据科学团队花费的时间都用于数据提取和准备,其中大量工作是用 SQL 完成的。所以打好基础– 构建你自己的小型数据库,编写一些“select * from my_table”的代码行,掌握 SQL 的基础知识。你还应该学习一种(开始时只学习一种)数据分析语言 – 无论是 R 还是 Python。两者都很出色,掌握它们确实会有所不同,因为许多(虽然不是全部)职位都要求掌握它们。首先学习你选择的语言的基础(快速提示 – 从学习 R 的 dplyrggplot2 包,或 Python 的 pandasSeaborn 库开始),并学习如何用它进行数据分析。你不需要成为程序员来在这个领域取得成功,关键在于知道如何使用语言进行数据分析 – 你不必成为世界级的黑客才能获得数据科学工作。

规则 3 – 数据科学是解决问题的过程 – 找到并解决一个问题。

多年来我学到的一件事是,数据科学家的一个基本要求是总是提出问题和寻找问题。现在我并不建议你全天候这样做,因为你肯定会发疯,但要做好准备,成为问题解决者并不断寻找问题。你会惊讶于外面有多少可用的数据 – 也许你想分析你的支出模式,识别你的电子邮件的情感模式,或者仅仅是构建漂亮的图表来跟踪你所在城市的财务状况。数据科学家负责质疑一切 – 这个活动是否有效,有没有令人担忧的趋势,也许一些产品表现不佳应该被下架,折扣是否合理或者是否过大 – 这些问题成为假设,然后由数据科学家验证或驳回。它们是原材料,也是工作成功的关键,因为你解决的问题越多,你的工作表现就会越好。

规则 4 – 从“做”开始,而不是计划你将来“何时”做的事情。 这适用于任何学习行为,但在数据科学中尤其如此。确保你从学习的第一天就开始“做”。仅仅通过阅读“关于”数据科学的内容、了解它“应该”如何进行、从书中复制粘贴数据分析代码并在非常简单的数据集上运行,实际上很容易将实际学习拖延到以后,这些简单的数据集在现实世界中是不会遇到的。

在你学习的每一件事上,一定要确保将其应用到你热爱的领域。这就是魔法发生的地方 – 写下你的第一行代码并看到它失败,陷入困境而不知道接下来该做什么,寻找答案,发现许多不同的解决方案却都无效,努力构建自己的解决方案,最终跨越一个里程碑 – “啊哈!” 时刻。这就是实际学习发生的地方。通过实践学习是学习数据科学的唯一途径 – 你不会仅通过阅读来学会骑自行车,对吧?同样的道理,无论你学到了什么,确保你立即应用它,并用真实的数据解决实际问题。

“如果你花太多时间思考一件事,你永远无法完成它。” – 这句来自著名武术家布鲁斯·李的名言抓住了这篇文章的精髓。你必须应用你所学到的,并确保你犯自己的错误。

感谢阅读!订阅我的博客 www.cyborgus.com 并获取最新更新:

在 Facebook 上关注我的博客更新 – www.facebook.com/cyborguscom/

在 LinkedIn 上查找我 – www.linkedin.com/in/karolisurbonas/

个人简介: Karolis Urbonas,是亚马逊数据科学部负责人,是一位充满活力的数据高管,拥有建立高绩效数据科学团队和交付战略分析项目的丰富经验。他的博客地址是 cyborgus.com

相关:

  • 数据科学家的思维 – 第一部分

  • 如何成为数据科学家 – 第一部分

  • 追求卓越的数据科学学习,而不仅仅是为了考试


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业道路。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你组织的 IT 需求


更多相关内容

如何像数据科学家一样思考

原文:www.kdnuggets.com/2020/05/think-like-data-scientist-data-analyst.html

评论

Jo Stichbury,自由技术写作人

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据科学是一个新兴且不断成熟的领域,各种工作职能不断出现,从数据工程和数据分析到机器学习和深度学习。数据科学家必须结合科学、创造性和调查思维,从各种数据集中提取意义,并解决客户面临的根本挑战。

各个领域产生的数据量不断增加——从零售、交通和金融到医疗保健和医学研究。

可用计算能力的增加和人工智能的最新进展将数据科学家——那些将原始数据分析并使其有用的人员——推到了聚光灯下。

自 2016 年以来,数据科学在北美的 50 种最佳职业中排名首位,依据如收入潜力、报告的工作满意度以及 Glassdoor 上的职位空缺数量等标准。

像数据科学家一样思考

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来自 svgsilh.comCC0 1.0

那么,成为一个数据科学家需要什么呢?成为数据科学家

关于成功所需技能的一些提示,我采访了 Ben Chu,他是 Refinitiv Labs的高级数据科学家。

Chu 在人工智能领域有背景,特别是在语言学、语义学和图形学方面,并在新加坡的 Refinitiv Labs 工作了两年。

保持好奇

Chu 在我们采访开始时提到,数据科学家应该像调查员一样思考。

你需要保持好奇和兴奋,提出“为什么?”。“这有点像当侦探,连接点滴,发现新的线索。”

在金融领域,数据科学家从各种数据集中提取意义,以指导客户并帮助他们做出关键决策。

数据科学家必须聚焦于客户希望解决的挑战,并从他们处理的数据中寻找线索。

从与 Chu 的交谈中,我了解到能够调整重点并考虑调查背景是多么重要。

如果完美的分析不能解决根本问题,那就没有用处。有时你需要回过头来,尝试新的方法,并重新审视你要回答的问题。其核心是 好奇心。你需要热爱问题!

保持科学

数据科学家使用各种工具来管理他们的工作流程、数据、注释和代码。

“我必须非常勤奋。我需要测量和跟踪我的进展,以便在需要时进行回顾并尝试新的方向,重用先前的工作,并比较结果。”

“保持科学性很重要,要进行观察、实验并记录好进展,以便能够重复你的发现。我需要组织我的观察记录,因此我使用 Notion 作为我的主要工具,将所有的笔记、论文和可视化内容集中在一个地方。”

Chu 强调了记录不仅要涵盖他当前的调查,还要包括所有先前的发现。

“这就像是数据科学的日记。我保持良好的参考点,并在遇到类似情境时回顾它们,以指导我的下一步行动。”

发挥创造力

数据科学不仅仅是采用科学的方法。职位名称可能会产生误导;你不一定需要具备科学背景,但你需要能够进行创造性思考。通常,另类思维是解决挑战的关键。

“我必须在解决问题时切换科学思维,并运用创造性思维引导我探索新的和不同的路径探索新方向。”

“逻辑性和科学性思维对帮助我得出结论至关重要,但发挥创造性思维同样重要:我使用成功和失败的例子作为线索来观察新的模式。这一切都与‘编码智能’有关。”

学会编码

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来源于svgsilh.com

你需要扎实的编码技能,以便能够预处理不同的数据源,使用各种数据处理技术来解决噪声或不完整的数据问题。

你还需要能够创建机器学习管道,这要求你知道如何构建模型,并使用工具和框架来评估和分析其性能。

Chu 使用 Python,就像大多数数据科学家一样,因为 Python 提供了大量优秀的包来处理和建模数据。

实际上,Glassdoor 在 2017 年上半年对其网站上发布的 10,000 个数据科学家职位进行了抽样调查,发现三个特别的技能——Python、R 和 SQL——构成了数据科学大多数职位的基础。

Ben Chu 的团队依赖开源机器学习包,如 Tensorflow、Pytorch 和 BERT。

“我们主要使用 Confluence 作为文档工具;使用 MLFlow、Amazon Sagemaker、Scikit-Learn、Tensorflow、PyTorch 和 BERT 进行机器学习;使用 Apache Spark 在大型数据集上构建高速数据管道;使用 Athena 作为我们的数据库来存储处理后的数据。”

“我们还使用 Superset 连接数据,更方便地构建仪表板以输出图表,这使得操作更直观。”

不要担心‘冒名顶替综合症’。

朱目前是 Refinitiv Labs 的高级数据科学家,但他小时候想成为一名音乐家,对语言充满兴趣。“在自然语言处理领域,我需要对语言学有深入了解,特别是语义学和语言的细微差别。”

他解释说,数据科学团队需要各种技能——他和他的同事们从不同的背景中发展出了重叠的技能。

“你需要的技能将取决于你所工作的领域。例如,我需要对金融有良好的理解。

“例如,通过建立异常检测方法,数据分析正被用于减少欺诈,以检测交易数据中的欺诈‘行为’作为不规则模式。

“像我这样的数据科学家需要熟练掌握如何处理各种孤立的金融数据。了解如何组合这些数据至关重要,因为没有这种理解,我无法构建成功的模型。”

进入数据科学领域并不一定需要成为计算机科学家或数学家。没有人能在所有领域都有所有的专业知识。你可以来自法律、经济或科学背景。关键在于你的思维方式。

如果你能灵活和系统地处理问题,你将能够在使用工具、框架和数据集的过程中逐渐熟悉这些具体细节。

如何开始

对于那些希望提升数据科学技能的人,朱提供了一些实用的建议,尽管 COVID-19 带来了干扰,但这些建议你仍然可以轻松采纳。

你可以寻找研究社区,参加网络研讨会,并在线找到培训课程。一旦面对面的网络交流再次成为可能,朱建议你积极参与 数据科学社区

“参加 Meetups 和黑客马拉松,这将帮助你建立强大的网络,讨论你的想法,激发你的研究灵感,并解答你的问题。”

此外,请记住,数据科学领域是新兴的,仍在发展中。

各种不同的职位名称正在出现,例如数据科学家、数据工程师和数据分析师,还有机器学习和深度学习工程师。你 可能会发现某些角色更适合你的兴趣和技能。

发掘你的好奇心和创造力,提升你的 Python 技能,进入数据科学领域吧!

本文最初发表于 Refinitiv Perspectives 于 2020 年 4 月初。

个人简介:Jo Stichbury 是一名自由职业技术作家。

原文。经许可转载。

相关内容:

  • 用 NLP 发现争议

  • 数据科学家的 4 种现实职业选择

  • 如何在理想公司获得数据科学家职位

相关主题

第三波数据科学家

原文:www.kdnuggets.com/2019/05/third-wave-data-scientist.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 评论

Dominik Haitz 提供,IONOS

介绍

德鲁·康威的数据科学技能集可视化 是一个经常被引用的经典。不同的观点和角色的多样性催生了numerous variations


我们的三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业道路。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你的组织的 IT


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

各种数据科学维恩图。图片来源于谷歌图片。来源:sinews.siam.org/Details-Page/a-timely-focus-on-data-science

关于数据科学技能集似乎没有共识。此外,随着领域的发展,缺陷变得明显,新挑战不断出现。我们如何描述这种演变?

第一波数据科学家发生在数据尚未大规模和数据科学尚未成为实际存在之前(2010 年之前):统计学家和分析师,他们一直存在,做着很多现代数据科学家在做的事情,但伴随的炒作较少。

第二波:大规模数据收集创造了对聪明人才的需求,他们能够将大数据转化为大钱。公司仍在摸索应聘人员的类型,往往转向科学专业毕业生。虽然第二波数据科学家做了很多正确的事,但他们精心制作的模型通常只是概念验证,并未带来实际的改变。

现在,在 2010 年代末,随着对深度学习和人工智能的炒作,进入了第三波数据科学家:进行实验和创新,效率地寻找商业价值,并弥合部署差距以创建出色的数据产品。在这里需要哪些技能?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第三波数据科学家的技能组合。

1. 商业思维

商业思维是数据科学技能组合的核心,因为它设定目标并运用其他技能来实现这些目标。Patrick McKenzie 在这篇博客文章中指出:

工程师被聘用是为了创造商业价值,而不是编程:企业总是因为非理性和政治原因做事,但主要还是集中在增加收入或降低成本上。

同样,数据科学家被聘用是为了创造商业价值,而不仅仅是构建模型。问问自己:我的工作成果将如何影响公司决策?我需要做什么来最大化这一效果?凭借这种企业家精神,第三波数据科学家不仅提供可操作的见解,还寻求实现真正的变化

关注组织中的资金流向——拥有最大成本或收入的部门可能会提供最大的财务杠杆。然而,商业价值是一个模糊的概念:它超越了当前财政年度的成本和收入。实验创建创新的数据文化将提高公司的长期竞争力。

优先处理你的工作和知道何时停止效率的关键。想想递减收益:花费数周时间来调整模型以提高 0.2%的精度是否值得?通常,足够好才是真正的完美**。

领域专长,这是 Conway 技能组合的三分之一,绝对不能被忽视——然而,你几乎在所有地方都必须在工作中学习。这包括对你所在行业以及公司流程、命名方案和特殊情况的了解。这些知识不仅为你的工作设定了框架条件,而且通常对于理解和解释你的数据是不可或缺的。

保持简单,傻瓜

https://twitter.com/matvelloso/status/1001899539484192768

寻找容易实现的目标和快速胜利。对现有数据仓库进行一个简单的 SQL 查询可能会发现产品经理或高层管理人员未知的宝贵见解。**不要陷入“流行词驱动的数据科学”**的陷阱,专注于最先进的深度学习,而一个简单的回归模型就足够了——而且构建、实施和维护的工作量要少得多。了解复杂的事物,但不要使事情过于复杂。

2. 软件工程工艺

对(第二波)数据科学家只需“黑客技能”而不是适当的软件工程的观点已被多次批评。缺乏可读性、模块化或版本控制阻碍了协作、可重复性和生产化。

相反,向专业的软件工程师学习工艺。测试你的代码并使用版本控制。遵循既定的编码风格(例如 PEP8)并学习如何使用 IDE(例如 PyCharm)。尝试对编程进行配对。模块化和文档化你的代码,使用有意义的变量名称并进行重构,重构,重构。

弥合敏捷原型数据产品的部署差距:学习使用日志记录和监控工具。知道如何构建 REST API(例如使用 Flask)以将结果提供给他人。学习如何将工作打包到 Docker 容器中,或将其部署到像 Heroku 这样的平台上。不要让你的模型在笔记本电脑上腐烂,而是将其包装成适合你公司 IT 环境的数据驱动服务。

3. 统计学和算法工具箱

数据科学家必须彻底理解统计学基础概念和特别是机器学习(STEM 大学教育可能是获得这种基础的最佳途径)。关于重要内容有很多资源,所以我不会在这里进一步探讨。你常常需要向客户解释算法或概念,如统计不确定性,或者因为混淆相关性和因果关系而标记出问题。

4. 软技能

由于人际交往技能对生产力的重要性与技术技能相当,第三波数据科学家在这些领域上会有意识地努力提高。

与他人合作良好

咨询你的同事——大多数人乐于帮助或提供建议。平等对待他人:你可能有一个很好的学位和对复杂算法的理解,但其他人拥有你没有的经验(这听起来像基本的社交建议,但谁没遇到过傲慢的 IT 专业人士呢?)。

理解你的客户

问对后续问题。如果客户或你的老板希望你计算一些关键数据或创建一些图表,问“为什么?目的是什么?你想达成什么?根据结果你会采取什么行动?”以更好地理解问题的核心。然后一起找出如何达到目标——是否有比提出的更好的方法来实现目标

处理公司政治

建立网络,不是因为你期望他人在你的职业生涯中帮助你,而是因为你是一个容易接近的人。与有类似工作主题的人建立联系。如果公司内没有这样的平台,自己创建。识别关键利益相关者,并找出如何帮助他们解决问题。及早邀请他人,并使他们成为变革过程的一部分。记住:公司不是一个理性的实体,而是由经常不理性的个体组成。

传达你的结果

提升你的可视化和演示技巧。从客户的角度进行沟通:我如何才能准确回答他们的问题?学会在不同层次上沟通并总结你的工作细节。人们很容易被华丽的多维图表所吸引,但通常简单的柱状图更能有效传达信息展示你的成果:当人们看到你正在做的工作并且发现你做得很好,他们会信任你。

自我评估

沟通你的目标和问题,并积极寻求建议。在数据科学社区内外寻找榜样,并向他们学习。

原文。经许可转载。

个人简介多米尼克·海茨是数据科学家@ionos_de,同时也是博客作者,towardsdatascience.com/@d_haitz

资源:

相关:

更多相关内容

本周 AI,7 月 31 日:AI 巨头承诺负责任的创新 • 白鲸入侵

原文:www.kdnuggets.com/2023/07/this-week-ai-2023-07-31.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由编辑使用 BlueWillow 创建的图像

欢迎来到 KDnuggets 首期的“本周 AI”专刊。此精选的每周更新旨在让您了解人工智能领域迅速发展的最重要进展。从塑造我们对 AI 在社会角色理解的突破性头条新闻,到引发深思的文章、深刻的学习资源,以及推动知识边界的重点研究,这篇文章提供了 AI 当前格局的全面概述。虽然尚未深入细节,但请期待探索反映 AI 广泛和动态本质的众多话题。请记住,这只是许多未来每周更新中的第一个,旨在让您在这一不断发展的领域中保持更新和知情。敬请关注,祝您阅读愉快!


我们的前三个课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速入门网络安全职业。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升您的数据分析能力

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持您的组织的 IT 工作


头条新闻

“头条新闻”部分讨论了过去一周在人工智能领域的最新新闻和发展。信息涵盖从政府的 AI 政策到技术进步以及 AI 领域的企业创新。

AI 巨头在拜登-哈里斯政府下承诺负责任创新

拜登-哈里斯政府已从七家领先的 AI 公司——亚马逊、Anthropic、谷歌、Inflection、Meta、微软和 OpenAI——那里获得了自愿承诺,以确保 AI 技术的安全、保障和透明发展。这些承诺强调了未来 AI 的三个基本原则:安全、保障和信任。这些公司同意在发布前对其 AI 系统进行内部和外部安全测试,分享关于管理 AI 风险的信息,并投资于网络安全。他们还承诺开发技术机制,确保用户知道何时内容是 AI 生成的,并公开报告其 AI 系统的能力、局限性以及适当和不适当使用的领域。这一举措是拜登-哈里斯政府致力于确保 AI 的安全和负责任发展,以及保护美国人免受伤害和歧视的更广泛承诺的一部分。

Stability AI 揭示 Stable Beluga:开放访问语言模型的新强者

Stability AI 和其 CarperAI 实验室宣布推出 Stable Beluga 1 和 Stable Beluga 2 两个强大的开放访问大语言模型(LLMs)。这两个模型在各种基准测试中展现了卓越的推理能力,分别基于原始的 LLaMA 65B 和 LLaMA 2 70B 基础模型。两个模型均通过使用标准 Alpaca 格式的有监督微调(SFT)方法,在新的合成生成数据集上进行了微调。Stable Beluga 模型的训练灵感来源于微软在其论文“Orca: Progressive Learning from Complex Explanation Traces of GPT-4”中使用的方法。尽管训练样本量仅为原始 Orca 论文的十分之一,但 Stable Beluga 模型在各种基准测试中表现出色。截至 2023 年 7 月 27 日,Stable Beluga 2 是排行榜上的顶级模型,而 Stable Beluga 1 排名第四。

Spotify CEO 暗示未来 AI 驱动的个性化和广告功能

在 Spotify 第二季度的财报电话会议上,首席执行官 Daniel Ek 暗示了可能会为流媒体服务引入更多 AI 驱动的功能。Ek 认为 AI 可以用来创建更个性化的体验,总结播客内容和生成广告。他强调了最近推出的 DJ 功能的成功,该功能提供了精选音乐以及关于曲目和艺术家的 AI 驱动评论。Ek 还提到可能会使用生成性 AI 来总结播客内容,使用户更容易发现新内容。此外,Ek 讨论了 AI 生成音频广告的可能性,这可能显著降低广告商开发新广告格式的成本。这些评论正值 Spotify 寻求为 AI 驱动的“文本到语音合成”系统申请专利,该系统可以将文本转换为具有情感和意图的人声音频。

文章

“文章”部分展示了一系列发人深省的人工智能相关文章。每篇文章深入探讨了特定话题,为读者提供了关于 AI 各个方面的见解,包括新技术、革命性方法和开创性工具。

??? ChatGPT 代码解释器:几分钟内完成数据科学工作

这篇 KDnuggets 文章介绍了 ChatGPT 的代码解释器插件,这是一种可以分析数据、编写 Python 代码和构建机器学习模型的工具。作者 Natassha Selvaraj 演示了如何使用该插件来自动化各种数据科学工作流程,包括数据总结、探索性数据分析、数据预处理和构建机器学习模型。代码解释器还可以用于解释、调试和优化代码。Natassha 强调,虽然这个工具功能强大且高效,但它应该作为数据科学任务的基础使用,因为它缺乏领域特定的知识,不能处理存储在 SQL 数据库中的大型数据集。Natassha 建议初级数据科学家和有志于成为数据科学家的人应学习如何利用像代码解释器这样的工具来提高工作效率。

??? 教材就是你所需:一种革命性的 AI 培训方法

这篇 KDnuggets 文章讨论了微软研究人员提出的一种新型 AI 训练方法,该方法涉及使用合成教材而非大量数据集。研究人员将一个名为 Phi-1 的模型完全在自制教材上进行训练,发现它在 Python 编程任务中的表现非常出色,尽管它的规模明显小于 GPT-3 等模型。这表明,训练数据的质量可能与模型的规模同样重要。Phi-1 模型在通过合成练习和解决方案进行微调后,性能也有所提升,表明有针对性的微调可以提高模型的能力超越其专门训练的任务。这表明,这种基于教材的方法可能会通过将重点从创建更大模型转向策划更好的训练数据,从而彻底改变 AI 训练。

最新的提示工程技术巧妙地将不完美的提示转化为卓越的生成式 AI 互动

这篇文章讨论了一种新型的提示工程技术,鼓励使用不完美的提示。作者认为,追求完美的提示可能适得其反,往往更实际的做法是追求“足够好”的提示。生成式 AI 应用程序使用概率和统计方法解析提示并生成响应。因此,即使使用相同的提示多次,AI 也可能每次生成不同的响应。作者建议,与其努力寻求完美的提示,不如利用不完美的提示并将它们汇总以创建有效的提示。文章引用了一项名为“随便问我什么:一种简单的提示语言模型策略”的研究,该研究提出了一种通过汇总多个有效但不完美的提示的预测来将不完美提示转化为强健提示的方法。

学习资源

“学习资源”部分列出了对那些渴望扩展 AI 知识的人员有用的教育内容。这些资源包括从全面的指南到专业课程,适用于 AI 领域的初学者和经验丰富的专业人士。

Cohere 的 LLM 大学:通往大型语言模型世界的门户

Cohere 的 LLM 大学是一个为对自然语言处理(NLP)和大型语言模型(LLMs)感兴趣的开发者提供的综合学习资源。课程旨在提供坚实的 NLP 和 LLMs 基础,并在此基础上构建实际应用。课程分为四个主要模块:“大型语言模型是什么?”,“使用 Cohere 端点进行文本表示”,“使用 Cohere 端点生成文本”和“部署”。无论你是新的机器学习工程师还是希望扩展技能的经验丰富的开发者,Cohere 的 LLM 大学都提供了一个全面的 NLP 和 LLMs 世界指南。

??? 来自 Google 的免费生成式 AI 学习路径

Google Cloud 发布了生成式 AI 学习路径,这是一个包含从生成式 AI 基础知识到更高级工具(如生成式 AI 工作室)的免费课程合集。学习路径包括七门课程:“生成式 AI 概述”、“大型语言模型简介”、“图像生成简介”、“注意力机制”、“Transformer 模型和 BERT 模型”、“创建图像字幕模型”和“生成式 AI 工作室简介”。这些课程涵盖了包括大型语言模型、图像生成、注意力机制、Transformer 模型、BERT 模型和图像字幕模型在内的多个主题。

研究聚焦

“研究聚焦”部分突出了人工智能领域的重要研究。该部分包括突破性的研究、探索新理论以及讨论人工智能领域的潜在影响和未来方向。

??? 大型语言模型在数据科学教育演变中的作用

题为“大型语言模型在数据科学教育演变中的作用”的研究论文讨论了大型语言模型(LLMs)对数据科学家角色和职责的变革性影响。作者认为,大型语言模型的崛起正在将数据科学家的重点从动手编码转移到管理和评估由自动化人工智能系统执行的分析。这种转变需要数据科学教育的重大演变,强调在学生中培养多样化的技能,包括由 LLMs 启发的创造力、批判性思维、受 AI 指导的编程以及跨学科知识。

作者们还提出,大型语言模型(LLMs)在课堂上可以作为互动教学和学习工具发挥重要作用。它们可以促进个性化教育,丰富学习体验。然而,将 LLMs 整合到教育中需要谨慎考虑,以平衡 LLMs 的好处,同时促进人类专业知识和创新。论文建议,数据科学教育的未来很可能涉及人类学习者与 AI 模型之间的共生关系,其中双方相互学习并提升各自的能力。

更多相关内容

本周 AI 动态,8 月 7 日:生成性 AI 进入 Jupyter 和 Stack Overflow • ChatGPT 更新

原文:www.kdnuggets.com/2023/mm/this-week-ai-2023-08-07.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由编辑使用 Midjourney 创建

欢迎来到本周的“本周 AI 动态”版块,由 KDnuggets 提供。这个精心策划的每周帖子旨在让你了解人工智能快速发展的世界中的最引人注目的进展。从塑造我们对 AI 在社会中角色的突破性头条新闻,到发人深省的文章、深刻的学习资源和推动我们知识边界的研究亮点,这个帖子提供了对 AI 当前格局的全面概述。此每周更新旨在让你在这一不断发展的领域中保持更新和知情。


我们的前三名课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业的捷径。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析能力

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你所在组织的 IT 工作


标题

“标题”部分讨论了过去一周在人工智能领域的主要新闻和进展。信息涵盖了从政府 AI 政策到技术进步和企业 AI 创新的各个方面。

??? Jupyter 中的生成性 AI

开源项目 Jupyter 团队发布了 Jupyter AI,这是一种新扩展,将生成性 AI 功能直接引入 Jupyter 笔记本和 JupyterLab IDE。Jupyter AI 允许用户通过聊天互动和魔法命令利用大型语言模型来解释代码、生成新代码和内容、回答有关本地文件的问题等。它在设计时考虑了负责任的 AI,允许对模型选择和 AI 生成输出的跟踪进行控制。Jupyter AI 支持像 Anthropic、AWS、Cohere 和 OpenAI 这样的提供商。其目标是以伦理的方式使 AI 更易于访问,以提升 Jupyter 笔记本的体验。

??? 宣布 OverflowAI

Stack Overflow 宣布了 OverflowAI,这是他们将 AI 能力整合到公共问答平台、Stack Overflow for Teams 以及 IDE 扩展等新产品中的项目。其功能包括语义搜索以寻找更相关的结果、摄取企业知识以加快内部问答的启动、一个访问 Stack Overflow 内容的 Slack 聊天机器人,以及一个在开发者工作流程中呈现答案的 VS Code 扩展。他们旨在利用其社区中超过 5800 万个问题,同时通过对 AI 生成内容的归属和透明度来确保信任。目标是通过负责任地使用 AI 来提升开发者的效率,将他们与上下文中的解决方案相连接。

??? ChatGPT 更新

在过去的一周中,我们推出了若干小更新,以提升 ChatGPT 的使用体验。这些更新包括引入提示示例以帮助用户开始聊天、建议回复以促使更深层次的互动,以及为 Plus 用户提供默认使用 GPT-4 的偏好设置。此外,还引入了多文件上传功能(在 Plus 用户的代码解释器测试版中)、新的保持登录功能以及一系列键盘快捷键,以提高可用性。

文章

“文章”部分展示了一系列引人深思的人工智能相关作品。每篇文章深入探讨一个特定主题,为读者提供关于 AI 的各种见解,包括新技术、革命性方法和开创性的工具。

??? 我在 3 天内创建了一个 AI 应用

作者通过 ChatGPT 提示实验,创建了一个名为 Tally.Work 的 AI 驱动的求职信生成器网络应用,仅用了 3 天时间,前端使用了 Bubble.io,生成文本则通过 OpenAI API 完成。该应用程序以用户的简历和职位描述为输入,输出定制的求职信。目标是构建一个具有巨大潜在用户基础的应用。尽管 AI 生成的文本尚不完美,但可以帮助创建有用的初稿。作者相信 AI 将消除许多繁琐的任务,如求职信,并希望这个项目能引领更多有趣的 AI 应用的出现。总体来看,它展示了使用无代码工具和 AI API 快速构建和推出应用创意的可能性。

??? 生产环境中部署生成模型的三大挑战

文章讨论了在生产环境中部署生成性 AI 模型(如 GPT-3 和 Stable Diffusion)的三个主要挑战:模型的巨大规模导致高计算成本、可能传播有害偏见的偏见以及需要调整的一致性输出质量。解决方案包括模型压缩、在无偏数据上训练、后处理过滤器、提示工程和模型微调。总体而言,文章概述了公司必须仔细解决这些问题,以成功利用生成模型,同时避免潜在的负面影响。

工具

"工具"部分列出了社区创建的有用应用程序和脚本,供那些希望投入实际 AI 应用的人使用。在这里,你将找到各种工具类型,从大型综合代码库到小型利基脚本。请注意,这些工具的分享不代表任何背书,也不提供任何形式的保证。在安装和使用任何软件之前,请自行进行调查!

???️ 机器人写作室

该存储库演示了如何与人类协作使用 AI 来集思广益和完善故事创意。AI 不是取代人类,而是作为创意伙伴,提出想法并进行研究。在每一步,人类可以接受、拒绝或修改 AI 的建议。写作中的主要挑战之一是构思创意。该项目旨在通过提供一个创意伙伴来帮助作家克服创作瓶颈。

???️ 格但斯克 AI

格但斯克 AI 是一个全栈 AI 语音聊天机器人(语音转文本、LLM、文本转语音),集成了 Auth0、OpenAI、Google Cloud API 和 Stripe - Web 应用、API 和 AI

研究亮点

"研究亮点"部分突出了人工智能领域的重要研究。该部分包括突破性的研究、探索新理论以及讨论该领域的潜在影响和未来方向。

??? ToolLLM: 使大语言模型掌握 16000+ 真实世界 API

论文介绍了 ToolLLM,一个用于增强开源大语言模型工具使用能力的框架。它构建了一个名为 ToolBench 的数据集,包含 49 个类别中涉及 16,000 个真实世界 API 的指令。ToolBench 是通过 ChatGPT 自动生成的,几乎不需要人工干预。为了提升推理能力,作者提出了一种深度优先搜索决策树方法,使模型能够评估多个推理轨迹。他们还开发了一个自动评估器 ToolEval,以高效评估工具使用能力。通过在 ToolBench 上微调 LLaMA,他们获得了 ToolLLaMA,该模型在 ToolEval 上表现出色,包括对未见过的 API 具有良好的泛化能力。总体而言,ToolLLM 提供了一种解锁开源 LLM 中复杂工具使用的方法。

??? MetaGPT: 多智能体协作框架的元编程

本文介绍了 MetaGPT,一个旨在改善大语言模型在复杂任务中的协作的框架。它将现实世界的标准化操作程序融入提示中,以指导多代理协调。像 ProductManager 和 Architect 这样的角色会生成符合行业惯例的结构化输出。共享的环境和记忆能够促进知识共享。在软件任务中,MetaGPT 生成了比 AutoGPT 和 AgentVerse 更多的代码和文档,并且成功率更高,显示了它在跨专业代理之间分解问题的能力。标准化的工作流程和输出旨在减少对话中的不连贯性。总体而言,MetaGPT 展示了一种将人类专业知识捕捉到代理中以解决复杂现实问题的方法。

更多相关内容

本周人工智能动态,8 月 18 日:OpenAI 财务困境 • Stability AI 宣布 StableCode

原文:www.kdnuggets.com/2023/08/this-week-ai-2023-08-18.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由编辑使用 Midjourney 创建

欢迎来到本周的“本周人工智能动态”版块,这里是 KDnuggets 的每周精选帖子,旨在让你了解人工智能快速发展的世界中的最引人注目的进展。从塑造我们对 AI 在社会中角色理解的突破性头条到引发思考的文章、富有洞察力的学习资源和推动我们知识边界的研究,这篇帖子提供了 AI 当前格局的全面概述。本周更新旨在让你在这一不断发展的领域中保持更新和知情。敬请关注,阅读愉快!


我们的三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你的组织 IT


头条新闻

“头条新闻”部分讨论了过去一周在人工智能领域的顶级新闻和发展信息。信息涵盖了政府 AI 政策、技术进步和企业 AI 创新。

??? ChatGPT 陷入困境:OpenAI 可能在 2024 年破产,AI 机器人每天给公司带来 70 万美元成本

OpenAI 因运行 ChatGPT 和其他 AI 服务的高成本而面临财务困境。尽管早期增长迅猛,但 ChatGPT 的用户基础在最近几个月有所下降。OpenAI 正努力有效地变现其技术并产生可持续收入。同时,其现金消耗速度惊人。随着竞争加剧和企业 GPU 短缺阻碍模型开发,OpenAI 需要紧急寻找盈利路径。如果未能实现,破产可能在这家开创性 AI 初创企业的视野之内。

??? Stability AI 宣布 StableCode,一款为开发者提供的 AI 编码助手

Stability AI 发布了其首个专为软件开发优化的生成 AI 产品 StableCode。StableCode 集成了多个在超过 5000 亿个代码标记上训练的模型,提供智能自动补全、响应自然语言指令,并管理长跨度的代码。尽管对话式 AI 已经可以编写代码,StableCode 的设计目的是通过理解代码结构和依赖关系来提高程序员的生产力。凭借其专门的训练和能够处理长上下文的模型,StableCode 旨在提升开发者工作流程,并降低新手编码者的入门门槛。此次发布标志着 Stability AI 在 AI 辅助编码工具领域的首次尝试,面对日益激烈的竞争。

OpenAI 推出 Superalignment

OpenAI 正在通过其新成立的 Superalignment 团队积极应对超级智能 AI 可能带来的风险,该团队使用诸如从人类反馈中进行强化学习等技术来对齐 AI 系统。主要目标包括开发可扩展的训练方法,利用其他 AI 系统进行验证模型的鲁棒性,并对即使是故意失调的模型也进行全面的对齐管道压力测试。总体而言,OpenAI 旨在通过开创负责任地引导超级智能的方法来证明机器学习可以安全进行。

通过生成 AI 学习(和浏览)

Google 宣布对其搜索引擎生成 (SGE) AI 能力进行多项更新,包括为科学/历史主题提供悬停定义、代码概述的彩色语法高亮显示,以及一项名为“浏览时 SGE”的早期实验,该实验在用户阅读网页上的长篇内容时总结关键点并帮助探索页面。这些更新旨在增强对复杂主题的理解,提高对编码信息的消化能力,并在用户浏览时帮助导航和学习。这些更新代表了 Google 基于用户反馈不断发展其 AI 搜索体验的努力,重点是理解和提取复杂网页内容中的关键细节。

Together.ai 将 Llama2 扩展到 32k 上下文窗口

LLaMA-2-7B-32K 是由 Together Computer 开发的开源长上下文语言模型,它将 Meta 的 LLaMA-2 的上下文长度扩展到 32K 令牌。它利用了像 FlashAttention-2 这样的优化技术,实现了更高效的推理和训练。该模型使用包括书籍、论文和教学数据在内的数据混合进行了预训练。示例提供了对长篇 QA 和总结任务的微调。用户可以通过 Hugging Face 访问该模型,或使用 OpenChatKit 进行自定义微调。像所有语言模型一样,LLaMA-2-7B-32K 可能生成有偏见或不正确的内容,因此使用时需要小心。

文章

“文章”部分展示了一系列引人深思的人工智能相关文章。每篇文章深入探讨了特定主题,为读者提供了对 AI 各个方面的见解,包括新技术、革命性方法和突破性工具。

??? LangChain 速查表

使用 LangChain,开发者可以构建强大的 AI 语言应用程序,而无需重新发明轮子。其可组合的结构使得轻松混合和匹配 LLM、提示模板、外部工具和记忆等组件。这加快了原型设计,并允许随着时间的推移无缝集成新功能。无论你是想创建聊天机器人、QA 机器人还是多步骤推理代理,LangChain 都提供了快速组装高级 AI 的构建模块。

??? 如何使用 ChatGPT 将文本转换为 PowerPoint 演示文稿

该文章概述了一个两步流程,用于使用 ChatGPT 将文本转换为 PowerPoint 演示文稿,首先将文本总结成幻灯片标题和内容,然后生成 Python 代码,将总结转换为 PPTX 格式,使用 python-pptx 库。这允许快速创建引人入胜的演示文稿,从长篇文本中避免繁琐的手动工作。文章提供了有关如何编写 ChatGPT 提示和运行代码的清晰说明,提供了一种高效的自动化演示解决方案。

??? LLM 研究中的开放挑战

这篇文章概述了改进大型语言模型的 10 个关键研究方向:减少幻觉、优化上下文长度/构建、融入多模态数据、加速模型、设计新架构、开发像光子芯片这样的 GPU 替代品、构建可用的代理、改进从人类反馈中学习、增强聊天界面,以及扩展到非英语语言。它引用了这些领域的相关论文,指出了诸如为强化学习表示人类偏好和为低资源语言构建模型等挑战。作者总结说,虽然像多语言能力这样的某些问题更易于解决,但像架构这样的其他问题则需要更多突破。总体而言,研究人员、公司和社区中的技术和非技术专长将对推动 LLMs 的积极发展至关重要。

??? 为什么你(可能)不需要微调 LLM

这篇文章概述了改进大型语言模型的 10 个关键研究方向:减少幻觉、优化上下文长度/构建、融入多模态数据、加速模型、设计新架构、开发像光子芯片这样的 GPU 替代品、构建可用的代理、改进从人类反馈中学习、增强聊天界面,以及扩展到非英语语言。它引用了这些领域的相关论文,指出了诸如为强化学习表示人类偏好和为低资源语言构建模型等挑战。作者总结说,虽然像多语言能力这样的某些问题更易于解决,但像架构这样的其他问题则需要更多突破。总体而言,研究人员、公司和社区中的技术和非技术专长将对推动 LLMs 的积极发展至关重要。

??? 使用 OpenAI GPT 模型的最佳实践

这篇文章概述了使用 OpenAI 的 GPT 模型时获得高质量输出的最佳实践,借鉴了社区经验。建议提供详细的提示,包括长度和角色等细节;多步骤的指示;要模仿的示例;参考文献和引文;用于关键思考的时间;以及执行代码以提高精确度。按照这些关于如何指导模型的建议,比如明确步骤和角色,可以得到更准确、相关且可定制的结果。该指导旨在帮助用户有效地构建提示,以充分发挥 OpenAI 强大的生成能力。

??? 我们对人工智能的看法都错了

作者认为当前的 AI 能力被低估了,使用创造力、搜索和个性化等例子来反驳常见误解。他指出,AI 可以通过重新组合概念展现创造力,而不仅仅是生成随机想法;它不仅是一个超级搜索引擎像 Google;它可以发展个性化关系,而不仅仅是通用技能。尽管不确定哪些应用最有用,作者呼吁保持开放的心态而非轻视,强调最好的方式是通过持续的实践探索来确定 AI 的潜力。他总结道,我们对 AI 的想象力有限,它的用途可能远远超出当前预测。

工具

“工具”部分列出了社区创建的实用应用程序和脚本,供那些希望忙于实际 AI 应用的用户使用。在这里,你会找到各种类型的工具,从大型综合代码库到小型利基脚本。请注意,工具的分享并不代表推荐,也没有任何形式的保证。在安装和使用任何软件之前,请自行调查!

???️ MetaGPT:多代理框架

MetaGPT 接受一行需求作为输入,并输出用户故事/竞争分析/需求/数据结构/API/文档等。内部,MetaGPT 包括产品经理/架构师/项目经理/工程师。它提供了一个软件公司完整的过程以及精心编排的标准操作程序。

???️ GPT LLM Trainer

该项目的目标是探索一种实验性的新管道,用于训练高性能的任务特定模型。我们尝试抽象出所有复杂性,使从构想到高效的完全训练模型的过程尽可能简单。

只需输入任务描述,系统将从零开始生成数据集,将其解析为正确的格式,并为你微调 LLaMA 2 模型。

???️ DoctorGPT

DoctorGPT 是一个能够通过美国医学执照考试的大型语言模型。这是一个开源项目,旨在为每个人提供自己的私人医生。DoctorGPT 是 Meta 的 Llama2 70 亿参数大型语言模型的一个版本,经过医学对话数据集的微调,随后使用强化学习和宪法 AI 进一步改进。由于模型只有 3GB 大小,因此可以在任何本地设备上运行,无需支付 API 使用费。

更多相关话题

Gartner 数据科学平台 – 更深层的分析

原文:www.kdnuggets.com/2017/03/thomaswdinsmore-gartner-data-science-platforms.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传评论

Thomas Dinsmore 提供,分析与机器学习顾问

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Gartner 最近发布了 2017 年数据科学平台的魔力象限。如果你是客户,可以直接从 Gartner 获取一份,或者你可以从 这里 免费获得一份,由 SAS 提供。

下图展示了 2016 年和 2017 年的 MQ,并用红色标记了变化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里是我去年写的关于 2016 年 MQ 的评论。

这里是 Gregory Piatetsky 的分析。

这里有关于 2017 年版本的 9 个观察点:

(1) 五个供应商被淘汰。

Gartner 对五个较弱的玩家下手了。

Accenture 去年进入了分析榜单,根据 Gartner 的说法,因为它收购了总部位于米兰的 i4C Analytics,这是一家小型米兰公司。Accenture 重新品牌化 了该软件为 Accenture Analytics Applications Platform。然而,Accenture 似乎将软件与捆绑咨询服务一起免费提供,因为它报告称没有来自软件许可的收入。

Lavastorm 是一个 ETL 和数据混合工具,不声明提供原生预测分析,因此它在去年的 MQ 中的存在一直是个谜。

Megaputer 是一家文本挖掘供应商,尽管其边缘化程度很高,甚至在 Crunchbase 上没有记录,但它连续两年进入了 MQ。去年,Gartner 指出“Megaputer 在可行性和知名度方面得分较低,并且在高级分析市场中,除了文本分析外对公司的认知不足。”这就引出了一个问题:它们为什么会被最初包括在内?

Prognoz 连续两年出现在 MQ 中,和 Megaputer 一样,引发了业内人士的 WTF 反应。Prognoz 主要是一个 BI 工具,包含一些时间序列和分析功能,但缺乏 Gartner 认为最低要求的预测分析能力。它似乎也在莫斯科以西缺乏客户。

Predixion SoftwareGreenwave Systems 收购,这似乎是一场清仓甩卖。因此,我们将不再看到 Predixion 的身影。

(2) 五家新供应商加入了。

三个真正的数据科学平台作为先驱者进入了今年的 MQ。

Dataiku 今年早些时候将总部迁至纽约,因此竞争对手不再能将其轻描淡写为“那家法国公司”。该公司市场 Data Science Studio,这是一种拖放接口,运行在开源平台之上,并具有大量数据库连接器。

Domino Data Lab 是一个具有协作和可重复性功能的数据科学平台。最初作为基于云的托管服务进行市场推广,Domino 现在提供其平台的本地实施。

H2O.ai 开发并支持 H2O,一个可扩展的机器学习包。H2O.ai 采用纯开放源代码模型,这使其在今年的 MQ 供应商中独具特色。

Mathworks 的加入令人欣喜。根据 IDC,它在高级和预测分析领域是排名第三的供应商,占据了 10% 的市场份额,并且多年来保持该位置。因此,它从之前的 MQ 中被排除是一个谜。究竟怎么会漏掉一家类别收入达 2.5 亿的供应商呢?只是问问。

Teradata 首次作为小众供应商亮相,从而证明了一个谚语:进入 Gartner MQ 最糟糕的事情就是作为小众供应商进入。

(3) 六家供应商的评级发生了显著变化。

六个回归的供应商在 Gartner 的评估中在一个或两个维度上明显下降。

Alpine 继续在图表底部徘徊。Alpine 与 Greenplum 和 EMC 的紧密联系曾是其一个优点,如今却成了缺陷。

由于规模较小,Alpine 正在努力获得显著的市场曝光,这也是其执行能力评分下降的原因。调查的供应商中,Alpine 提交的参考客户最少,其中 20% 表达了对用户社区规模小的担忧,他们认为这影响了网络交流和知识分享。

最近,我要求一位 Alpine 高管披露公司的当前客户数量;他拒绝了。自从 Alpine 吹嘘 2015 年有 60 个客户以来,我怀疑这一比较并不乐观。

AlteryxKNIME 在“愿景完整性”上的评分显著较低,原因是可视化工具有限以及一些可扩展性问题。这些产品属性每年没有变化;这意味着 Gartner 在今年的 MQ 中对此给予了更多重视。

FICO 在关键能力、开源工具支持、算法选择和创新方面表现不佳。这让人不禁怀疑为什么还会有人购买这款软件,或者为什么 FICO 仍然在 MQ 中。

Quest (Statistica) 下降的原因在于其难以学习和使用,存在性能和稳定性问题,缺乏关键特性,没有弹性云功能,并且在 Spark 集成方面滞后。除此之外,它仍然是一个优秀的产品。

RapidMiner 在“交付能力”上的评分有所提升,但其在“愿景完整性”上的评分无明显原因地下降了。

(4) Hadoop 和 Spark 的集成是基本要求。

在市场概述部分,Gartner 写道:

在这个魔力象限中的所有供应商——实际上,包括整个市场——都已转向将数据纳入开源 Hadoop 生态系统,现在被视为一流。这样,它与主要用于传统数据仓库的专有存储在地位上相等。

当然,虽然所有供应商都可以使用 Hadoop 作为数据源,但并非所有供应商都能利用 Hadoop 作为计算平台。此外,供应商在与 Hadoop 的集成程度上差异很大。

Spark 正在成为这个魔力象限中的供应商以及这个市场中其他参与者的事实上的数据科学基础。

Nick Heudecker,请联系你的办公室

2016 年 MQ 中的七个供应商没有明显的 Spark 故事。其中五个已经退出 MQ。请允许我绕场胜利一圈。

(5) Gartner 的标准奇怪地“灵活”。

三个例子:

示例 1:你可以在Enterprise Miner中运行现有的 Python 脚本,也可以在Alteryx中运行现有的 Python 脚本。然而,两个应用程序都没有提供创作工具。这通常不是问题,因为希望运行 Python 脚本的人通常已经有了首选的 IDE。然而,Gartner 特别指出 Alteryx,而非 SAS,存在“缺乏 Python 集成”的问题。

示例 2:Microsoft Azure Machine Learning 仅在 Microsoft Azure 云中运行。IBM Data Science Experience (DSx) 仅在 IBM Cloud 中运行。Gartner 批评 Azure Machine Learning 缺乏本地部署能力,同时称赞 DSx 为“最具吸引力的平台之一”。

示例 3:Statistica 无法将模型训练推送到 Spark 中;SAS Enterprise Miner 也不能。Gartner 特别指出 Statistica 在 Spark 能力上“落后”。

(6) 数据科学家不使用 Gartner 的顶级“数据科学”平台。

如果你想基于数据科学家实际使用的工具创建一个魔力象限,你可能会产生类似的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

仅有 5% 的 O’Reilly 调查的数据科学家使用任何 SAS 软件,而 0% 使用任何 IBM 分析软件。在稍微广泛的 KDnuggets 调查 中,6% 使用 SAS Enterprise Miner,8% 说他们使用 IBM SPSS Modeler。

高德纳对“公民数据科学家”的痴迷使其批评 Domino 和 H2O,因为它们“难以使用”:

Domino 的代码基础方法要求用户具备显著的技术知识。

没有编程技能的潜在用户可能会发现学习 H2O 产品栈很困难。

想象一下!如果你想使用数据科学平台,你需要知道如何进行数据科学。

(7) 高德纳对开源软件一无所知。

数据科学家使用开源软件。高德纳似乎明白这一点:

开源语言 — Python、R 和 Scala — 主导了这个市场。几乎所有的数据科学平台供应商都支持 Python 和 R,许多这个魔力象限中的供应商也支持 Scala。

但是:

高德纳的研究方法阻止了对纯开源平台(如 Python 和 R)的评估,因为它们背后没有提供可商业授权产品的供应商。

这在两个层面上都是错误的。

首先,这不是真的。Continuum Analytics 分发并支持 Anaconda,这是数据科学中最广泛使用的 Python 发行版。微软和甲骨文分发并支持 R,并且有丰富的社区和供应商支持资源。多个供应商支持 Apache Spark。

其次,虽然可以争论商业支持是数据科学平台的重要属性,但不能声称这是唯一重要的属性。许多数据科学家在没有供应商支持的情况下也能很好地运作。而且一些高德纳评为“领导者”的供应商提供的支持质量较低,因此在评级中似乎不具太大分量。

(8) 对 SAS 和 IBM 的评估具有误导性。

高德纳表示,它评估了 SAS 的 SAS Enterprise Miner 和 SAS 可视分析套件。高德纳未提及的是,仅靠这些产品的功能评估,SAS 不可能获得高分。SAS 的评分依赖于许多其他 SAS 软件产品,包括:

  • SAS/ACCESS

  • SAS 快速预测建模器

  • SAS 工厂管理器

  • SAS 高性能分析

  • SAS 模型管理器

  • SAS 评分加速器

可视分析套件运行在 SAS 自有的 LASR 服务器内存数据存储上;要将数据转入该格式,客户还需要 SAS 数据加载器或 SAS ETL 服务器。

客户必须单独从 SAS 处许可所有这些产品;这样做将使成本增加三倍以上,并显著增加架构的复杂性。实际上,只有少数 SAS 客户这样做;大约 15%的 SAS 客户许可了 SAS Enterprise Miner,而这些客户中的一小部分则许可了 Gartner 评估中反映的所有软件。

绝大多数 SAS 客户使用其遗留软件,该软件的代码基于 1990 年代中期。因此,Gartner 对 SAS 的评估假设了一个几乎无人使用的软件配置。

IBM 的情况也是如此。Gartner 基于 SPSS Modeler 的优势以及在较小程度上基于 SPSS Statistics,给予 IBM 领导者的评价。然而,Gartner 的评估再次依赖于其他 IBM 产品。例如,Gartner 称赞 IBM 的模型管理能力:

调查显示,IBM 客户对 SPSS 的模型管理给予了高度评价,称赞其模型种类的广泛、工作流程的准确性和透明性、模型部署、性能下降的监控以及自动调优功能。SPSS 提供了出色的分析治理功能:版本控制、元数据和审计能力。

这很好。只是这些功能在 SPSS Modeler 中不可用。要获得这些功能,客户必须许可IBM SPSS Collaboration and Deployment Services这一附加产品。类似地,Gartner 赞扬了 IBM 与 Hadoop 的集成。这是一个有价值的功能,但需要另一个产品,IBM SPSS Analytics Server

简而言之,由于未披露客户必须许可哪些产品才能实现所述功能,Gartner 对大多数客户实际许可的软件产生了虚假的印象。

就像仅仅根据总统套房的检查来评价一家酒店,或通过试驾一辆凯迪拉克来评估一辆雪佛兰。

(9) Gartner 对 IBM 有很高的评价。

这个瑰宝隐藏在报告的深处:

客户经常被(IBM 的)营销信息与实际可购产品之间的不匹配所困扰。

换句话说,IBM 是一个巨大的炒作机器。Gartner 对 IBM 的新数据科学体验(DSx)深信不疑:

DSx 可能成为未来最具吸引力的平台之一——现代、开放、灵活,适合从专家数据科学家到业务人员的各种用户。

请记住,DSx 是 IBM Cloud 上的 Spark 和 R 的托管服务。它包括 Jupyter 和 RStudio IDE。这就是全部——一个简单的托管服务,功能不如 Altiscale、Databricks、Domino、Microsoft Azure 或 Qubole 提供的托管服务。

而且,由于它在 IBM Cloud 上运行,你的组织数据有大约 5% 的机会已经存在于其中。

但 Gartner 认为它会解决全球饥饿问题。

IBM 在这一领域的大多数客户使用的是传统产品,关于这些产品,Gartner 说了以下内容:

对许多新用户而言,IBM SPSS Modeler 和 Statistics 似乎过时且价格过高。

IBM 可能价格昂贵,但你会得到一流的技术支持,对吧?

参考客户对 IBM 的支持和官僚主义表示不满;他们报告称,尽管维护费用很高,但在寻找合适的联络人和技术帮助时遇到了困难。

好吧,软件过时且价格过高,支持也很糟糕。但你仍然可以从 IBM 客户执行官那里获得“白手套”服务,对吧?

客户对购买 IBM 产品表示担忧,因为公司 reportedly 经常试图将其咨询组织 IBM Global Business Services 纳入数据科学项目中。

除此之外,IBM 是一个领导者。

原文。经许可转载

简介:Thomas W. Dinsmore 是一位顾问,为企业和投资者提供机器学习市场洞察。他曾担任波士顿咨询集团的分析专家;Revolution Analytics(微软)的产品管理总监;IBM 大数据(Netezza)、SAS 和 PriceWaterhouseCoopers 的解决方案架构师。

相关:

  • Gartner 2017 数据科学平台魔力象限:赢家和输家

  • Gartner 2016 高级分析平台魔力象限:赢家和输家

  • Gartner 2015 高级分析平台魔力象限:谁赢了,谁输了。


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业道路。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你的组织 IT


更多相关信息

思维传播:大型语言模型的类比推理方法

原文:www.kdnuggets.com/thought-propagation-an-analogical-approach-to-complex-reasoning-with-large-language-models

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关键要点

  • 思维传播(TP)是一种新颖的方法,可以提升大型语言模型(LLMs)的复杂推理能力。

  • TP 利用类比问题及其解决方案来改善推理,而不是让 LLMs 从零开始推理。

  • 各种任务的实验表明,TP 在性能上显著优于基线方法,改进范围从 12% 到 15%。


我们的前三名课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业轨道。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你所在组织的 IT


TP 首先促使 LLMs 提出并解决一组与输入问题相关的类比问题。然后,TP 重用类比问题的结果,以直接得出新的解决方案或推导出知识密集型执行计划来修正从零开始获得的初始解决方案。

介绍

大型语言模型(LLMs)的多样性和计算能力无可否认,但它们并非没有限制。LLMs 面临的最显著且持续的挑战之一是它们的通用问题解决方法,即每遇到一个新任务时都从第一原则推理。这是有问题的,因为它允许高度的适应性,但也增加了出错的可能性,特别是在需要多步骤推理的任务中。

“从头推理”的挑战在于那些需要多步骤逻辑和推理的复杂任务。例如,如果要求 LLM 在一个互联点的网络中找到最短路径,它通常不会利用先前的知识或类比问题来寻找解决方案。相反,它会尝试孤立地解决问题,这可能导致次优结果甚至明显错误。进入思想传播(TP),这是一种旨在增强 LLM 推理能力的方法。TP 旨在通过允许 LLM 从类比问题及其相应解决方案的储备中汲取经验,克服 LLM 固有的局限性。这种创新的方法不仅提高了 LLM 生成解决方案的准确性,还显著增强了其处理多步骤复杂推理任务的能力。通过利用类比的力量,TP 提供了一个框架,放大了 LLM 的固有推理能力,使我们更接近实现真正智能的人工系统。

理解思想传播

思想传播包括两个主要步骤:

  1. 首先,LLM 被提示提出并解决一组与输入问题相关的类比问题

  2. 接下来,这些类比问题的解决方案被用来直接产生新的解决方案或修正初步解决方案

识别类比问题的过程使得 LLM 能够重复使用问题解决策略和解决方案,从而提升其推理能力。TP 与现有的提示方法兼容,提供了一个可泛化的解决方案,可以被纳入各种任务中,而无需进行显著的任务特定工程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:思想传播过程(图片来自论文)

此外,TP 的适应性不应被低估。它与现有提示方法的兼容性使其成为一个高度通用的工具。这意味着 TP 不限于任何特定类型的问题解决领域。这为任务特定的微调和优化打开了激动人心的途径,从而提升了 LLM 在广泛应用中的实用性和有效性。

实施思想传播

思想传播的实施可以集成到现有 LLM 的工作流程中。例如,在最短路径推理任务中,TP 可以首先解决一组更简单的类比问题,以了解各种可能的路径。然后,它会利用这些见解来解决复杂问题,从而增加找到最佳解决方案的可能性。

示例 1

  • 任务:最短路径推理

  • 类比问题:点 A 和 B 之间的最短路径,点 B 和 C 之间的最短路径

  • 最终解决方案:考虑到类比问题的解决方案,从点 A 到 C 的最佳路径

示例 2

  • 任务:创造性写作

  • 类似问题:写一个关于友谊的短篇故事,写一个关于信任的短篇故事

  • 最终解决方案:写一个融合友谊和信任主题的复杂短篇故事

该过程首先涉及解决这些类似问题,然后利用获得的见解来处理复杂任务。这种方法在多个任务中证明了其有效性,展示了性能指标的显著改进。

思维传播的影响超出了仅仅改善现有指标的范畴。这种提示技术有可能改变我们理解和应用大语言模型的方式。该方法强调从孤立的、原子化的问题解决转向更整体、相互关联的方法。它促使我们考虑大语言模型如何不仅从数据中学习,还从问题解决的过程本身中学习。通过不断更新对类似问题的解决方案的理解,配备思维传播的大语言模型更好地准备应对不可预见的挑战,使它们在快速变化的环境中更具韧性和适应性。

结论

思维传播是增强大语言模型能力的提示方法工具箱中的一项有前景的补充。通过允许大语言模型利用类似问题及其解决方案,思维传播提供了一种更细致有效的推理方法。实验验证了其有效性,使其成为提高各种任务中大语言模型性能的候选策略。思维传播最终可能代表了在寻求更强大 AI 系统中的一项重要进步。

马修·梅奥 (@mattmayo13) 拥有计算机科学硕士学位和数据挖掘研究生文凭。作为KDnuggetsStatology的管理编辑以及Machine Learning Mastery的贡献编辑,Matthew 旨在使复杂的数据科学概念变得易于理解。他的专业兴趣包括自然语言处理、语言模型、机器学习算法以及探索新兴的人工智能。他致力于在数据科学社区中普及知识。Matthew 从 6 岁起就开始编程。

更多相关话题

每个数据科学家都应该了解的三种 R 库(即使你使用 Python)

原文:www.kdnuggets.com/2021/12/three-r-libraries-every-data-scientist-know-even-python.html

作者 Terence Shin,数据科学家 | 硕士分析与 MBA 学生

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 Denis Pavlovic 提供,来自 Unsplash


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业的捷径。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升你的数据分析能力

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持你的组织 IT


介绍

长时间以来,我对使用 R 持反对态度,仅仅因为它不是 Python。

但在过去几个月玩弄 R 后,我意识到 R 在多个使用案例中优于 Python,特别是在统计分析方面。此外,R 拥有一些由全球最大的科技公司开发的强大包,而这些不在 Python 中!

因此,在这篇文章中,我想探讨三个我强烈****推荐你花时间学习并装备在你的工具库中的 R 包,因为它们确实是非常强大的工具。

不再赘述,这里是每个数据科学家都应该了解的三种 R 包,即使你只使用 Python:

  1. 因果影响与谷歌

  2. Robyn 与 Facebook

  3. 使用 Twitter 进行异常检测

1. 因果影响(谷歌)

假设你的公司为超级碗推出了一个新的电视广告,并想查看它对转化率的影响。因果影响分析尝试预测如果活动从未发生,会发生什么——这被称为反事实。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由作者创建

举个实际的例子,因果影响分析尝试预测反事实,即顶部图表中的蓝色虚线,然后将实际值与反事实进行比较,以估算差异。

因果影响对市场营销活动、扩展到新区域、测试新产品功能等非常有用!

2. Robyn (Facebook)

营销组合建模是一种现代技术,用于估计多个营销渠道或活动对目标变量(如转化率或销售)的影响。

营销组合模型 (MMMs) 非常受欢迎,超过了归因模型,因为它们允许您衡量电视、广告牌和广播等无法直接量化的渠道的影响。

通常,营销组合模型从零开始构建需要几个月的时间。但 Facebook 创建了一个名为 Robyn 的新 R 包,可以在几分钟内创建一个强大的 MMM。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者创作的图像

使用 Robyn,您不仅可以评估每个营销渠道的效果,还可以优化您的营销预算!

请确保在这里订阅,以及订阅我的个人通讯,以确保不会错过关于数据科学指南、技巧和窍门、生活经验等更多文章!

3. 异常检测 (Twitter)

异常检测,也称为离群点分析,是一种识别与其他数据点显著不同的数据点的方法。

一般异常检测的一个子集是时间序列数据中的异常检测,这是一种独特的问题,因为您还需要考虑数据的趋势和季节性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作者创作的图像

Twitter 通过创建一个异常检测包来解决这个问题,包内的算法能够自动完成所有工作。它是一种复杂的算法,能够识别全球和局部的异常情况。除了时间序列外,它还可以用于检测值向量中的异常。

感谢阅读!

如果您喜欢这篇文章,请务必在这里订阅以及订阅我的独家通讯,以确保不会错过关于数据科学指南、技巧和窍门、生活经验等更多文章!

不确定接下来读什么?我为您挑选了另一篇文章:2021 年十大最佳数据可视化

以及另一篇:2022 年你应该知道的所有机器学习算法

Terence Shin

个人简介: Terence Shin 是一位数据爱好者,拥有 3 年以上的 SQL 经验和 2 年以上的 Python 经验,同时也是《Towards Data Science》和《KDnuggets》的博客作者。

原文。经授权转载。

更多相关话题

提升机器学习模型在不平衡数据集上的表现的三种技术

原文:www.kdnuggets.com/2018/06/three-techniques-improve-machine-learning-model-performance-imbalanced-datasets.html

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 comments

Sabber Ahamed,计算地球物理学家和机器学习爱好者

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个项目是我最近的一次“机器学习工程师”职位面试技能测试的一部分。我需要在 48 小时内完成这个项目,其中包括用 LaTeX 撰写 10 页报告。数据集具有类别且高度不平衡。这个项目的主要目标是处理数据不平衡问题。在以下小节中,我将描述我用来克服数据不平衡问题的三种技术。

首先,让我们开始熟悉数据集:

数据集: 训练数据中有三个标签 [1, 2, 3],这使得问题成为一个多类别问题。训练数据集有 17 个特征和 38829 个数据点。而在测试数据中,有 16 个特征没有标签,并且有 16641 个数据点。训练数据集非常不平衡。大多数数据属于类别 1(95%),而类别 2 和类别 3 分别有 3.0% 和 0.87% 的数据。由于数据集没有任何空值且已进行缩放,因此我没有进行进一步处理。由于一些内部原因,我不会分享数据集,但会分享详细的结果和技术。以下图展示了数据不平衡情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:该图展示了训练数据集中的数据不平衡情况。大多数数据属于类别 1(95%),而类别 2 和类别 3 分别有 3.0% 和 0.87% 的数据。

算法: 在初步观察后,我决定使用随机森林(RF)算法,因为它优于其他算法,如支持向量机、Xgboost、LightGBM 等。RF 是一种集成分类器,它使用多个这样的单棵树来进行预测。选择 RF 的原因有几点:

  1. RF 对过拟合具有鲁棒性(因此解决了单棵决策树的一个重大缺点)。

  2. 参数化保持相当直观和简单。

  3. 有许多成功的案例表明,随机森林算法在我们这个项目中的高度不平衡数据集上表现良好。

  4. 我有该算法的先前实现经验。

为了找到最佳参数,我使用 scikit-sklearn 实现的 GridSearchCV 执行了指定参数值的网格搜索。更多详细信息可以在 Github 上找到。

为了解决数据不平衡问题,我使用了以下三种技术:

A. 使用集成交叉验证 (CV): 在这个项目中,我使用交叉验证来验证模型的稳健性。整个数据集被分为五个子集。在每次交叉验证中,5 个子集中有 4 个用于训练,剩下的一个用于验证模型。在每次交叉验证中,模型还会对测试数据进行预测(预测概率,而不是类别)。交叉验证结束时,我们得到了五组测试预测概率。最后,我对所有类别的预测概率取平均。模型的训练性能稳定,并且在每次交叉验证中几乎保持恒定的召回率和 F1 分数。这项技术帮助我在一次 Kaggle 竞赛中很好地预测了测试数据,我在 5355 名参赛者中排名第 25 位,属于前 1%。以下部分代码片段展示了集成交叉验证的实现:

for j, (train_idx, valid_idx) in enumerate(folds):

                X_train = X[train_idx]
                Y_train = y[train_idx]
                X_valid = X[valid_idx]
                Y_valid = y[valid_idx]

                clf.fit(X_train, Y_train)

                valid_pred = clf.predict(X_valid)
                recall  = recall_score(Y_valid, valid_pred, average='macro')
                f1 = f1_score(Y_valid, valid_pred, average='macro')

                recall_scores[i][j] = recall
                f1_scores[i][j] = f1

                train_pred[valid_idx, i] = valid_pred
                test_pred[:, test_col] = clf.predict(T)
                test_col += 1

                ## Probabilities
                valid_proba = clf.predict_proba(X_valid)
                train_proba[valid_idx, :] = valid_proba
                test_proba  += clf.predict_proba(T)

            test_proba /= self.n_splits

B. 设置类别权重/重要性: 成本敏感学习是使随机森林更适合从高度不平衡数据中学习的众多方法之一。随机森林倾向于对多数类别有偏见。因此,对少数类别误分类施加高额惩罚可能会有帮助。由于这项技术已被证明能提高模型性能,我为少数类别分配了较高的权重(即,较高的误分类成本)。然后,将类别权重纳入随机森林算法中。我根据类别 1 和类别中的数据集数量之比来确定类别权重。例如,类别 1 和类别 3 的数据集数量之比约为 110,类别 1 和类别 2 的比率约为 26。之后,我稍微调整了这些数值,以在试验和错误的基础上提高模型性能。以下代码片段展示了不同类别权重的实现。

from sklearn.ensemble import RandomForestClassifier
class_weight = dict({
    
    1:1.9, 2:35, 3:180})

rdf = RandomForestClassifier(bootstrap=True,
            class_weight=class_weight, 
            criterion='gini',
            max_depth=8, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=4, min_samples_split=10,
            min_weight_fraction_leaf=0.0, n_estimators=300,
            oob_score=False,
            random_state=random_state,
            verbose=0, warm_start=False)

C. 过度预测标签而非欠预测: 这是一种可选的技术。我应用了这种技术,因为我被要求实现。对我来说,这种方法在提高少数类别的性能方面非常有效。简而言之,该技术是对模型的误分类类别 3 给予最大惩罚,对类别 2 给予较少的惩罚,对类别 1 给予最少的惩罚。

为了实现该方法,我为每个类别调整了概率阈值。为此,我按照递增顺序设置了类别 3、类别 2 和类别 1 的概率(即,类别 3 = 0.25,类别 2 = 0.35,类别 1 = 0.50),以迫使模型过度预测类别。该算法的详细实现可以在本项目的Github 页面找到。

最终结果:

以下结果展示了上述三种技术如何帮助提高模型性能。

1. 使用集成交叉验证的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. 使用集成交叉验证 + 类别权重的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 使用集成交叉验证 + 类别权重 + 过度预测标签的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结论

由于我在实施该技术方面的经验有限,最初过度预测对我来说似乎很棘手。然而,研究该方法帮助我找到了解决问题的方法。由于时间有限,我无法专注于模型的微调和特征工程。还有许多改进模型的空间。例如,删除不必要的特征和通过特征工程添加一些额外特征。我还尝试了 LightGBM 和 XgBoost。但在这段时间里,我发现随机森林的表现优于其他算法。我们可能会尝试包括神经网络在内的其他算法来改进模型。最后,我要说的是,从这次数据挑战中,我学会了如何以良好的组织方式处理不平衡数据。

非常感谢您的阅读。完整代码可以在 Github 上找到。如果您有任何问题或这篇文章需要更正,请告诉我。

简介: Sabber Ahamedxoolooloo.com 的创始人。计算地球物理学家和机器学习爱好者。

原文。已获得许可转载。

相关:

  • 处理不平衡数据的 7 种技术

  • 从不平衡类别中学习

  • 处理不平衡类别、支持向量机、随机森林和决策树的 Python 实现


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. 谷歌网络安全证书 - 快速进入网络安全职业生涯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. 谷歌数据分析专业证书 - 提升您的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. 谷歌 IT 支持专业证书 - 支持您的组织的 IT


相关主题

滴答声:在 Python 中使用 Pendulum 轻松管理日期和时间

原文:www.kdnuggets.com/tick-tock-using-pendulum-for-easy-date-and-time-management-in-python

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由作者提供 | DALLE-3 和 Canva

现在,很多应用程序都是时间敏感的,因此需要有效的日期和时间管理。Python 提供了许多处理此任务的库,而 Pendulum 是其中最有效的一个。


我们的前三大课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. Google 网络安全证书 - 快速进入网络安全职业生涯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. Google 数据分析专业证书 - 提升你的数据分析能力

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. Google IT 支持专业证书 - 支持你的组织进行 IT 工作


Pendulum 继承了其父DateTime库,并提供了更直观的接口。该库提供了简单的 API、自动时区处理以及更高级的功能,如本地化、易读的差异、时间段和持续时间,这些在原生DateTime库中并不容易获得。它还提高了时区管理和日期操作的有效性和便捷性。你是否迫不及待地想了解 Pendulum 了?让我们开始吧。

开始使用 Pendulum

第一步是安装 Pendulum。打开你的终端并运行以下命令:

pip install pendulum

接下来,导入库以使用它:

import pendulum

接下来,让我们讨论 Pendulum 提供的一些最有用的功能。

实例化

使用 Pendulum 创建DateTime对象非常简单。你可以使用pendulum.datetime()函数来创建你所需的对象。以下是一个简单的示例:

# Create a DateTime object
dt = pendulum.datetime(year=2024, month=7, day=9, hour=12, minute=34, second=56) 
print(dt)

输出:

2024-07-09 12:34:56+00:00

你还可以使用now()获取你所在地区的当前 DateTime:

# Get current date and time
now = pendulum.now()
print(now)

输出:

2024-07-17 20:07:20.149776+00:00
辅助方法

辅助方法(set()on()at())允许你修改现有DateTime对象的属性。它们会创建一个具有指定属性更改的新对象,而不是修改原始对象。一个快速示例可以帮助我们理解这个概念。从创建一个DateTime对象开始:

dt = pendulum.now()
print(dt)
**# Output => 2024-07-17 20:07:20.149776+00:00**

现在,让我们使用set()方法,它允许你同时修改日期和时间:

change_dt= dt.set(year=2001, month=4, hour=6, minute=7)
print(change_dt)
**# Output => 2001-04-17 06:07:20.149776+00:00**

另外,你可以使用on()来更改DateTime对象的日期,使用at()来更改时间。方法on()有三个必需的参数,即“年”、“月”和“日”,而方法at()只有一个必需的位置参数,即“小时”。

这是一个快速示例,以帮助你理解这个概念:

# Using on to change the date
change_date= dt.on(year=2021,month=3,day=5)
print("Changed date:",change_date)

# Using at to change the time
change_time= dt.at(hour=5,second=50)
print("Changed time:",change_time)

输出:

Changed date: 2021-03-05 20:07:20.149776+00:00
Changed time: 2024-07-17 05:00:50+00:00
日期时间格式化

无论您需要日期、时间还是自定义格式,Pendulum 都提供了许多方法来根据任务需求格式化日期和时间。让我们通过一个示例来理解这些不同类型的格式化:

dt = pendulum.now()
print("Date and Time without Formatting:", dt)

# Formatting only the date
formatted_date = dt.to_date_string()
print("Formatted Date:", formatted_date)

# Formatting only the time
formatted_time = dt.to_time_string()
print("Formatted Time:", formatted_time)

# Custom formatting
custom_format = dt.format('dddd, MMMM Do, YYYY, h:mm:ss A')
print("Custom Formatted DateTime:", custom_format)

输出:

Date and Time without Formatting: 2024-07-17 20:14:58.721312+00:00
Formatted Date: 2024-07-17
Formatted Time: 20:14:58
Custom Formatted DateTime: Wednesday, July 17th, 2024, 8:14:58 PM

用于格式化的函数解释如下:

  • to_date_string(): 以 YYYY-MM-DD 格式格式化日期

  • to_time_string(): 以 24 小时格式格式化时间,例如“HH: MM: SS”格式

  • format(‘dddd, MMMM Do YYYY, h: mm: ss A’): 按如下方式格式化 DateTime 对象的自定义规格:

    • dddd:星期几的全名,例如我们示例中的星期二

    • MMMM:月份的全名,例如我们示例中的七月

    • Do:带序数后缀的月份中的日期,例如我们示例中的第 16 日

    • YYYY:年份,例如我们示例中的 2024

    • h: mm: ss A:12 小时制格式,带 AM/PM,例如我们示例中的 7:13:23 PM

本地化

本地化涉及按照特定地区和文化惯例表示日期和时间。这可以通过format方法的locale关键字或set_locale()方法轻松完成。让我们来探索这两种方法:

dt = pendulum.now()

# Format to French
dt_french = dt.format('dddd, MMMM Do YYYY, h:mm:ss A',locale='fr')
print('French DateTime:',dt_french)

# Format to Dutch
pendulum.set_locale('nl')
dt_dutch =dt.format('dddd, MMMM Do YYYY, h:mm:ss A')
print('Dutch DateTime:',dt_dutch)

输出:

French DateTime: mercredi, juillet 17e 2024, 8:17:02 PM
Dutch DateTime: woensdag, juli 17e 2024, 8:17:02 p.m.
转换时区

Pendulum 支持时间区数据库中列出的所有时区。您可以通过一个命令轻松切换不同的时区。考虑将您所在地区的当前日期和时间转换为英国伦敦的日期和时间。可以如下所示:

dt = pendulum.now()
print("Date and Time in my region:", dt)

# Convert the regional time to London's time. Follow the format in_timezone(City/Continent)
london_time = dt.in_timezone('Europe/London')
print("Date and Time in London:", london_time)

输出:

Date and Time in my region: 2024-07-17 20:26:02.525060+00:00
Date and Time in London: 2024-07-17 21:26:02.525060+01:00
加法与减法

该库提供了简单的add()subtract()方法来计算未来和过去的日期和时间。以下是一个供您参考的示例:

# Add 5 days and 2 hours
dt_future= pendulum.now().add(days=5, hours=2)
print("Adding date and time:",dt_future)

# Subtract 2 weeks and 5 minutes
dt_past = pendulum.now().subtract(weeks=2,minutes=5)
print("Subtracting date and time:",dt_past)

输出:

Adding date and time: 2024-07-22 22:28:01.070802+00:00
Subtracting date and time: 2024-07-03 20:23:01.071146+00:00
类人差异

您可以使用diff_for_humans()函数以人类可读的差异查看加法和减法的输出。让我们通过一个示例来深入了解这个有趣的函数。

# Create a DateTime object
dt=pendulum.now()

# Subtract 2 months 
dt_past = dt.subtract(months=2).diff_for_humans()
print(dt_past)
**# Output => 2 months ago**

# Add 5 years 
dt_future= dt.add(years=5).diff_for_humans()
print(dt_future)
**# Output => in 5 years**

您可以通过在diff_for_humans()函数中设置absolute = True来移除单词agoin。默认情况下,它是False。以下是如何操作:

difference_dt=dt.add(days=2).diff_for_humans(absolute=True)
print(difference_dt)
**# Output => 2 days**

总结

总结一下,Pendulum 是一个用于日期和时间管理的有用库。该库对 Python 的原生DateTime库进行了许多改进,并解决了许多复杂性。我认为 Pendulum 最好的特点之一是其灵活性和高效的时区管理。您可以通过访问Pendulum 文档来探索更多功能。

Kanwal Mehreen** Kanwal 是一名机器学习工程师和技术作家,对数据科学以及人工智能与医学的交集充满热情。她共同撰写了电子书《利用 ChatGPT 最大化生产力》。作为 2022 年 APAC 的 Google Generation Scholar,她倡导多样性和学术卓越。她还被认可为 Teradata 多样性科技学者、Mitacs 全球研究学者和哈佛 WeCode 学者。Kanwal 是变革的热忱倡导者,创立了 FEMCodes,以赋能女性进入 STEM 领域。**

更多相关主题

在 Python 中整理数据

原文:www.kdnuggets.com/2017/01/tidying-data-python.html

由 Jean-Nicholas Hould, JeanNicholasHould.com 提供。

我最近遇到了一篇名为Tidy Data的论文,作者是 Hadley Wickham。该论文发表于 2014 年,重点讲述了数据清理的一个方面——整理数据:结构化数据集以便于分析。通过这篇论文,Wickham 展示了如何在分析之前将任何数据集结构化为标准化的方式。他详细介绍了不同类型的数据集以及如何将它们整理成标准格式。

作为数据科学家,我认为你应该非常熟悉这种数据集的标准化结构。数据清理是数据科学中最常见的任务之一。无论你处理何种数据或进行何种分析,你最终都必须清理数据。将数据整理成标准格式可以简化后续工作。你可以在不同的分析中重用一套标准工具。

在这篇文章中,我将总结一些 Wickham 在论文中使用的整理示例,并演示如何使用 Python 的pandas库进行整理。

定义整洁数据

Wickham 定义的整洁结构具有以下属性:

  • 每个变量形成一列,并包含

  • 每个观察形成一行

  • 每种观察单元形成一个表格

一些定义:

  • 变量:一种测量或属性。身高, 体重, 性别, 等等

  • 值:实际的测量或属性。152 cm, 80 kg, female, etc.

  • 观察:所有的值都是在相同的单元上测量的。每个人。

一个混乱数据集的例子:

处理 A 处理 B
约翰·史密斯 - 2
简·多 16 11
玛丽·约翰逊 3 1

一个整洁数据集的例子:

姓名 处理 结果
约翰·史密斯 a -
简·多 a 16
玛丽·约翰逊 a 3
约翰·史密斯 b 2
简·多 b 11
玛丽·约翰逊 b 1

整理混乱的数据集

通过以下从 Wickham 的论文中提取的示例,我们将把混乱的数据集整理成整洁的格式。这里的目标不是分析数据集,而是将它们以标准化的方式准备好以便进行分析。这是我们将处理的五种类型的混乱数据集:

  • 列标题是值,而不是变量名称。

  • 多个变量被存储在一列中。

  • 变量存储在行和列中。

  • 多种类型的观察单元存储在同一个表格中。

  • 单一的观察单元被存储在多个表格中。

注意:本文中呈现的所有代码都可以在Github上找到。

列标题是值,而不是变量名称

皮尤研究中心数据集

这个数据集探讨了收入与宗教之间的关系。

问题:列标题由可能的收入值组成。

import pandas as pd
import datetime
from os import listdir
from os.path import isfile, join
import glob
import re

df = pd.read_csv("./data/pew-raw.csv")
df
宗教 <$10k $10-20k $20-30k $30-40k $40-50k $50-75k
无神论者 27 34 60 81 76 137
无神论者 12 27 37 52 35 70
佛教徒 27 21 30 34 33 58
天主教 418 617 732 670 638 1116
不知道/拒绝 15 14 15 11 10 35
福音派新教 575 869 1064 982 881 1486
印度教 1 9 7 9 11 34
历史性黑人新教 228 244 236 238 197 223
耶和华见证人 20 27 24 24 21 30
犹太教 19 19 25 25 30 95

数据集的整洁版本是收入值不会成为列标题,而是作为income列中的值。为了整理这个数据集,我们需要转化它。pandas库有一个内置函数可以做到这一点,它将数据框从宽格式“反转”成长格式。我们将在本文中多次重用这个函数。

formatted_df = pd.melt(df,
                       ["religion"],
                       var_name="income",
                       value_name="freq")
formatted_df = formatted_df.sort_values(by=["religion"])
formatted_df.head(10)

这将输出数据集的整洁版本:

宗教 收入 频率
无神论者 <$10k 27
无神论者 $30-40k 81
无神论者 $40-50k 76
无神论者 $50-75k 137
无神论者 $10-20k 34
无神论者 $20-30k 60
无神论者 $40-50k 35
无神论者 $20-30k 37
无神论者 $10-20k 27
无神论者 $30-40k 52

公告牌前 100 名数据集

这个数据集表示从歌曲进入《公告牌》前 100 名时开始到接下来的 75 周的每周排名。

问题:

  • 列标题由值组成:周数(x1st.week,…)

  • 如果一首歌在前 100 名中停留少于 75 周,剩余的列将填充缺失值。

df = pd.read_csv("./data/billboard.csv", encoding="mac_latin2")
df.head(10)
年份 艺术家.倒序 曲目 时长 风格 进入日期 高峰日期 第一周 第二周
2000 命运之子 独立女性第一部分 3:38 摇滚 2000-09-23 2000-11-18 78 63.0
2000 桑坦娜 玛利亚,玛利亚 4:18 摇滚 2000-02-12 2000-04-08 15 8.0
2000 野人花园 我知道我爱你 4:07 摇滚 1999-10-23 2000-01-29 71 48.0
2000 麦当娜 音乐 3:45 摇滚 2000-08-12 2000-09-16 41 23.0
2000 克里斯蒂娜·阿奎莱拉 来吧宝贝(我只要你) 3:38 摇滚 2000-08-05 2000-10-14 57 47.0
2000 贾妮特 无关紧要 4:17 摇滚 2000-06-17 2000-08-26 59 52.0
2000 命运之子 说我的名字 4:31 摇滚 1999-12-25 2000-03-18 83 83.0
2000 恩里克·伊格莱西亚斯 和你在一起 3:36 拉丁 2000-04-01 2000-06-24 63 45.0
2000 西斯科 不完整 3:52 摇滚 2000-06-24 2000-08-12 77 66.0
2000 Lonestar Amazed 4:25 Country 1999-06-05 2000-03-04 81 54.0

这个数据集的整洁版本是没有周数作为列的,而是作为单一列的值。为了做到这一点,我们将把周数列“融化”成一个date列。我们将为每条记录创建一行每周。如果给定周没有数据,我们将不会创建行。

# Melting
id_vars = ["year",
           "artist.inverted",
           "track",
           "time",
           "genre",
           "date.entered",
           "date.peaked"]

df = pd.melt(frame=df,id_vars=id_vars, var_name="week", value_name="rank")

# Formatting 
df["week"] = df['week'].str.extract('(\d+)', expand=False).astype(int)
df["rank"] = df["rank"].astype(int)

# Cleaning out unnecessary rows
df = df.dropna()

# Create "date" columns
df['date'] = pd.to_datetime(df['date.entered']) + pd.to_timedelta(df['week'], unit='w') - pd.DateOffset(weeks=1)

df = df[["year", 
         "artist.inverted",
         "track",
         "time",
         "genre",
         "week",
         "rank",
         "date"]]
df = df.sort_values(ascending=True, by=["year","artist.inverted","track","week","rank"])

# Assigning the tidy dataset to a variable for future usage
billboard = df

df.head(10)

数据集的更整洁版本如下所示。仍然有很多歌曲详细信息的重复:曲目名称、时间和类型。由于这个原因,这个数据集仍然不完全符合 Wickham 的定义。我们将在下一个示例中解决这个问题。

year artist.inverted track time genre week rank date
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 1 87 2000-02-26
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 2 82 2000-03-04
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 3 72 2000-03-11
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 4 77 2000-03-18
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 5 87 2000-03-25
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 6 94 2000-04-01
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 7 99 2000-04-08
2000 2Ge+her The Hardest Part Of Breaking Up (Is Getting Ba… 3:15 R&B 1 91 2000-09-02
2000 2Ge+her The Hardest Part Of Breaking Up (Is Getting Ba… 3:15 R&B 2 87 2000-09-09
2000 2Ge+her The Hardest Part Of Breaking Up (Is Getting Ba… 3:15 R&B 3 92 2000-09-16

一个表中包含多种类型

继 Billboard 数据集之后,我们现在将解决前一个表的重复问题。

问题:

  • 多个观察单位(song和它的rank)在一个表中。

我们将首先创建一个包含每首歌详细信息的songs表:

songs_cols = ["year", "artist.inverted", "track", "time", "genre"]
songs = billboard[songs_cols].drop_duplicates()
songs = songs.reset_index(drop=True)
songs["song_id"] = songs.index
songs.head(10)
year artist.inverted track time genre song_id
2000 2 Pac Baby Don’t Cry (Keep Ya Head Up II) 4:22 Rap 0
2000 2Ge+her The Hardest Part Of Breaking Up (Is Getting Ba… 3:15 R&B 1
2000 3 Doors Down Kryptonite 3:53 Rock 2
2000 3 Doors Down Loser 4:24 Rock 3
2000 504 Boyz Wobble Wobble 3:35 Rap 4
2000 98° Give Me Just One Night (Una Noche) 3:24 Rock 5
2000 A*Teens Dancing Queen 3:44 Pop 6
2000 Aaliyah I Don’t Wanna 4:15 Rock 7
2000 Aaliyah Try Again 4:03 Rock 8
2000 Adams, Yolanda Open My Heart 5:30 Gospel 9

然后我们将创建一个只包含song_iddaterankranks表。

ranks = pd.merge(billboard, songs, on=["year","artist.inverted", "track", "time", "genre"])
ranks = ranks[["song_id", "date","rank"]]
ranks.head(10)
song_id date rank
0 2000-02-26 87
0 2000-03-04 82
0 2000-03-11 72
0 2000-03-18 77
0 2000-03-25 87
0 2000-04-01 94
0 2000-04-08 99
1 2000-09-02 91
1 2000-09-09 87
1 2000-09-16 92

一列中存储多个变量

世界卫生组织的结核病记录

这个数据集记录了按国家、年份、年龄和性别确认的结核病病例数量。

问题:

  • 一些列包含多个值:性别和年龄。

  • 零值和缺失值NaN的混合。这是由于数据收集过程中的原因,区分这些值对于这个数据集很重要。

df = pd.read_csv("./data/tb-raw.csv")
df
country year m014 m1524 m2534 m3544 m4554 m5564 m65 mu f014
AD 2000 0 0 1 0 0 0 0 NaN NaN
AE 2000 2 4 4 6 5 12 10 NaN 3
AF 2000 52 228 183 149 129 94 80 NaN 93
AG 2000 0 0 0 0 0 0 1 NaN 1
AL 2000 2 19 21 14 24 19 16 NaN 3
AM 2000 2 152 130 131 63 26 21 NaN 1
AN 2000 0 0 1 2 0 0 0 NaN 0
AO 2000 186 999 1003 912 482 312 194 NaN 247
AR 2000 97 278 594 402 419 368 330 NaN 121
AS 2000 NaN NaN NaN NaN 1 1 NaN NaN NaN

为了整理这个数据集,我们需要从标题中删除不同的值,并将其展开成行。我们首先需要将sex + age group列融化成一个单一列。一旦我们有了那个单一列,我们将从中派生出三列:sexage_lowerage_upper。有了这些,我们将能够正确地构建一个整洁的数据集。

df = pd.melt(df, id_vars=["country","year"], value_name="cases", var_name="sex_and_age")

# Extract Sex, Age lower bound and Age upper bound group
tmp_df = df["sex_and_age"].str.extract("(\D)(\d+)(\d{2})")    

# Name columns
tmp_df.columns = ["sex", "age_lower", "age_upper"]

# Create `age`column based on `age_lower` and `age_upper`
tmp_df["age"] = tmp_df["age_lower"] + "-" + tmp_df["age_upper"]

# Merge 
df = pd.concat([df, tmp_df], axis=1)

# Drop unnecessary columns and rows
df = df.drop(['sex_and_age',"age_lower","age_upper"], axis=1)
df = df.dropna()
df = df.sort(ascending=True,columns=["country", "year", "sex", "age"])
df.head(10)

这导致了一个整洁的数据集

country year cases sex age
AD 2000 0 m 0-14
AD 2000 0 m 15-24
AD 2000 1 m 25-34
AD 2000 0 m 35-44
AD 2000 0 m 45-54
AD 2000 0 m 55-64
AE 2000 3 f 0-14
AE 2000 2 m 0-14
AE 2000 4 m 15-24
AE 2000 4 m 25-34

变量既存储在行中,也存储在列中

全球历史气候网络数据集

这个数据集记录了 2010 年墨西哥一个气象站(MX17004)五个月的每日天气记录。

问题:

  • 变量既存储在行(tmintmax)中,也存储在列(days)中。
df = pd.read_csv("./data/weather-raw.csv")
df
id year month element d1 d2 d3 d4 d5 d6 d7 d8
MX17004 2010 1 tmax NaN NaN NaN NaN NaN NaN NaN NaN
MX17004 2010 1 tmin NaN NaN NaN NaN NaN NaN NaN NaN
MX17004 2010 2 tmax NaN 27.3 24.1 NaN NaN NaN NaN NaN
MX17004 2010 2 tmin NaN 14.4 14.4 NaN NaN NaN NaN NaN
MX17004 2010 3 tmax NaN NaN NaN NaN 32.1 NaN NaN NaN
MX17004 2010 3 tmin NaN NaN NaN NaN 14.2 NaN NaN NaN
MX17004 2010 4 tmax NaN NaN NaN NaN NaN NaN NaN NaN
MX17004 2010 4 tmin NaN NaN NaN NaN NaN NaN NaN NaN
MX17004 2010 5 tmax NaN NaN NaN NaN NaN NaN NaN NaN
MX17004 2010 5 tmin NaN NaN NaN NaN NaN NaN NaN NaN

为了使数据集整洁,我们希望将三个错误放置的变量(tmintmaxdays)作为三个独立的列:tmintmaxdate

# Extracting day
df["day"] = df["day_raw"].str.extract("d(\d+)", expand=False)  
df["id"] = "MX17004"

# To numeric values
df[["year","month","day"]] = df[["year","month","day"]].apply(lambda x: pd.to_numeric(x, errors='ignore'))

# Creating a date from the different columns
def create_date_from_year_month_day(row):
    return datetime.datetime(year=row["year"], month=int(row["month"]), day=row["day"])

df["date"] = df.apply(lambda row: create_date_from_year_month_day(row), axis=1)
df = df.drop(['year',"month","day", "day_raw"], axis=1)
df = df.dropna()

# Unmelting column "element"
df = df.pivot_table(index=["id","date"], columns="element", values="value")
df.reset_index(drop=False, inplace=True)
df
id date tmax tmin
MX17004 2010-02-02 27.3 14.4
MX17004 2010-02-03 24.1 14.4
MX17004 2010-03-05 32.1 14.2

一个类型在多个表中

数据集:2014/2015 年伊利诺伊州男性婴儿名字。

问题:

  • 数据分布在多个表/文件中。

  • “Year” 变量存在于文件名中。

为了将这些不同的文件加载到一个 DataFrame 中,我们可以运行一个自定义脚本,将文件合并在一起。此外,我们还需要从文件名中提取“Year”变量。

def extract_year(string):
    match = re.match(".+(\d{4})", string) 
    if match != None: return match.group(1)

path = './data'
allFiles = glob.glob(path + "/201*-baby-names-illinois.csv")
frame = pd.DataFrame()
df_list= []
for file_ in allFiles:
    df = pd.read_csv(file_,index_col=None, header=0)
    df.columns = map(str.lower, df.columns)
    df["year"] = extract_year(file_)
    df_list.append(df)

df = pd.concat(df_list)
df.head(5)
rank name frequency sex year
1 Noah 837 Male 2014
2 Alexander 747 Male 2014
3 William 687 Male 2014
4 Michael 680 Male 2014
5 Liam 670 Male 2014

终极想法

在这篇文章中,我专注于 Wickham 论文中的一个方面,即数据处理部分。我的主要目标是演示如何在 Python 中进行数据操作。值得提到的是,他的论文中有一个重要部分涵盖了工具和可视化,您可以通过整理数据集受益。我在这篇文章中没有涵盖这些内容。

总体而言,我很喜欢准备这篇文章并将数据集整理成流畅的格式。定义的格式使得查询和筛选数据变得更加容易。这种方法使得在分析中重用库和代码变得更加简便。它也使得与其他数据分析师共享数据集变得更简单。

简历: Jean-Nicholas Hould 是来自 加拿大蒙特利尔的数据科学家。JeanNicholasHould.com 的作者。

原文。经许可转载。

相关:

  • 数据科学统计学 101

  • 数据科学中的中心极限定理

  • 用 SQL 做统计


我们的前三个课程推荐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 1. Google 网络安全证书 - 快速进入网络安全职业生涯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 2. Google 数据分析专业证书 - 提升你的数据分析技能

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 3. Google IT 支持专业证书 - 支持你的组织进行 IT 工作


了解更多相关主题

猜你喜欢

转载自blog.csdn.net/wizardforcel/article/details/143443742