我在每个数据分析师候选人身上寻找的特质
从招聘经理的角度
·
关注 发表在Towards Data Science ·7 分钟阅读·2023 年 1 月 3 日
–
摄影:由Clem Onojeghuo提供,发布于Unsplash
介绍
我的职业生涯大部分时间都 spent 在数据分析领域。早期,我的工作性质更加技术化,因为我专注于数据仓库的设计和建设。随着时间的推移,我的工作变得不那么技术化,我逐渐倾向于分析的商业方面,最终进入了数据分析管理角色。这条职业道路让我对业务组织中的数据分析师角色有了独特的视角(和欣赏)。我写这篇文章是为了向那些希望将数据分析作为职业或当前是数据分析师并寻求职业发展的人员提供我的观点。尽管有大量的指导材料专注于成为数据分析师的技术方面,但我还未见到从招聘经理的角度发布的有意义的内容。我的希望是,你阅读这篇文章能在成为一名备受追捧的数据分析师的旅程中帮助你。
数据分析师的需求是真实的……而且在增长
准备好让你的思维被颠覆了吗?在 2012 年至 2022 年的十年间,数字宇宙中的数据量增加了 15 倍,从 6.5 泽字节(ZB)增加到 97 ZB,预计在接下来的三年内(到 2025 年底)这一数字将几乎翻倍至 181 ZB! 换成更易理解的术语,一个泽字节等于一万亿千兆字节的数据。随着数字化转型和物联网(IoT)的不断普及,收集的数据量和种类只会继续增长。这一数据爆炸得益于大数据构架的革命性进展,使得所有这些数据能够被捕捉、整理、存储、处理和近乎实时地分析。然而,随着我们生产的数据量的增加,我们从中获得的商业洞察却没有增加。实际上,尽管每年花费数十亿美元来缩小这个差距,但数据收集与洞察收集之间的差距只会继续扩大。这个差距存在的主要原因之一是缺乏合格的人才来完成这些工作。
集中你的技术技能
当我在 2000 年代初开始我的数据分析职业时,数据仓库正当风靡。我的技术工具箱包括关系数据库、数据库设计工具(Erwin)、提取转换加载(ETL)工具、商业智能(BI)工具以及当然的结构化查询语言(SQL)。这是一套直观的工具,学习曲线相对较易。但在今天的数据分析环境中,由于现在存储的数据量以各种不同形式和结构级别存在,需要大量的技能组合和角色来进行分析。这甚至催生了备受追捧的多技能数据科学家角色。
在许多不同的技术技能需求中,潜在的数据分析师如何选择学习哪些技能?虽然选择学习什么不是本文的具体重点,但我要告诉你的是,你应该将有限的时间花在掌握你所选择的技能上。旧谚语“全才不精通”在这里完全适用。根据我的招聘经理经验,许多新进入数据分析领域的人倾向于列出一长串他们有一定了解的技术技能,希望这能给他们带来优势。这是一个错误。
对我来说重要的是你能展示出将你学到的技能用于实际应用的能力。例如,如果你花时间学习了如何用 R 语言编程,我希望了解你如何利用它来回答实际问题,而不仅仅是能列出你可以调用的函数。描述一下你从业务角度想要解决的问题,以及你使用了哪些工具的功能来回答这个问题。能够做到这一点会向我展示两件事。首先,你掌握了技术技能,其次(而且更重要的是),你理解如何在业务背景下使用这些技能。
顺便提一下,许多数据分析师拥有出色的技术技能,但如果没有来自业务的详细指导,他们仍然无法有效应用这些技能。另一方面,如果你能展示出你已经掌握了某项技术技能,如我所描述的那样,我将会有信心,你能在我雇佣你后掌握并正确应用其他有价值的技术技能。
尽可能多地了解你支持的业务
作为招聘经理,我最看重的特质是好奇心。对于数据分析师而言,这种好奇心通过他们展示对所支持业务的真实理解来体现。在高层次上,你能告诉我公司是做什么的,以及它如何赚钱吗?它面临什么挑战?你能告诉我越多越好。在更详细的层次上,你所做的分析如何帮助公司?例如,如果你的公司在产品运输方面经历了极端的延迟,而你被指派找出原因,你的分析方法是什么?你能详细描述实际的运输过程吗?然后,基于你对这一过程的理解,你如何结构你的分析并识别出问题?如果你能做到这一点,我可以保证这将使你在大多数数据分析师候选人中脱颖而出。最优秀的数据分析师对他们所支持的业务运营有透彻的理解。
对于那些考虑将数据分析作为职业的新手,我建议你在学习技术技能时采取相同的方法。不要只是机械地学习编码或使用分析软件,这样会浪费时间。有很多公开的数据集可以用来创建你自己的数据分析场景。我鼓励你采取这种方法有两个原因。首先,当然是为了学习技术技能。其次(可能更重要的是),是为了了解这是否是你有天赋并可能真正喜欢的工作。成为数据分析师是一项巨大的承诺。将此视为一个提前体验这个角色的机会,以便你可以确定是否真的想要追求这个职业道路。
我将以个人的经历结束这一部分。在我作为数据分析师的期间,我总是设法尝试了解我所支持的业务,与他们一样深入理解。我发现这样做使我成为一个非常有效的数据分析师,进而使我成为一个不可或缺的团队成员。它还使我的工作更有成就感,因为我可以亲眼看到我所带来的价值。我不能过分强调这种方法对我职业生涯的重要性。如果你能从这篇文章中带走一件事,那就是它。
保持你的技术知识更新
数据分析的技术格局不断演变,随着越来越多的公司认识到从这些数据中获取洞察的巨大价值,这一进程正在以光速增长。人工智能、机器学习、云计算、Hadoop 集群、Apache Spark、数据湖、数据管道、数据织物、数据网格、数据可视化等新技术、架构和分析方法层出不穷。掌握这些技术显然是不可能的,但我强烈建议你对它们的功能及其在整体数据分析中的角色形成概念性的理解。我几乎可以保证,你会发现通过掌握其中的一项新技能获得极大的机会。此外,保持对数据和分析领域顶尖趋势的关注也很重要。备受尊敬的 Gartner 每年都会通过其“数据和分析领域的顶尖趋势”做出出色的记录。构建和维护这个知识库将有助于你全面理解数据分析的各个方面,并使你在这个不断发展的领域保持相关性。记住,保持好奇心!
结论
这篇文章是我一直想写的。在我的职业生涯中,我记下了那些在刚开始作为数据分析师时希望自己知道的事情。这个列表随着时间的推移不断增长、缩小、演变和明确。随着数据和数据分析的迅猛发展,我分享自己想法的紧迫感增加了,因为我只能想象自己在今天的环境中成为数据分析师时会感到的复杂性。感谢你花时间阅读这篇文章,我真心希望你能从中找到一些价值。祝你在最终选择的职业道路上万事如意。
我喜欢写关于影响数据分析领域的主题。如果你想关注我未来的文章,请在Medium上关注我。感谢。
我们是否可以轻松解释过于复杂的模型?
生成反事实解释变得容易多了,但什么是反事实解释,我该如何使用它们?
·
关注 发布于 Towards Data Science · 12 分钟阅读 · 2023 年 9 月 28 日
–
图像由 Illusion Diffusion 模型生成,CFNOW 文本作为幻觉(试着眯眼并从一定距离观察) | 作者使用 Stable Diffusion 模型(许可) 生成的图像
本文基于以下文章:www.sciencedirect.com/science/article/abs/pii/S0377221723006598
这里是 CFNOW 仓库的地址:github.com/rmazzine/CFNOW
如果你正在阅读这篇文章,你可能已经知道人工智能(AI)在我们今天的世界中变得多么关键。然而,需要注意的是,虽然看似有效的新颖机器学习方法及其广泛的普及可能会导致不可预见的/不良的后果。
这就引出了为什么可解释人工智能(XAI)在确保人工智能的伦理和负责任发展中是至关重要的。这一领域表明,解释包含数百万甚至数十亿参数的模型并非易事。对此的回答是多方面的,因为有许多方法揭示模型的不同方面,LIME [1] 和 SHAP [2] 是流行的例子。
然而,这些方法生成的解释复杂度可能导致复杂的图表或分析,这可能会导致那些未充分了解的专家产生误解。绕过这种复杂性的一个可能方法是一个简单自然的解释方法,称为反事实解释 [3]。
反事实解释利用了自然的人类行为来解释事物——创建“替代世界”,在这些世界中,通过改变一些参数可以改变结果。这是一种常见的做法,你可能已经做过类似的事情——“如果我早点起床,我就不会错过公交车”,这种解释以直接的方式突出结果的主要原因。
更深入地探讨,反事实不仅仅是简单的解释;它们可以作为变更的指导,帮助调试异常行为,并验证某些特征是否可能修改预测(虽然对评分的影响不大)。这种多功能性强调了解释你的预测的重要性。这不仅仅是负责任的人工智能问题;它也是改进模型并在预测范围之外使用它们的途径。反事实解释的一个显著特征是它们以决策为驱动,使其与预测变化直接相关 [6],这与 LIME 和 SHAP 更适合于解释评分的特性不同。
鉴于明显的好处,人们可能会想知道为什么反事实解释没有更受欢迎。这是一个合理的问题!反事实解释广泛采用的主要障碍有三方面 [4, 5]: (1) 缺乏用户友好且兼容的反事实生成算法,(2) 算法在生成反事实方面的低效,(3) 以及缺乏全面的可视化表现。
但我有一些好消息要告诉你!一个新的包,CFNOW(CounterFactuals NOW 或 CounterFactual Nearest Optimal Wololo),正致力于解决这些挑战。CFNOW 是一个多功能的 Python 包,能够为各种数据类型(如表格、图像和文本(嵌入)输入)生成多个反事实。它采用模型无关的方法,只需要最少的数据——(1)实际点(需要解释的点)和(2)预测函数。
此外,CFNOW 的结构允许开发和集成基于自定义逻辑的新策略来查找和微调反事实。它还具有 CounterPlots,这是一种用于视觉化表示反事实解释的新策略。
CFNOW 的核心是一个框架,它将数据转换为 CF 生成器可以处理的单一结构。接着,通过一个两步过程找到并优化反事实。为了防止陷入局部最小值,包实现了 Tabu Search,这是一种数学启发式方法,使其能够探索新的区域,以便在这些区域中可能更好地优化目标函数。
本文的后续部分将集中展示如何高效利用 CFNOW 生成表格、图像和文本(嵌入)分类器的解释。
表格分类器
在这里,我们展示了通常的内容,你有一个包含多种数据类型的表格数据。在下面的示例中,我将使用一个数据集,该数据集具有数值连续型、分类二元型和分类独热编码数据,以展示 CFNOW 的全部功能。
首先,你需要安装 CFNOW 包,要求 Python 版本高于 3.8:
pip install cfnow
(这是该示例的完整代码:
colab.research.google.com/drive/1GUsVfcM3I6SpYCmsBAsKMsjVdm-a6iY6?usp=sharing
)
在第一部分中,我们将使用成人数据集创建一个分类器。然后,这里没有太多新鲜事:
import warnings
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
warnings.filterwarnings("ignore", message="X does not have valid feature names, but RandomForestClassifier was fitted with feature names")
我们导入基本包来构建分类模型,同时我们还会禁用与在没有列名的情况下进行预测相关的警告。
然后,我们继续编写分类器,其中类 1 表示收入低于或等于 50k(<=50K),类 0 表示高收入。
# Make the classifier
import warnings
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
warnings.filterwarnings("ignore", message="X does not have valid feature names, but RandomForestClassifier was fitted with feature names")
# Load the Adult dataset
dataset_url = "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
column_names = ['age', 'workclass', 'fnlwgt', 'education', 'education-num', 'marital-status',
'occupation', 'relationship', 'race', 'sex', 'capital-gain', 'capital-loss',
'hours-per-week', 'native-country', 'income']
data = pd.read_csv(dataset_url, names=column_names, na_values=" ?", skipinitialspace=True)
# Drop rows with missing values
data = data.dropna()
# Identify the categorical features that are not binary
non_binary_categoricals = [column for column in data.select_dtypes(include=['object']).columns
if len(data[column].unique()) > 2]
binary_categoricals = [column for column in data.select_dtypes(include=['object']).columns
if len(data[column].unique()) == 2]
cols_numericals = [column for column in data.select_dtypes(include=['int64']).columns]
# Apply one-hot encoding to the non-binary categorical features
data = pd.get_dummies(data, columns=non_binary_categoricals)
# Convert the binary categorical features into numbers
# This will also binarize the target variable (income)
for bc in binary_categoricals:
data[bc] = data[bc].apply(lambda x: 1 if x == data[bc].unique()[0] else 0)
# Split the dataset into features and target variable
X = data.drop('income', axis=1)
y = data['income']
# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize a RandomForestClassifier
clf = RandomForestClassifier(random_state=42)
# Train the classifier
clf.fit(X_train, y_train)
# Make predictions on the testing set
y_pred = clf.predict(X_test)
# Evaluate the classifier
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
使用上面的代码,我们创建了一个数据集,对其进行预处理,创建了一个分类模型,并对测试集进行了预测和评估。
现在,让我们选择一个点(测试集中的第一个)并验证其预测:
clf.predict([X_test.iloc[0]])
# Result: 0 -> High income
现在是时候使用 CFNOW 来计算我们如何通过最小修改特征来改变这个预测:
from cfnow import find_tabular
# Then, we use CFNOW to generate the minimum modification to change the classification
cf_res = find_tabular(
factual=X_test.iloc[0],
feat_types={c: 'num' if c in cols_numericals else 'cat' for c in X.columns},
has_ohe=True,
model_predict_proba=clf.predict_proba,
limit_seconds=60)
上面的代码中,我们:
-
factual
将实际实例添加为 pd.Series -
feat_types
指定特征类型(“num”表示数值连续型,“cat”表示分类变量) -
has_ohe
指示我们是否有 OHE 特征(它通过汇总那些具有相同前缀并以下划线开头的特征来自动检测 OHE 特征,例如,country_brazil,country_usa,country_ireland)。 -
model_predict_proba
包含预测函数 -
limit_seconds
定义了运行的总时间阈值,这一点很重要,因为微调步骤可能会无限期继续(默认是 120 秒)。
然后,经过一段时间,我们可以首先评估最佳反事实的类别(cf_res.cfs
的第一个索引)。
clf.predict([cf_obj.cfs[0]])
# Result: 1-> Low income
这里出现了一些与 CFNOW 的不同之处,由于它还集成了 CounterPlots,我们可以绘制它们的图表,并获得更多有洞察力的信息,如下所示:
CounterShapley 图表 | 图片由作者提供
下面的 CounterShapley 图显示了每个特征在生成反事实预测中的相对重要性。在这里,我们得到了一些有趣的见解,显示 marial_status(如果组合在一起)占 CF 类别贡献的 50%以上。
我们的 CF 的贪婪图表 | 图片由作者提供
贪婪图表显示的内容与 CounterShapley 非常相似,主要区别在于变化的顺序。虽然 CounterShapley 没有考虑任何特定的顺序(使用 Shapley 值计算贡献),贪婪图表使用最贪婪的策略来修改实际实例,每一步都改变对 CF 类别贡献最大的特征。这在某些情况下可能很有用,即在贪婪的方式下给出一些指导(每一步选择实现目标的最佳方法)。
我们的 CF 的星座图 | 图片由作者提供
最后,我们有了最复杂的分析,即星座图。尽管它看起来令人望而却步,但其实很容易解释。每个大的红点代表一个特征的单独变化(相对于标签),而小的点代表两个或多个特征的组合。最后,大的蓝点代表 CF 评分。在这里,我们可以看到,获得这些特征的 CF 的唯一方法是将它们全部修改为各自的值(即,没有子集能生成 CF)。我们还可以深入探讨并研究特征之间的关系,可能会发现有趣的模式。
在这种特定情况下,有趣的是观察到,如果这个人是女性、离婚且有一个孩子,预测的高收入会发生变化。这一反事实可以引发对不同社会群体经济影响的进一步讨论。
图像分类器
如前所述,CFNOW 可以处理多种数据类型,因此它也可以为图像数据生成反事实。然而,对于图像数据集来说,拥有反事实意味着什么呢?
响应可能会有所不同,因为生成反事实的方法有多种。它可以是用随机噪声替换单个像素(对抗攻击使用的方法),也可以是更复杂的方法,涉及先进的分割技术。
CFNOW 使用了一种名为 quickshift 的分割方法,这是一种可靠且快速的“语义”分段检测方法。然而,可以集成(我建议你这样做)其他分割技术。
仅靠分段检测不足以生成反事实解释。我们还需要修改这些分段,用修改过的版本替换它们。对于这种修改,CFNOW 在 replace_mode
参数中定义了四种选项,我们可以选择:(默认)blur
——为替换的分段添加模糊滤镜,mean
——用平均颜色替换分段,random
——用随机噪声替换,inpaint
——基于邻域像素重建图像。
如果你想要完整的代码,可以在这里找到:
colab.research.google.com/drive/1M6bEP4x7ilSdh01Gs8xzgMMX7Uuum5jZ?usp=sharing
接下来,我将展示 CFNOW 对这种数据类型的代码实现:
首先,再次,如果你还没有安装 CFNOW 包,请安装它。
pip install cfnow
现在,让我们添加一些额外的包来加载预训练模型:
pip install torch torchvision Pillow requests
那么,让我们加载数据,加载预训练模型,并创建一个与 CFNOW 必须接收的数据格式兼容的预测函数:
import requests
import numpy as np
from PIL import Image
from torchvision import models, transforms
import torch
# Load a pre-trained ResNet model
model = models.resnet50(pretrained=True)
model.eval()
# Define the image transformation
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
# Fetch an image from the web
image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Sunflower_from_Silesia2.jpg/320px-Sunflower_from_Silesia2.jpg"
response = requests.get(image_url, stream=True)
image = np.array(Image.open(response.raw))
def predict(images):
if len(np.shape(images)) == 4:
# Convert the list of numpy arrays to a batch of tensors
input_images = torch.stack([transform(Image.fromarray(image.astype('uint8'))) for image in images])
elif len(np.shape(images)) == 3:
input_images = transform(Image.fromarray(images.astype('uint8')))
else:
raise ValueError("The input must be a list of images or a single image.")
# Check if a GPU is available and if not, use a CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
input_images = input_images.to(device)
model.to(device)
# Perform inference
with torch.no_grad():
outputs = model(input_images)
# Return an array of prediction scores for each image
return torch.asarray(outputs).cpu().numpy()
LABELS_URL = "https://raw.githubusercontent.com/anishathalye/imagenet-simple-labels/master/imagenet-simple-labels.json"
def predict_label(outputs):
# Load the labels used by the pre-trained model
labels = requests.get(LABELS_URL).json()
# Get the predicted labels
predicted_idxs = [np.argmax(od) for od in outputs]
predicted_labels = [labels[idx.item()] for idx in predicted_idxs]
return predicted_labels
# Check the prediction for the image
predicted_label = predict([np.array(image)])
print("Predicted labels:", predict_label(predicted_label))
大部分代码工作与构建模型、获取数据和调整数据有关,因为要用 CFNOW 生成反事实,我们只需要:
from cfnow import find_image
cf_img = find_image(img=image, model_predict=predict)
cf_img_hl = cf_img.cfs[0]
print("Predicted labels:", predict_label(predict([cf_img_hl])))
# Show the CF image
Image.fromarray(cf_img_hl.astype('uint8'))
在上面的示例中,我们使用了所有默认的可选参数,因此,我们使用 quickshift 对图像进行分割,并用模糊的图像替换这些分割区域。结果,我们得到了以下的实际预测:
实际图像被分类为“雏菊” | 图像标题:向日葵(Helianthus L)。Słonecznik,来自 Pudelek(由 Yzmo 和 Vassil 编辑)来自 Wikimedia,根据 GNU 自由文档许可证 第 1.2 版
到以下内容:
CF 图像被分类为“蜜蜂” | 图像标题:向日葵(Helianthus L)。Słonecznik,来自 Pudelek(由 Yzmo 和 Vassil 编辑)来自 Wikimedia,根据 GNU 自由文档许可证 第 1.2 版
那么,这项分析的结果是什么呢?实际上,图像反事实可以成为极其有用的工具,以检测模型如何进行分类。这可以应用于以下情况:(1)我们想验证模型为何做出正确分类——确保其使用了正确的图像特征:在这种情况下,尽管模型将向日葵误分类为雏菊,但我们可以看到,模糊化花朵(而不是背景特征)会使其更改预测。它还可以(2)帮助诊断误分类的图像,这可能为图像处理和/或数据采集提供更好的洞察。
文本分类器
最后,我们有基于嵌入的文本分类器。尽管简单的文本分类器(使用更像表格数据的数据结构)可以使用表格反事实生成器,但基于嵌入的文本分类器,这一点不那么明确。
理由是嵌入具有可变数量的输入和单词,这些都可以显著影响预测分数和分类。
CFNOW 通过两种策略解决这个问题:(1)通过移除证据或(2)通过添加反义词。第一种策略很简单,为了测量每个单词对文本的影响,我们只需移除它们并查看哪些需要移除以翻转分类。而添加反义词,我们可以可能保持语义结构(因为移除一个单词可能会严重损害语义结构)。
然后,下面的代码展示了如何在这个上下文中使用 CFNOW。
如果你想要完整的代码,可以在这里查看:
colab.research.google.com/drive/1ZMbqJmJoBukqRJGqhUaPjFFRpWlujpsi?usp=sharing
首先,安装 CFNOW 包:
pip install cfnow
然后,安装文本分类所需的包:
pip install transformers
然后,如前面部分所述,首先我们将构建分类器:
from transformers import DistilBertTokenizer, DistilBertForSequenceClassification
from transformers import pipeline
import numpy as np
# Load pre-trained model and tokenizer for sentiment analysis
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = DistilBertTokenizer.from_pretrained(model_name)
model = DistilBertForSequenceClassification.from_pretrained(model_name)
# Define the sentiment analysis pipeline
sentiment_analysis = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
# Define a simple dataset
text_factual = "I liked this movie because it was funny but my friends did not like it because it was too long and boring."
result = sentiment_analysis(text_factual)
print(f"{text_factual}: {result[0]['label']} (confidence: {result[0]['score']:.2f})")
def pred_score_text(list_text):
if type(list_text) == str:
sa_pred = sentiment_analysis(list_text)[0]
sa_score = sa_pred['score']
sa_label = sa_pred['label']
return sa_score if sa_label == "POSITIVE" else 1.0 - sa_score
return np.array([sa["score"] if sa["label"] == "POSITIVE" else 1.0 - sa["score"] for sa in sentiment_analysis(list_text)])
对于这段代码,我们将看到我们的事实文本具有高置信度(≥0.9)的 NEGATIVE 情感,然后让我们尝试为其生成反事实:
from cfnow import find_text
cf_text = find_text(text_input=text_factual, textual_classifier=pred_score_text)
result_cf = sentiment_analysis(cf_text.cfs[0])
print(f"CF: {cf_text.cfs[0]}: {result_cf[0]['label']} (confidence: {result_cf[0]['score']:.2f})")
使用上述代码,只需更改一个单词(but),分类就从 NEGATIVE 变为 POSITIVE,并且置信度很高。这展示了反事实如何有用,因为这些最小的修改可以对理解模型如何预测句子和/或帮助调试不良行为产生影响。
结论
这是一篇对 CFNOW 和反事实解释的(相对)简要介绍。关于反事实的文献非常广泛(且不断增加),如果你想深入了解,必读的开创性文章是由(我的博士生导师,大卫·马滕斯教授)撰写的[3],这是对反事实解释有更好介绍的绝佳方式。此外,还有由 Verma 等人撰写的很好的综述[7]。总之,反事实解释是一种简单且方便的方式来解释复杂的机器学习算法决策,如果正确应用,它们还能做到远超过解释的效果。CFNOW 可以提供一种简单、快速和灵活的方式来生成反事实解释,使从业者不仅能解释,还能最大限度地利用数据和模型的潜力。
参考文献:
[1] — github.com/marcotcr/lime
[2] — github.com/shap/shap
[3] — www.jstor.org/stable/26554869
[4] — www.mdpi.com/2076-3417/11/16/7274
[5] — arxiv.org/pdf/2306.06506.pdf
[6] — arxiv.org/abs/2001.07417
[7] — arxiv.org/abs/2010.10596
作为数据科学家,是什么激励了你?
·
关注 发布于 前往数据科学 ·发送为 新闻通讯 ·3 分钟阅读·2023 年 1 月 5 日
–
就这样,新的一年到了!我们希望你们已经享受了 2023 年的头几天。
我们知道许多数据科学家在这一年开始新的冒险和雄心勃勃的项目,而每一次新的尝试也是提升我们技能或获取新技能的机会。
学习是任何形式的成长的核心,无论是职业还是其他,但还有许多其他目标激励着我们的读者。为了帮助那些刚刚入门(或考虑入门)的人,我们的 1 月版提供了一系列资源来帮助你成为更好的学习者。
作为对该总结的补充,我们将今年的首个变量献给近期的文章,这些文章将激励你采取行动,并为你提供在未来几个月中探索的新想法。享受吧!
-
利用数据的力量推动环境变化。没有数据科学家可以单独解决气候危机,这就是为什么扩大对气候问题敏感的从业者社区如此重要。梅布里特·席林格通过一篇 TDS 首发文章,为更好地理解气候变异性整合了物理学、统计学和时间序列分析,为这一努力做出了贡献。
-
几个简单的决定可以对你的职业产生重大累积效果。新年的决心往往是宏大的且引人注目的——而且到二月份就容易被遗忘。相反,穆尔塔扎·阿里提出了 10 个具体的建议——从学习设计用户研究到选择个人项目——这些建议可以帮助你成为一个更强大、更全面的数据科学家。
-
**是时候推动角色转变了吗?**如果你是一个数据分析师,并且把自己看作未来的数据科学家,玛丽·纽豪瑟的指南是必读的:它涵盖了这些角色之间转换的方方面面。(如果你考虑的职业变动是其他类型的,这也是一个非常有用的资源。)
-
更具多样性的科技领域不会在没有行动的情况下到来。你是从事数据工作的专业人士,想知道如何在组织中促进包容性吗?托马斯·A·多费尔关于多样化团队好处的入门指南是一个很好的起点,可能会帮助你与利益相关者展开重要的对话。
-
不仅要在解决问题上提高能力 — 还要在预防问题上有所进步。对于许多为内部(甚至可能是外部)用户开发数据产品的你们来说,让事情顺利进行不是一些平凡的活动;它正是你工作的核心。玛丽安·诺丁 的最新文章探讨了数据漂移和比特腐蚀的根本原因,并解释了如何以长期可持续性为目标来应对这些问题。
如果你在假期后充满了额外的精力—或者至少日程还不满,我们鼓励你抽出一些时间来关注这些其他近期的亮点:
-
卡罗利娜·本托 带来了一份新的易于跟随(同时也非常详尽)的教程,这次讲解了 ROC 分析和曲线下面积。
-
关于 AI 生成艺术的辩论在 2023 年肯定会继续激烈;史蒂夫·丹尼斯 的文章 讨论了削弱这一技术成就的伦理紧张关系,以及解决这些问题的思路。
-
现在还不算晚,可以再回顾一下 2022 年—至少像 普鲁卡尔帕 的文章一样有洞察力,她评估了 她自己对现代数据栈未来的预测。
-
图形机器学习在来年会走向何方? 迈克尔·加尔金 介绍了你需要跟踪的最新趋势和发展,这些在这个不断变化的领域中至关重要。
一如既往,感谢你对我们工作的支持。如果你希望帮助 TDS 在 2023 年及以后继续发布优质文章,请考虑 成为 Medium 会员。
直到下次 Variable,
TDS 编辑部
什么是生命周期评估?LCA
了解生命周期评估如何帮助企业评估产品在其整个生命周期中的环境影响并改善可持续性。
·
关注 发布于 数据科学导向 ·12 min read·2023 年 1 月 18 日
–
什么是生命周期评估?—(作者提供的图片)
随着消费者环保意识的提高,企业必须优先考虑可持续性以保持竞争力。
生命周期评估(LCA)评估产品在其整个生命周期中的环境影响,从原材料提取到处置。
生产我的 T 恤需要多少水?
生命周期评估旨在识别和量化产品的环境影响,以便报告和支持可持续性倡议。
如何使用数据分析来估算你在 Zara 购买的便宜 T 恤的环境影响?
你需要来自多个来源的数据,以追踪产品在价值链中的影响直到其生命周期结束。
资源使用和价值链中的 CO2 排放 ——(图像作者提供)
本文展示了数据分析如何通过从多个系统中提取和处理数据来支持生命周期评估(LCA),以进行诊断和模拟场景。
💌 免费订阅最新文章:通讯
📘 供应链分析的完整指南:分析备忘单
**I. Assessment in four steps**
**1\. Goal and scope definition**
Define the goals and scope of this assessment.
**2\. Inventory Analysis**
Gather data on the materials, energy, and other resources used
**3\. Interpretation and evaluation**
Assessing the overall environmental performance of the product
**II. Life Cycle Assessment for Advanced Reporting**
**1\. ESG reporting**
Report the Environmental, Social and Governance of your company
**2\. Data Analytics to Fight GreenWashing**
Detect false claims of sustainability using public data
**3\. Business Intelligence for LCA**
Methodologies to collect and process from multiple sources
**III. Next Steps**
**1\. Simulate different scenarios with a Digital Twin**
What is the impact of localizing your production on your LCA?
**2\. Conduct Further Analysis with Brightway2**
Open source librairies with publicly available databases
**3\. Sustainable Supply Chain App**
Design the optimal manufacturing facilities to minimize CO2 emissions
四个步骤的评估
我们假设你是快时尚零售公司中的数据科学家,与你的可持续发展部门合作以实施自动化的可持续性报告。
我们希望通过生命周期评估实现什么?
第一步:目标和范围定义
要启动我们的生命周期评估(LCA),我们需要定义评估的目标和范围。
在快时尚零售公司中生产和销售一件 T 恤的环境影响是什么?
这包括识别正在研究的产品、关注的环境影响以及功能单位*(用于比较不同产品或服务的测量单位)*。
生命周期评估的范围包括时间框架、生命周期阶段、地理边界和功能单位 ——(图像作者提供)
-
确定被评估的产品及其预期用途
例如:包括所有尺码的常规版 T 恤
-
确定产品生命周期中要纳入评估的特定阶段:从原材料提取到处置。
-
确定评估的地理范围:生产设施的位置、运输路线和最终处置地。
原材料提取和生产地点为印度
储存、商店配送和欧洲的处置
-
确定评估的时间框架:评估期的开始和结束日期。
从 2021 年 1 月 1 日到 2022 年 1 月 1 日
-
定义功能单位,这是比较不同产品环境影响的标准度量。
销售单位:一件 T 恤
确保所有相关利益相关者对评估范围达成一致。
这确保生命周期评估结果有意义且具有代表性,不会受到挑战。
从系统中提取和处理数据以填充 LCA 报告 ——(图像作者提供)
该产品将在你的不同系统中与一个(或多个)SKU 代码关联(ERP、WMS、TMS)
-
您可能会有多个代码用于不同尺码和颜色的 T 恤。
-
代码在不同系统之间可能有所不同(SKU 生产代码、销售包装中的 SKU 等):确保您拥有一致的 主数据 以跟踪价值链中的物品。
从原材料到成品,您的价值链涉及仓库、工厂和货运操作。
对于每个生命周期阶段,您可能会有不同的数据源/系统
原材料在印度采购,用于在孟加拉国制造并在欧洲零售。
地理边界可以由源系统和交易信息来定义
确定时间范围可能具有挑战性,并会影响您的评估结果
-
我们是否在讨论时间范围内销售的所有产品?
如果是,这是否意味着我们必须查看 生产 、运输和仓储活动,这些活动发生在开始日期之前?
请注意,范围可以根据您的需求和期望的举措来进行更详细或更简单的定义,以便从结果中受益。
对于此分析,您手头上有哪些数据?
第 2 步:库存分析
第二步是收集有关材料、能源和其他资源使用情况以及整个产品或服务生命周期中产生的废料的数据。
简化周期下的库存分析用于生命周期评估 —(图片由作者提供)
原材料 您的 T 恤由在印度种植和加工的 100%棉花制成
(表格由作者提供)
您现在可以量化每个功能单元排放的 CO2 以及使用的能源和水。
💡 原材料种植的影响
-
我们有 1kg 原材料 = 1 功能单元。
-
棉花和消耗的公用设施的数量可以由你的供应商估算或测量。
原材料转化的影响是什么?
生产 T 恤在你位于印度的工厂生产。
(作者提供的表格)
运输 你的 T 恤在印度生产,通过海运和公路运输到欧洲,
(作者提供的表格)
💡 你的物流网络的影响
-
海洋运输的能源和排放数据极其不稳定,取决于船只、年份和航运路线。你的货运代理应验证*(或提供)*这些数据。
-
运输的 CO2 排放可以估算其他运输方式(路线、航空和铁路)的排放,如这个CO2 排放报告方法论的例子。
-
对于水和电力消耗、CO2 排放以及产生的废物,仓库操作也可以考虑。
T 恤售出后会发生什么?
使用和处置 你的产品在市场的国家内使用*(使用和处置)*。
T 恤在被处理前使用两年。
-
洗涤和烘干的能源消耗:100 MJ/件 T 恤
-
洗涤和烘干的水消耗:500 L/件 T 恤
-
电力生成的排放:10 kg CO2e/件 T 恤
T 恤在其销售的国家被丢弃在填埋场。
- 分解排放:5 kg CO2e/件 T 恤
很好,现在我们已经覆盖了整个生命周期。
第 3 步:影响评估
现在我们已经收集了每个步骤的数据,我们可以开始评估功能单元*(1 件 T 恤)*的环境影响。
-
空气、水和土壤
-
人体健康和生态系统健康
-
能源消耗:870 MJ 58%在 生产过程中 消耗
-
温室气体排放:46 kg CO2e 大部分排放发生在 生产过程中
-
水消耗:3,500 L
57%在 生产过程中 消耗
-
固体废物:0.5 kg
在 生产过程中 产生的
-
空气污染:0.8 g SOx 和 0.5 g NOx 排放
运输过程中 排放
第 4 步:解释和评估
这是评估产品整体环境性能并识别改进领域和潜在缓解策略的过程。
生命周期开发评估的解释和评估的四个步骤 — (作者提供的图片)
与行业标准的比较 影响评估结果可以与行业标准或基准进行比较,以查看 T 恤在环境表现上如何与类似产品相比。
热点识别
影响评估结果可用于识别 T 恤在环境影响上最显著的“热点”。
在我们的例子中,这些热点是生产和运输中的温室气体排放和能源消耗。
💡 自动化识别的诊断分析
如果你已经实施了数据管道以收集、处理和存储库存数据,可以实现诊断分析工具和方法进行自动化分析
-
管理数千个具有不同价值链的 SKU
-
实施自动化规则以进行监控、警报和根本原因分析,以回答诸如
为什么 SKU 132897–98 的 CO2 排放增加了 20%?
潜在的缓解策略
根据识别出的热点,可以制定潜在的缓解策略,以减少 T 恤的环境影响。
-
使用可再生能源进行生产设施的运作。
-
本地化生产,以减少工厂和市场之间的运输距离。
-
与使用替代燃料或拥有环保车队的货运公司合作,以减少每公里的 CO2 排放
-
进行供应链网络优化研究,重点是通过选择合适的供应商和工厂位置来减少环境影响
持续改进
解释和评估结果应用于持续改进产品或过程的环境性能。
当然,你必须考虑环境影响与其他方面(如成本和性能)之间的权衡,以减少业务影响。
💡 更多细节,
在设计供应链网络时,你是否考虑了需求的波动?
towardsdatascience.com ## 什么是供应链分析?
利用数据分析提高运营效率,通过数据驱动的诊断和战略决策来改进…
towardsdatascience.com
现在你已经实施了数据收集和处理的过程来生成洞察,你可以开始编写可持续性报告。
高级报告的生命周期评估
ESG 报告的生命周期评估
环境、社会和治理(ESG)报告是一种公司用来披露其环境足迹、治理结构和社会影响的方法论。
ESG 支柱展示 — (图片由作者提供)
随着利益相关者越来越要求企业社会责任(CSR),报告已成为公司长期战略中的关键部分。
你如何利用数据分析来支持 ESG 报告?
环境(E)报告的核心在于生命周期评估,因为你需要报告从原材料采购到店铺交付的产品影响。
ESG 报告的三个主要支柱 — (图片由作者提供)
环境部分的指标取决于生命周期评估中包含的参数。
💡 更多详情,请见
什么是 ESG 报告?
利用数据分析进行全面而有效的公司环境、社会和治理报告
towardsdatascience.com
你听说过“绿色洗涤”吗?
什么是绿色洗涤,我们如何利用分析来检测它
当你试图准确报告运营的环境影响时,其他公司却在撒谎。
使用数据分析来挑战可持续性报告。
一些公司对产品的环境效益做出误导性声明,以传达虚假的可持续性形象。
绿色洗涤的 5 种罪恶 — (图片由作者提供)
这种修饰或隐藏虚假的做法,随着公司寻求环保消费者的关注,对组织和政府构成了挑战。
我们能否通过高级分析来对抗绿色洗涤?
用于检测环境报告中的“绿色洗涤”的高级分析 — (图片由作者提供)
我们可以将数据科学与生命周期评估方法结合起来,检测这些欺诈行为
-
公开数据:财务和可持续性报告、足迹数据库、社交媒体
-
像 NLP、预测或统计模型这样的高级分析模型来检测欺诈行为
💡 更多详情,请见
什么是绿色洗涤?以及如何利用分析来检测它?
探索数据分析如何帮助我们检测和预防绿色洗涤,并促进真正的可持续性。
towardsdatascience.com
从多个系统中收集和处理数据的最佳实践是什么?
生命周期评估中的商业智能
商业智能是一个利用软件和服务将数据转化为支持决策的可操作情报的过程。
商业智能过程五步法——(作者提供的图片)
由于您的生命周期评估依赖于从多个来源收集和处理数据,您需要一种方法来实现自动化管道。
如何自动化这些数据的收集和处理?
通过构建数据架构,您可以检索更新的数据和指标,而不是使用估算或平均值。
从多个来源中心化提取数据——(作者提供的图片)
-
管理您工厂的系统可能不会提供每单位的能源、水使用或废物生成信息。
使用如 Excel 文件中的能源账单等外部来源
-
您的供应商可以提供用于棉花种植的Excel 报告中的能源和水使用数据,这些数据将用于您的报告
-
一些货运代理商有API来提取每次运输的路线信息、排放量和燃料消耗
这一架构将减少手动工作量,并通过使用最新的参数和输入数据提高报告的准确性。
如何使用分析解决方案创建具有统一数据的中央真实来源?
商业智能工具结合了各种应用,包括数据仓库、发现和可视化。
结合来自多个来源的数据的数据仓库——(作者提供的图片)
BI 解决方案与这些系统的交互方式:
-
处理并将获取的数据转换为单一的统一来源
-
构建用户友好的报告、图表和地图
💡 更多细节,
towardsdatascience.com ## 什么是商业智能?
发现适用于供应链优化的数据驱动决策工具。
[towardsdatascience.com
报告之后,下一步是什么?
您的公司可以利用结果和见解来实施具有可持续性举措的路线图。
您可以利用数据模拟这些举措的影响;接下来的部分将介绍如何操作。
下一步
本文主要集中在数据分析如何支持数据收集、处理和通过诊断工具进行可视化。
如果我们想估算再工程解决方案的影响呢?
使用数字双胞胎模拟不同场景
数字双胞胎是物理对象或系统的数字化复制品。
使用 Python 的数字双胞胎示例 — (图像由作者提供)
在这个数字世界中,您可以建模供应链中的每一个环节,包含成本、能源、排放和交货时间参数。
如果我们从英国的仓库向欧洲市场配送,会怎么样?
在头脑风暴潜在的脱碳策略时,您可以模拟它们对供应链的影响。
使用您的数字双胞胎模拟多个场景的示例 — (图像由作者提供)
例如,
-
如果我们将 生产 本地化,对物流成本和 CO2 排放会有什么影响?
-
实施一个物流网络来回收店内的二手物品成本是多少?
了解如何实施此解决方案的更多细节,
使用 Python 发现数字双胞胎:建模供应链网络、提升决策能力与优化运营。
towardsdatascience.com
您听说过供应链优化吗?
可持续供应链优化应用程序
可持续供应链优化是一种将成本效益与环境责任相结合的网络设计方法。
供应链可持续性应用程序的工作流程 — (图像由作者提供)
最小化 CO2 排放的最佳工厂组合是什么?
假设您想设计一个供应链网络以生产和交付产品到特定市场。
您有
-
每个市场的需求(单位/月)
-
一组潜在的工厂,包括其固定/可变成本、环境影响和位置
-
从工厂到每个市场的运输成本和环境影响
如果我们想要最小化 CO2 排放,成本影响会是什么?
多场景模拟 — (图像由作者提供)
通过这个解决方案,你可以模拟多个场景,调整目标(例如,减少二氧化碳、成本或水使用),以获得最佳网络。
使用我的网络应用程序模拟场景 — [应用]
我开发了一个网络应用程序,可以模拟绿色转型的多个场景(减少二氧化碳排放、水使用等),以估算对整体生产成本的影响。
试试吧! 👇
访问应用程序进行尝试! — [应用]
关于我
在Linkedin和Twitter上与我联系。我是一名供应链工程师,利用数据分析来改善物流操作并降低成本。
如果你对数据分析和供应链感兴趣,请查看我的网站。
专注于数据科学、个人生产力、自动化、运筹学和可持续性的技术博客…
参考文献
-
“什么是供应链分析?”, 数据科学前沿, Samir Saci
-
“4 个影响深远的项目,开启你的供应链数据科学之旅”, 数据科学前沿, Samir Saci
-
可持续物流 — 减少仓储消耗品,个人博客, Samir Saci
-
“定义生命周期评估”, 全球发展研究中心
什么是卫星图像时间序列?
原文:
towardsdatascience.com/what-is-a-satellite-image-time-series-c0516c534ba9
解决当前和未来全球挑战的基础
·发表于 Towards Data Science ·阅读时间 7 分钟·2023 年 3 月 2 日
–
在上一篇 文章中,我详细讨论了有关处理地理空间栅格数据的所有内容。这种数据与特定地理区域相关。然而,仅分析一个栅格文件无法研究该区域随时间的变化。本指南旨在介绍卫星图像时间序列,并解释为什么这些数据在应对地球当前和未来面临的挑战中至关重要。
介绍
卫星图像时间序列(SITS)可能是研究某个区域随时间变化的最重要资源:
SITS 是一组在不同时间从相同区域拍摄的卫星图像。
每张图像都存储为地理栅格文件。这些图像按日期排序,以便可以按顺序分析。这里展示的是一个作物区域的 SITS:
意大利伦巴第地区的作物区域卫星图像时间序列。图像来自 Copernicus Open Access Hub。
SITS 图像通常按固定间隔拍摄。这有助于以恒定的速度监测变化。上面的时间序列由 Sentinel-2 卫星每 5 天拍摄的图像组成,但其中一些图像已被删除,因为它们包含云,例如:
一些被删除的图像。图像来自 Copernicus Open Access Hub。
云层覆盖是卫星图像和 SITS 的一个严重问题,因为云层对 Sentinel-2 波段的反射效果很好。
Sentinel-2 捕获 13 个光谱波段,分为可见波段(较短波长)和红外波段(较长波长)。可见波段是我们能看到的,由红色、绿色和蓝色波段(可见波段)组成。其他波段可以获取有关下方区域的其他信息,但我们无法看到。这也是为什么 SITS 通常不是通过直接观察而是使用可以处理所有波段的不同算法进行分析的原因之一。
应用
卫星图像时间序列是未来全球挑战中广泛应用的宝贵信息来源。以下是一些例子:
农业
卫星图像时间序列在农业中极其有用,提供有关作物健康、生长和产量的信息。通过分析植被随时间的变化,农民可以做出关于灌溉、施肥和其他管理实践的明智决策。关键应用包括作物监测、产量预测、灌溉管理、病虫害检测和土地使用规划。
图片由 Timon Reinhard 拍摄,发布在 Unsplash 上
森林监测
卫星图像时间序列可以成为森林监测和管理的强大工具。通过追踪森林覆盖、健康和组成的变化,它们可以帮助识别关注区域并提供管理决策的信息。例如,SITS 可以用于跟踪森林覆盖的变化,帮助识别森林砍伐区域,并评估森林损失的范围和速度。因此,它们对于改善再造林、造林或森林恢复实践非常有用。
图片由 Sebastian Unrau 拍摄,发布在 Unsplash 上
气候监测
卫星图像时间序列可用于监测可能与气候变化相关的模式,并为气候研究和政策提供宝贵信息。它们可以用于监测海平面、海冰和雪覆盖的变化,追踪冰川和冰盖的移动,以及监测气候变化引起的植被变化。
图片由 Sophia Simoes 拍摄,发布在 Unsplash 上
城市规划
卫星图像时间序列可用于监测土地使用和覆盖的变化,提供有关城市增长、扩张和土地使用变化的信息。这些信息可用于规划和管理城市发展、基础设施和服务。此外,SITS 还可用于监测交通基础设施,如道路、高速公路和铁路,并评估其在城市地区的表现和影响。这有助于规划新的交通基础设施,优化现有网络,并评估交通对环境的影响。
照片由Andrea Cau提供,来自Unsplash
灾害响应
卫星图像可用于评估自然灾害如地震、洪水、飓风和野火造成的损害程度和严重性。SITS 可用于跟踪受影响地区的恢复情况,优先安排响应工作,并改善资源分配。
照片由Marc Szeglat提供,来自Unsplash
每个应用程序背后的主要思想是,卫星观测提供了理解地球变化的机会,识别这些变化的原因,并预测未来的变化。随着技术的进步和数据的增多,利用卫星图像来理解和解决全球挑战的可能性几乎是无限的。
SITS 分析
从非常实用的角度来看,SITS 通常以地理栅格文件的集合形式存储,其中文件名包含图像拍摄的日期。时间序列可以使用各种方法进行分析,具体取决于你想研究的变化。这些方法大多数需要使用 GIS 软件,如ArcGIS或QGIS,以及对相关领域的良好了解。尽管本指南是对 SITS 的介绍,但我可以简要介绍一些你可以尝试的技术:
图像差异
分析随时间变化的一种方法是减去不同时间拍摄的两张图像的像素值。这种技术称为图像差异,可以突出显示植被覆盖、土地使用和其他特征的变化。这是一种简单的技术,但可能足以完成一些简单的任务。然而,根据选择的波段进行差异计算时,图像差异可能会因为图像在不同条件下拍摄而突显变化,而不是真正的区域变化。减去属于同一时间序列的两个栅格的代码非常简单:
import rasterio as rio
first = rio.open("lombardia3/data2019/1208/20190308.tiff").read()
second = rio.open("lombardia3/data2019/1208/20190313.tiff").read()
diff = first - second
结果将类似于这样:
与前一张图像的差异。
黄色阴影突出显示与时间序列前一张图像相比变化较大的栅格部分。根据任务的不同,你可以选择减去哪些波段。此外,可以设置阈值以防止小变化被显示,仅突出显示较大的变化。
绘制波段
地理栅格的每个像素覆盖一定的平方米面积。可以绘制给定像素的波段,以显示它们随时间的变化。这是有用的,因为可以通过结合波段来量化该区域的变化。以下代码处理时间序列中的所有图像。然后,从最旧的图像到最新的图像,绘制左上角像素的不同波段的值:
在我的案例中,最终的折线图显示了该像素的 13 个波段从时间序列中的第一张图像到第十张图像的变化:
绘制特定位置的波段。
此外,你还可以使用波段值计算各种指数(在 这里 报告)。这些指数可以在时间序列中的每张图像上计算相同的像素。例如,归一化差异植被指数(NDVI)衡量卫星图像中植被的绿度和密度,其计算方式如下:
NDVI 公式。图像由 CodeCogs 生成。
在我的案例中(Sentinel-2 图像),NIR 波段是第 10 个波段,红色波段是第 4 个波段。我可以应用上述公式,并绘制 NDVI 随时间的变化:
绘制特定位置的 NVMI。
3D 神经网络
深度学习方法已成功应用于遥感应用。特别是,3D 神经网络(3D-NN)非常适合对卫星图像时间序列进行预测。3D-NN 是一种接受 3D 输入的神经网络,而 SITS 是一种三维输入,因为它是 2D 图像的集合。例如,I. Gallo 等人创建了一个 3D 特征金字塔网络模型,用于执行 Sentinel-2 图像时间序列的作物绘图[1]。他们制作的架构以 30 张图像作为输入,每张图像具有 48 × 48 像素和 13 个波段,并返回 48 × 48 的分割掩膜。输出的每个像素包含在该位置生长的作物类别。
3D 特征金字塔网络。图像来源于 I. Gallo 等人
我最近的研究方向是使用深度学习模型分析 SITS。如果你有具体问题,请随时在评论中提问。
结论
卫星图像时间序列可以通过多种卫星平台获得,包括 Landsat、MODIS 和 Sentinel。这些图像通常按照定期的间隔获取,从每日到每月不等,具体取决于卫星平台和特定应用。生成的图像序列可以用于多种目的,包括改进作物管理、跟踪森林健康、监测气候变化对环境的影响、规划城市基础设施,以及协助受自然灾害影响的地区。SITS 可以通过不同的方式进行分析,具体取决于你希望突出的变化。
除非另有说明,所有图像均为作者提供。
[1] I. Gallo, R. La Grassa, N. Landro, M. Boschetti, 使用 3D 特征金字塔网络和时间域类别激活间隔进行作物映射的 Sentinel 2 时间序列分析 (2021)
什么是时间序列单位根?
原文:
towardsdatascience.com/what-is-a-time-series-unit-root-dba24fa099f4
解答时间序列分析中的一个重要问题
·发布于数据科学前沿 ·阅读时间 7 分钟·2023 年 10 月 11 日
–
图片由Icons8 Team提供,来源于Unsplash
背景
单位根在时间序列和预测文献中时常出现(请原谅这个双关语)。
维基百科将单位根定义为:
“在概率论和统计学中,单位根是某些随机过程(如随机游走)的一个特征,这可能会在涉及时间序列模型的统计推断中引发问题。如果 1 是过程特征方程的根,则该线性随机过程具有单位根。这种过程是非平稳的,但不总是有趋势。”
是的,这对我来说也没什么意义……
然而,上述陈述让问题变得过于复杂,实际上单位根并不是一个难以理解的概念。
什么是平稳性?
概述
为了理解单位根,我们首先必须清楚地理解平稳性。我在之前的博客和 YouTube 视频中已经讲解过这个话题,但我们将快速回顾一下关键点。
对时间序列建模中平稳性需求的简单直观解释。
[towardsdatascience.com
一个平稳时间序列具有以下特性:
-
随时间的常数均值
-
随时间的常数方差(自协方差)
-
统计特性不变且一致
换句话说,时间序列在长期内既没有上升也没有下降趋势,其波动也没有随着时间的推移而增加或减少。
示例
以下是一个 Python 中非平稳时间序列的例子,其中均值和方差不断增加:
数据来源于 Kaggle并具有 CC0 许可证。
作者的代码 GitHub Gist。
由作者在 Python 中生成的图表。
通过差分(稳定均值)和对数变换(稳定方差),时间序列被转换为平稳。
有关这些变换的更多信息,请参见上面的博客或视频:
作者的代码 GitHub Gist。
由作者在 Python 中生成的图表。
注意图表中的均值和方差大致保持不变,并且在整个图表中没有变化。
我们为什么需要它?
平稳性的要求来源于我们如何构建预测模型。大多数模型,如ARIMA,要求数据来自相同的分布,以便能够拟合参数到潜在的分布上。
如果时间序列是平稳的,则具有一致的统计属性。这意味着数据点之间的联合分布不会改变,因此它们可以视为属于相同的分布。因此,这使我们能够拟合预测模型。
弱平稳与强平稳
我想讨论的最后一个概念是弱平稳和强平稳之间的区别。这不是非常重要,但对理解平稳性的概念非常有用。
-
弱平稳的: 如果均值和方差是恒定的,时间序列就是弱平稳的。
-
强平稳的:如果数据点的联合分布随时间不变,则时间序列是强平稳的。换句话说,它们属于相同的分布。*
起初,这个概念可能会让人感到困惑,但让我给你举个例子。如果我们的时间序列具有恒定的均值和方差,并且是从正态分布中生成的,那么它既是弱平稳的也是强平稳的。这是因为正态分布是两个参数的函数:均值和方差。
然而,有些情况下,均值和方差是恒定的,但数据点可能都属于不同的分布。第一个数据点可能是泊松分布,第二个可能是指数分布等。在这种情况下,它是弱平稳的但不是强平稳的。
如果你想了解更多关于弱平稳性与强平稳性的知识,可以查看 这里
单位根解释
平稳性 — 单位根链接
平稳性如何与单位根相关?好吧,如果我们的时间序列 包含单位根,那么它就是非平稳的。
大多数平稳性统计检验都是单位根检验,因为它们寻找单位根以确定时间序列在给定的置信水平下是否平稳。检验包括增强型迪基-福勒检验和菲利普斯-佩龙检验。
一个简单的例子
展示单位根的最佳方法是通过简单的 AR(1) 模型,自回归模型 带有 1 个滞后:
AR(1)。方程由作者在 LaTeX 中生成。
其中:
-
y*:是不同时间步的时间序列* t.
-
φ*:是第一个滞后项的系数。*
-
ε: 是均值为 0 和方差为 σ²* 的相同分布的随机变量的某种随机噪声。
上述方程可以通过递归将 AR(1) 模型重写为 MA(∞) (移动平均%20model.)) 过程:
AR(1) 递归替代。方程由作者在 LaTeX 中生成。
继续这种替代,我们得到:
AR(1) 作为 MA(∞)。方程由作者在 LaTeX 中生成。
上述方程可以简化为:
AR(1) 作为 MA(∞) 简化。方程由作者在 LaTeX 中生成。
现在,对于 AR(1) 方程,当 |φ| = 1.
对于具有更多滞后的模型,单位根变得更难定义,并依赖于特征方程(记住我们在维基百科定义中看到过这个!)。 不用过于担心这个问题,因为它超出了本文的范围,并且不需要掌握单位根的直观理解。
所以,在单位根存在的情况下,方程变为:
AR(1) 带单位根。方程由作者在 LaTeX 中生成。
你们中的一些人可能会将其视为著名的随机游走。上述方程可以递归形式重写为:
AR(1) 带单位根重写。方程由作者在 LaTeX 中生成。
现在,上述方程的均值(期望值)为:
时间序列的期望值。由作者在 LaTeX 中生成的方程。
这是因为 ε 来自标准正态分布,其均值为 0,方差为 σ²。因此,y_t 的期望值就是 y_0。这是好的,因为均值是恒定的,我们满足了平稳性的具体要求。
方差怎么样?
好吧,从上述方程来看,y_0 的值没有方差,但 ε 的方差是 σ²。因此,方差为:
由作者在 LaTeX 中生成的方程。
见 [这里](https://rinterested.github.io/statistics/time_series_var_cov.html#:~:text=AUTOREGRESSIVE%20ORDER%20ONE%20(AR%20(1,%5BXt%E2%88%921%5D.) 以获取上述公式的全面证明。
我们可以看到,方差依赖于 t。Var(y_1) 是 σ²,Var(y_2) 是 2σ² 等等。所以,方差随着时间的推移变大。
方差随着时间的推移在增加,因此根据定义,时间序列是非平稳的!
因此,我们得出结论,时间序列中存在单位根使其变得非平稳。
直观解释
再次考虑 AR(1) 方程:
AR(1)。由作者在 LaTeX 中生成的方程。
φ 告诉我们的是今天的值依赖于前一个值,加上一些来自标准正态分布的随机噪声。如果 φ < 1,那么时间序列将自然回归原点,如果我们的起点是 0, y_0 = 0。乘以一个小于 1 的数字会使其更小,最终趋向于 0。因为它总是会回归,所以它是可预测的,其方差不会随时间变化。
在单位根情况下,|φ| = 1,那么时间序列不会回归原点。如果我们有一段良好的正值运行,时间序列将简单地停留在那里,因为下一个预测等于最后一个值。
例如,假设我们有两个不同的 AR(1) 模型:
由作者在 LaTeX 中生成的方程。
方程 1 没有单位根,但 方程 2 有。假设这两个模型都从 y_0 = 0 开始。现在,经过一段时间,我们得到两个模型的 y_5 = 5。那么,接下来会发生什么呢?
由于误差 ε 的均值是 0,方程 1 将慢慢回归原点,因此 y_6 = 4,y_7 = 3.2 等等。然而,方程 2 将简单地保持在该水平上,y_6 = 5,y_7 = 5 等等。
因此,单位根的存在使时间序列在长期内不可预测,并受到系统“冲击”的影响。这就是为什么我们认为它是非平稳的。
总结与进一步思考
单位根是时间序列分析的一个基本概念,可以说是平稳性的基础,而平稳性是构建许多预测模型时最基本的要求。如果时间序列的特征方程的任何解为 1,则该时间序列具有单位根。这导致方差随时间变化,从而破坏了平稳性的一个要求。因此,大多数平稳性统计测试都会寻找单位根,以决定时间序列是否平稳。重要的是,我们不需要记住所有有关单位根的数学,而是要理解关键概念以及为什么它会导致非平稳时间序列!
参考文献及进一步阅读
另一个事项!
我有一个免费的新闻通讯,Dishing the Data,在其中我分享每周的技巧,以帮助你成为更优秀的数据科学家。没有“空话”或“点击诱饵”,只有来自实际数据科学家的纯粹可操作的见解。
[## Dishing The Data | Egor Howell | Substack
如何成为更优秀的数据科学家。点击阅读 Dishing The Data,由 Egor Howell 主办的 Substack 出版物…
与我联系!
解锁 Presto 分布式 SQL 的力量:全面指南
原文:
towardsdatascience.com/what-is-apache-presto-6986d1fbf951
关于 Presto 及其在数据环境中的使用,你需要知道的一切
·发表于 Towards Data Science ·7 分钟阅读·2023 年 1 月 6 日
–
图片由 Anish Prajapati 提供,来源于 Unsplash
Presto 是一个开源的分布式 SQL 引擎,适用于查询大量数据。它由 Facebook 于 2012 年开发,并随后根据 Apache 许可证开源。该引擎不提供自己的数据库系统,因此通常与知名的数据库解决方案一起使用,例如 Apache Hadoop 或 MongoDB。
Presto 是如何构建的?
Presto 的结构类似于传统的数据库管理系统(DBMS),它们使用所谓的大规模并行处理(MPP)。这使用了执行不同任务的不同组件:
-
客户端:客户端是每个查询的起始点和结束点。它将 SQL 命令传递给协调器,并从工作节点接收最终结果。
-
协调器:协调器从客户端接收要执行的命令,并将其拆解以分析处理的复杂程度。他规划或协调多个命令的执行,并在调度员的帮助下监控它们的处理。根据执行计划,命令随后会传递给调度员。
-
调度员:调度员是协调器的一部分,最终负责将命令传递给工作节点。它根据协调器创建的计划监控命令的正确执行。
-
工作节点:工作节点负责实际执行命令,并通过连接器从数据源接收结果。最终结果会传回客户端。
-
连接器:连接器是支持的数据源的接口。它们了解不同数据库和系统的特殊性,因此可以调整命令。
Presto 有哪些应用?
当连接存储大量数据的不同数据源时,可以使用此 SQL 引擎。这些数据源,即使是非关系型数据库,也可以使用经典 SQL 命令进行控制。Presto 通常用于大数据领域,在那里低查询时间和高性能至关重要。它也可以用于对数据仓库的查询。
在行业中,许多知名公司已经依赖于 Presto。除了发明该查询引擎的 Facebook 外,还包括例如:
-
Uber 使用 SQL 查询引擎处理其超过 59PB 的数据湖仓库。各种数据科学家以及普通用户需要能够在短时间内访问这些数据。
-
在 Twitter,数据量的急剧增加也成为了一个成本问题,因为 SQL 查询费用上升。因此,SQL 查询引擎被用来水平扩展系统。此外,还训练了一个机器学习模型,该模型可以在查询执行之前预测预期的查询时间。
-
阿里巴巴依靠 SQL 查询引擎构建其数据湖。
所有这些示例均取自Presto 网站上的用例部分。
使用 Presto 有哪些优势?
Presto 在处理大量数据时提供了几个优势,包括:
开源
开源的可用性不仅提供了在没有许可费用的情况下使用该工具的可能性,而且源代码也可以查看,并且在有足够技术知识的情况下可以根据自身需求进行定制。
此外,开源程序通常还有一个大型活跃的社区,因此问题通常可以通过快速的互联网搜索解决。这些 Presto 的活跃用户也确保系统不断被开发和改进,从而使所有其他用户都受益。
高性能
由于其架构,这个 SQL 查询引擎也可以在几秒钟内查询大量数据,并且不会有较长的延迟。这种高性能得益于分布式架构,使系统能够进行水平扩展。
此外,Presto 可以在本地和云端运行,因此如果需要,将其迁移到云端可以进一步提升性能。
高兼容性
通过使用结构化查询语言,Presto 对许多用户来说非常易用,因为查询语言的处理已经熟悉,并且这一知识仍然可以使用。这使得即使是复杂的功能也能轻松实现。
兼容性通过各种可用的连接器进一步得到保证,这些连接器支持常见的数据库系统,如MongoDB、MySQL或Hadoop 分布式文件系统。如果这些连接器不够,还可以配置或编写自定义连接器。
如何使用 Presto 查询数据?
使用 Presto 查询涉及连接到数据源并执行 SQL 查询。以下是使用 Presto 查询的基本步骤:
-
安装:在集群或单台机器上安装 Presto。你可以从官方网站下载最新版本。
-
配置:配置系统以连接到你想要查询的数据源。为此,你需要设置每个数据源的连接器,指定认证信息,并设置所需的参数。
-
建立连接:使用客户端连接到 Presto 集群或机器。Presto 客户端可以是命令行界面或像 Presto CLI 或 SQL Workbench 这样的 GUI 工具。
-
执行 SQL 查询:一旦连接成功,你可以对数据源执行 SQL 查询。这些查询可以是简单的 SELECT 语句,也可以是更复杂的查询,包括 JOIN、GROUP BY 和子查询。
-
优化查询:Presto 提供了多种优化查询的选项,如设置节点数量、配置内存限制,以及使用查询优化技术,如基于成本的优化和动态过滤。
-
监控查询执行:程序提供了多种监控查询执行的工具,如 CLI、Web 界面和查询日志。你可以使用这些工具跟踪查询的进展、监控资源使用情况并解决任何问题。
总之,使用 Presto 查询涉及连接数据源、执行 SQL 查询以及优化查询以提高性能。凭借其快速的查询执行和对多数据源的支持,该软件可以成为大数据处理和分析的宝贵工具。
Presto 和 Hadoop 如何一起使用?
Presto 本身没有内置的数据源来存储信息。因此,它依赖于使用其他外部数据库。在实践中,通常会使用Apache Hadoop或Hadoop 分布式文件系统 (HDFS)来实现这一目的。
Hadoop 组件概览 | 来源:作者
HDFS 和 Presto 之间的连接是通过 Hive Connector 建立的。主要优点是 Presto 可以轻松搜索不同的文件格式,因此可以搜索所有 HDFS 文件。由于 Presto 针对快速查询进行了优化,而 Hive 不能提供这种优化,因此 Presto 经常被用作 Hive 的替代方案。
Presto 和 Spark 之间有什么区别?
Apache Spark 是一个分布式分析框架,可用于许多不同的 大数据 应用。它依赖于内存数据存储和进程的并行执行,以确保高性能。它是市场上最全面的 大数据 系统之一,提供批处理、图形数据库以及对 机器学习 的支持等功能。
Apache Spark 组件 | 来源:作者
它经常与 Presto 一起提及,甚至被理解为 Presto 的竞争对手。然而,这两个系统非常不同,相似之处不多。这两个程序都是在处理 大数据 时可用的开源系统。由于它们的分布式架构和扩展能力,它们都可以提供良好的性能。因此,它们既可以在本地运行,也可以在云中运行。
然而,除了这些(尽管相当少的)相似之处外,Apache Spark 和 Presto 在一些基本特征上有所不同:
-
Spark Core 目前不支持 SQL 查询,您需要额外的 SparkSQL 组件。另一方面,Presto 是一个用于 SQL 查询的引擎。
-
Spark 提供了非常广泛的应用可能性,例如,还可以通过构建和部署完整的机器学习模型来实现。
-
另一方面,Presto 主要专注于对大数据量的快速查询处理。
这是你应该带走的内容
-
Presto 是一个开源的分布式 SQL 引擎,适用于查询大量数据。
-
该引擎可以用于需要快速响应时间和低延迟的分布式查询。
-
Presto 与 Apache Spark 的区别在于它主要专注于数据查询,而 Spark 提供了广泛的应用能力。
-
由于 Presto 没有自己的数据源,它通常与 Apache Hadoop 一起使用,作为它们 Hive Connector 的替代方案。
如果你喜欢我的作品,请订阅 这里 或查看我的网站 Data Basecamp!另外,medium 允许你每月免费阅读 3 篇文章 。如果你希望获得 无限 *的访问权限,并查看我和其他许多精彩文章,请不要犹豫,通过点击我的推荐链接获取每月 $*5 的会员资格: medium.com/@niklas_lang/membership
结构化查询语言简介
towardsdatascience.com ## 8 个每个新手数据科学家应该知道的机器学习算法
简要解释机器学习背后的算法
towardsdatascience.com ## 数据库基础:ACID 事务
理解数据库的 ACID 属性
towardsdatascience.com
什么是贝叶斯误差?
对机器学习基本概念的简单介绍
·
关注 发表在 Towards Data Science ·6 分钟阅读·2023 年 6 月 6 日
–
作者提供的图片
在做出不同的决定和估计时,例如
-
决定是否开始或继续进行项目,
-
估计项目的业务影响,
-
选择提高模型性能的主要策略,
最重要的考虑因素之一是模型性能改善的空间有多大。例如,假设我们有一个二分类模型,其准确率为 85%。我们可能会认为仍然有很多改进的空间,并承诺在几周内提高至少 5% 的准确率。然而,这种从“85% 准确率”到“改进空间很大”的思维过程隐含假设了最佳模型性能是 100% 准确率。不幸的是,这种假设通常是不真实的,导致我们对项目有误解并做出错误决策。
在本文中,我们将重点关注二分类设置,并使用误差率(即 1 - 准确率)作为我们的模型性能指标。然后,为了对减少模型误差率的空间进行良好的估计,我们将使用一个被称为贝叶斯误差(也称为贝叶斯误差率)的概念。
贝叶斯误差的定义
数据集的贝叶斯误差是任何模型能够达到的最低可能误差率。特别是,如果贝叶斯误差非零,那么两个类别之间有一些重叠,即使是最好的模型也会有一些错误的预测。
数据集存在非零贝叶斯误差可能有很多原因。例如:
-
数据质量差:计算机视觉数据集中某些图像非常模糊。
-
标记错误的数据
-
标记过程不一致:在决定是否将求职者进入下一轮面试时,不同的面试官可能有不同的意见。
-
数据生成过程本质上是随机的:例如,从掷硬币中预测正面或反面。
-
特征向量中缺少信息:在预测婴儿是否具有某些遗传特征时,特征向量包含父亲的信息而没有母亲的信息。
通常情况下,无法计算贝叶斯误差的确切值。然而,存在几种估计方法。我们将介绍的方法是最简单的一种,它基于软标签。
软标签
首先,让我们用 0 和 1 表示数据集中的两个类别。我们数据集中每个实例的类别标签都在 {0, 1} 集合中,并且没有中间状态。在文献中,这被称为硬标签(以与软标签对比)。
软标签通过允许中间状态并结合我们对类别标签的信心(以及不确定性)来泛化硬标签。它定义为实例属于类别 1 的概率:
*s_i = p*(*y* =1 *| x_i*)
特别是,s_i 取值范围在 [0, 1] 内。以下是一些示例:
-
s_i = 1 意味着我们 100% 确信该实例属于类别 1。
-
s_i = 0 意味着我们 100% 确信该实例属于类别 0,因为它属于类别 1 的概率为 0%。
-
s_i = 0.6 意味着我们认为实例更可能属于类别 1,但我们不是很确定。
注意我们总是可以通过检查s_i > 0.5 来将软标签转换为硬标签。
如何获得软标签
获取软标签的几种常见方法:
-
最明显的方法是要求我们的数据集标注者提供类别标签及其对标签的置信水平。
-
如果我们有多个标注者,我们可以要求他们为每个实例提供硬标签。然后我们可以将硬标签的比例作为软标签。例如,如果我们有 5 个标注者,其中 4 个认为x_i属于类别 1,剩下的一个认为x_i属于类别 0,那么s_i = 0.8
-
如果类别标签来源于某些数据源,那么我们可以使用相同的数据源来计算软标签。例如,我们想预测一个学生是否能通过考试。假设考试总分为 100,及格分数为 50 或更高。因此,硬标签通过检查score ≥ 50 获得。为了计算软标签,我们可以应用如 Platt 缩放之类的校准方法到score。
估计贝叶斯误差
从直观上讲,不难相信贝叶斯误差与软标签是相关的。毕竟,如果对类别标签存在不确定性,那么即使是最好的模型也会产生一些错误预测。使用软标签估计贝叶斯误差的公式非常简单:
*β* = (1 / n) · ∑ min(s_i, 1 - s_i)
这是 min(s_i, 1 - s_i)的平均值。这个公式的简便性使其易于使用,并适用于许多数据集。
具体示例
-
首先,让我们考虑极端情况,其中软标签为 0 或 1。这意味着我们对类别标签 100%确定。术语 min(s_i, 1 - s_i)始终为 0,因此β也为 0。这与我们的直觉一致,即最好的模型能够避免对该数据集产生错误预测。
-
考虑一个更有趣的情况,我们有 10 个实例,软标签为 0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1。然后
β = (1 / 10) · (0.1 + 0.2 + 0.3 + 0.4 + 0.5 + 0.4 + 0.3 + 0.2 + 0.1 + 0)
= 0.25
利用贝叶斯误差
对贝叶斯误差有一个良好的估计不仅可以让我们更好地理解数据集,还可以在以下方面帮助我们:
了解模型性能改进的空间
让我们回顾一下本文开头给出的例子。我们的模型准确率为 85%,这意味着错误率为 15%。假设贝叶斯误差估计为 13%。在这种情况下,改进的空间实际上只有 2%。最重要的是,我们不应该向老板承诺模型性能提高 5%。
确定我们是否需要新的数据集
我们的机器学习项目通常有最低模型性能要求。例如,我们的模型误差率要求 ≤ 10%,以免客服团队过于繁忙。如果我们数据集的贝叶斯误差估计为 13%,那么我们应该寻找新的数据集,而不是改进模型。也许我们需要更好的相机和传感器来收集数据,或者需要新的数据源来增加特征向量中的独立变量。
理解偏差-方差权衡
假设我们的模型训练误差为 8%,测试误差为 10%。如果我们知道贝叶斯误差接近 0%,则可以得出结论,训练误差和测试误差都很大。因此,我们应该尝试减少模型的偏差。
另一方面,如果贝叶斯误差为 7%,则
Training Error - Bayes Error = 1% < Test Error - Training Error = 2%
我们应当改进方差部分。
进一步阅读
-
上述贝叶斯误差估计公式在[2]中介绍。我们参考那篇论文了解公式的各种理论属性,如收敛速率。
-
Andrew Ng 的讲座 应用深度学习的基本原理 讨论了将人类水平的表现作为贝叶斯误差的代理。
-
贝叶斯误差量化了给定任务的不可减少误差。模型误差的偏差、方差和不可减少误差的分解(包括零一损失函数和其他损失函数)在[1]中进行了研究。
-
[3] 证明了训练于软标签上的分类器对样本外数据集的泛化能力更强,且对对抗攻击的抵抗力更强。
参考文献
-
P. Domingos. 统一的偏差-方差分解及其应用 (2000),ICML 2000。
-
T. Ishida、I. Yamane、N. Charoenphakdee、G. Niu 和 M. Sugiyama. 我的深度网络表现是否过于完美?一种直接估计二分类贝叶斯误差的方法 (2023),ICLR 2023。
-
J.C. Peterson、R.M. Battleday、T.L. Griffiths 和 O. Russakovsky. 人类不确定性使分类更加稳健 (2019),ICCV 2019。
什么是商业智能?
发现应用于供应链优化的数据驱动决策工具。
·
关注 发布于 Towards Data Science ·11 分钟阅读·2023 年 8 月 4 日
–
什么是商业智能?——(作者提供的图片)
商业智能是一个利用软件和服务将数据转化为支持决策的可操作情报的过程。
这种智能帮助企业洞察其运营情况,提高流程效率,并创造竞争市场优势。
商业智能过程的五个步骤——(作者提供的图片)
商业智能工具结合了多种应用,包括数据仓库、发现和可视化。
如何使用分析解决方案创建一个集中且和谐的数据源?
目标是通过将原始数据转换为总结性的洞察,以简化数据分析,从而进行战略决策。
在本文中,我们将探讨商业智能的概念,以理解它如何支持持续的运营改进,以实现更高效和可持续的供应链。
💌 免费订阅新文章直达你的收件箱:新闻通讯
📘 你的供应链分析完整指南:分析备忘单
Summary
I. What is Business intelligence?
1\. Distribution Operations for Fashion Retail
2\. Business Intelligence for Operational Management
3\. Business Intelligence is not Advanced Analytics
4\. Supporting Operational Performance Improvement
II. The Mechanics of Business Intelligence
1\. What is a Data Warehouse?
2\. A central source of harmonized data for reporting
III. Why is Business Intelligence Significant?
1\. Answering a simple business question
2\. Become a data-driven green organization
3\. Automate ESG Reporting
IV. Conclusion
1\. Generative AI to boost Business Intelligence
什么是商业智能?
这可以定义为用于分析组织原始数据的一系列软件应用程序。
时尚零售的分销操作
我们可以用一个国际服装集团的例子来说明,该集团在全球范围内都有门店。
供应链网络 — (作者提供的图片)
门店从本地仓库交付,这些仓库由在亚洲生产服装的工厂补给。
作为分销计划经理,你会希望测量交付门店的提前期(从订单创建到门店交付的时间)。
系统架构 — (作者提供的图片)
多个 IT 系统协调整个分销过程。
-
在ERP中,由分销计划员创建交货单。
-
计划员输入包含项目、数量、门店代码和要求交货日期的列表(参见OTIF — 准时全额绩效指标)。
-
该订单被传输到仓库管理系统(WMS)进行准备、打包和装载。
-
装载后,订单由运输管理系统(TMS)跟踪,直到门店交付。
带有时间戳的交易数据会在这些系统的数据库中创建和存储。
分销过程时间戳 — (作者提供的图片)
-
[从开始准备到卡车离开]
-
运输部分由TMS管理,时间戳跟踪货物直到商店交付
[从到达机场到商店交付]
我们如何利用这些数据来分析过去的事件?
运营管理的商业智能
BI 可以帮助将这些数据转换为有意义的信息,以支持运营或战略决策的描述性和诊断性分析。
对于每个时间戳,BI 解决方案可以帮助自动比较预计时间与实际时间以检测延迟发生的地方。
两个货运示例(准时:顶部,延迟:底部)— (作者提供的图像)
目标是提供报告、仪表盘和数据可视化,自动向运营团队提供洞察。
让我们以跟踪交货订单为例
-
订单创建时间: 21–04–2020 11:00
-
订单接收预计时间: 21–04–2020 12:30
订单接收实际时间戳: 21–04–2020 12:04 [准时]
-
订单拣货预计时间: 21–04–2020 14:30
订单拣货预计时间: 21–04–2020 15:12 [延迟]
你可以继续这个过程直到商店交付。
基于这些时间戳,你可以创建自动化规则:
-
如果实际交货日期晚于预计日期,则为迟交货
-
对于每个过程,如果实际日期晚于预计日期,你可以将其添加到原因代码列表中
例如:由于[传输、装载、海关清关]导致的延迟交货
延迟交付根本原因分析 — (作者提供的图像)
这个甜甜圈图是一个显示迟到的商店交付不同根本原因的视觉示例
-
1,842 个运输订单已被延迟交付
-
37%的延迟仅由于订单传输问题
欲了解更多详细信息,可以查看这些简短的解释视频
为什么我们需要商业智能?
商业智能不是高级分析。
商业智能并不是为了建议操作最佳缓解计划或预测未来表现。
BI 与高级分析 — (作者提供的图像)
商业智能提供描述性和诊断性分析解决方案,专注于“理解过去的事件”。
-
发生了什么? 有多少订单存在延迟交付?
-
什么时候? 订单 1878497 是否已在仓库装载?
-
谁? 上周哪个承运商交付了 12 号商店?
-
为什么? 为什么订单 1878497 在机场晚到 1 小时?
商业智能与高级分析 — (作者提供的图像)
其他类型的分析,利用过去的数据提供预测和建议,更为先进,但仍需建立业务智能的基础。
支持操作绩效改进
然而,这种视觉辅助工具帮助计划经理更好地理解他们的数据,识别模式,并提取见解。
-
37.8%的货物因传输问题而被耽搁
行动:“我应该联系 IT 团队解决这些问题。”
-
3.3%的货物因装载延迟而被耽搁
行动:“与仓库运营对齐以增加装载能力“
通常,BI 解决方案包含在一个绩效管理过程中,在该过程中数据被用来
在接下来的部分,我们将深入探讨业务智能的细节以及如何在您的公司中实施它。
💡 关注我在 Medium 上的文章,获取更多关于 🏭 供应链分析、🌳 可持续发展和 🕜 生产力的内容。
业务智能的机制
业务智能平台传统上基于一个数据仓库,该数据仓库将来自多个来源的数据汇聚到一个集中源中。
什么是数据仓库?
这种整合简化了业务分析和报告。
数据仓库将来自多个来源的数据进行合并 —— (图像由作者提供)
在我们的示例中,我们试图跟踪配送订单:
-
在ERP中创建,包含创建日期、预期交货日期、目的地、SKU、数量等
-
传输到仓库管理系统(WMS),该系统跟踪订单接收时间、订单拣选时间和订单发货时间。
-
由**运输管理系统(TMS)**管理,以跟踪从仓库装载到商店交付的运输过程。
BI 解决方案与这些系统互动,以:
-
处理并将获取的数据转换为一个统一的和谐源
-
创建用户友好的报告、图表和地图
数据处理的简单示例用于和谐化 —— (图像由作者提供)
在这个简单的示例中,
结果是什么?
报告的中央真实来源
利用这个协调表格,我们可以通过查看最后一个非空时间戳来按状态分类订单。
可以实施自动化规则来标记订单
-
如果交货时间为空,我们有 订单状态 = 运输中
-
最后一个非空时间戳用于标记状态
例如,如果之前的非空时间戳是订单拣货时间:订单状态 = 拣货包装
运输订单图表 — (作者提供的图像)
这个协调数据源是数据分析旅程的基石,因为它还可以提供支持
四种分析类型 — (作者提供的图像)
这些解决方案虽然超出了商业智能的范围,但仍依赖于商业智能解决方案建立的协调清理数据集。
在下一部分,我们将了解为什么商业智能对公司数字化转型如此重要。
💡 关注我在 Medium 以获取更多关于 🏭 供应链分析、🌳 可持续性和 🕜 生产力的文章。
为什么商业智能如此重要?
商业智能使组织能够将数据 转化为 可操作的洞察。
公司还可以开发一个实际操作问题并寻求商业智能团队的帮助。
让我们通过绿色转型的例子来说明这一点,这是我们时尚零售公司的实例。
回答一个简单的业务问题
公司的环境足迹的主要指标是生产、交付和销售产品过程中产生的二氧化碳排放量。
我们操作的环境影响是什么?
为了衡量这一点,BI 可以用于在供应链中创建单一的真实来源,并跟踪不同业务单元和时间段的排放。
什么是生命周期评估?
生命周期评估(LCA)是一种用于评估产品环境影响的方法。
生命周期评估 —(作者提供的图像)
它涵盖了从原材料提取到处置*(生命周期结束)*的整个生命周期。
正如你可以想象的,这种方法主要依赖于汇总和处理来自多个来源的数据。
成为一个数据驱动的绿色组织
我们的时尚零售商可以依靠 BI 成为一个绿色数据驱动的公司,通过在供应链中实施可持续性指标。
数据仓库可以集中来自多个来源的数据,以跟踪生命周期每一步的环境影响。
跟踪环境影响的数据架构 — (作者提供的图片)
-
通过连接到工厂系统来测量生产输出
-
从 Excel 文件中收集工厂、仓库和供应商的公用事业和原材料数据使用情况
-
通过API接收物流公司提供的二氧化碳排放、燃料消耗和路线数据
你无法管理你无法测量的事物。
数据处理结果将提供从产品角度的环境足迹的详细视图。
例如,
-
每件 T 恤的水消耗量为 3,500 升/单位
-
25%的二氧化碳排放来自海运
-
每件 T 恤的生产中排放 0.8 克 SOx 和 0.5 克 NOx
供应链中与 LCA 相关的 KPI 示例 — (作者提供的图片)
这些指标可用于制定可持续发展路线图:
-
提高制造设施的效率,考虑每单位产品的水和能源使用
-
挑战你的货运代理并跟踪他们的排放,以减少运输的足迹
-
改善原材料采购以减少用水量
💡 欲了解有关环境足迹可视化解决方案的更多详细信息,
了解生命周期评估如何帮助企业评估产品在整个生命周期中的环境影响…
towardsdatascience.com](/what-is-a-life-cycle-assessment-lca-e32a5078483a?source=post_page-----bf1de730319c--------------------------------) [## 使用 Python 进行供应链可持续性报告]
4 个步骤来建立关于分销网络二氧化碳排放的 ESG 报告。了解如何测量和减少碳…
towardsdatascience.com](/supply-chain-sustainability-reporting-with-python-161c1f63f267?source=post_page-----bf1de730319c--------------------------------)
提高贵公司的 ESG 评分。
支持公司 ESG 报告
商业智能可以大力支持 ESG 报告,因为它主要依赖于清晰和可信的数据。
报告类别示例 — (作者提供的图片)
组织利用这种非财务报告向利益相关者和金融机构传达其环境绩效(E)、社会责任(S)以及治理结构的强度(G)。
一家公司可能会报告
-
供应链的碳排放**(E)**
-
社区发展倡议**(S)**
-
董事会成员的多样性**(G)**
随着客户和投资者对可持续性认识的提高,企业将越来越多地投资于先进的商业智能能力,以自动化此类报告。
💡 有关 ESG 报告数据分析的更多细节,
利用数据分析实现公司环境、社会和治理的全面而有效的报告
towardsdatascience.com
结论
最有效的 BI 工具促进运营管理,发现问题并支持你的业务转型之旅。
连接到各种数据系统可以提供有价值的见解,并揭示隐藏的模式。
商业智能工具提供描述性分析(仪表板、报告)的解决方案,并创建一个值得信赖的数据中心,供更高级的预测或处方算法使用。
你听说过生成式 AI 吗?
2022 年 11 月,OpenAI 发布了 ChatGPT 的第一个版本。
生成式 AI 已成为利用大型语言模型提升任何分析产品用户体验的机会。
想象一下用一个连接到智能代理的提示替代一个静态的“无聊”提示。
使用 LangChain SQL 代理的供应链控制塔代理 [文章链接] — (作者图片)
在 这个案例研究 中,我分享了我第一个使用 LLMs 来提升供应链分析的项目。
用户:昨天有多少订单延迟交付?
代理:[SQL 查询] → 24 个订单昨天延迟交付
这个代理可以通过自动查询数据库回答任何用简单英语书写的问题。
这是商业智能的未来,将提升仪表板和报告的用户体验。
有关我如何实现这个解决方案的更多细节,请查看这篇文章,
## 使用 LangChain 的 LLMs 进行供应链分析——一个由 GPT 驱动的控制塔
构建一个与运输数据库连接的 LangChain SQL 代理的自动化供应链控制塔……
[towardsdatascience.com
💡 关注我在 Medium 以获取更多关于 🏭 供应链分析,🌳 可持续性和 🕜 生产力的文章。
关于我
让我们在 Linkedin 和 Twitter 上联系。我是一名供应链工程师,利用数据分析来改善物流操作和降低成本。
如果对数据分析和供应链感兴趣,可以查看我的网站。
一个专注于数据科学、个人生产力、自动化、运筹学和可持续性的技术博客……
参考文献
-
什么是供应链数字双胞胎?,Samir Saci,数据科学前沿
-
什么是供应链分析?,Samir Saci,数据科学前沿
-
什么是供应链控制塔?,Samir Saci,数据科学前沿
-
什么是生命周期评估?,Samir Saci,数据科学前沿
-
使用 Python 进行供应链可持续性报告,Samir Saci,数据科学前沿
什么是数据质量?
发现确保供应链数据准确性、一致性和完整性的方法论
·
关注 发表在 Towards Data Science · 11 分钟阅读 · 2023 年 8 月 15 日
–
什么是数据质量? — (作者提供的图片)
数据质量定义了数据集如何被信任、理解和有效利用于其预期目的。
你如何管理你系统生成的数据?
供应链系统创建和交换信息 — (作者提供的图片)
确保数据准确、一致并适合其预期目的对于确保供应链管理的顺畅和高效至关重要。
你们组织中有哪些流程来确保良好的数据质量?
在这篇文章中,我们将深入探讨数据质量的概念,探索其维度并理解其在供应链管理中的重要性。
💌 新文章免费直接送到您的邮箱:Newsletter
📘 您的供应链分析完整指南:Analytics Cheat Sheet
Summary
I. The Pillars of Data Management
1\. Why is it key?
2\. Quality vs. Integrity vs. Profiling
II. What are the 6 Dimensions of Data Quality?
1\. **Completeness**: do we have all the data?
2\. **Uniqueness**: are features all unique?
3\. **Validity**: is the format respecting business requirements?
4\. **Timeliness**: up-to-date data
5\. **Accuracy**: does it reflect reality correctly?
III. Next Steps
**1\. Data Quality for Environemental Reporting: ESG & Greenwashing**
**2\. Generative AI: Automate Data Quality Check with GTP Agent**
3\. Conclusion
数据管理的支柱是什么?
为什么数据管理至关重要?
高质量的数据可能是您供应链运营成功与失败的分水岭。
从规划和预测到采购和物流,供应链管理的每个方面都依赖数据来有效运行。
供应链系统创建和交换信息 — (作者提供的图片)
-
规划和预测算法依赖于WMS和 ERP 数据,以获取历史销售、库存水平和商店订单。
-
运输管理系统依赖 WMS 数据来正确跟踪从仓库到商店的货物。
有哪些不同类型的分析?
供应链分析解决方案可以分为四种类型,每种类型提供不同级别的洞察和可见性。
四种类型的供应链分析 — (作者提供的图片)
描述性解决方案 通常代表您数字化转型的第一步:收集、处理和可视化数据。
一切都始于数据收集和处理,以分析您的过往表现。
不良数据对描述性解决方案的影响是什么?
让我们以一家时尚零售公司的门店配送过程为例。
零售公司配送过程的时间戳分析 — (作者提供的图片)
一个简单的操作指标是准时交付的订单百分比:On Time In Full: OTIF
OTIF 计算的数据处理简单示例 — (作者提供的图片)
这个指标可以通过合并交易表来建立
-
用于订单创建的企业资源计划(ERP)
-
仓库管理系统(WMS)用于订单准备
-
用于订单交付的运输管理系统(TMS)
为什么我们在这里关注数据质量?
如果不确保数据的正确性,就不可能
一个无法自信测量的指标是无法分析和改进的。
质量、完整性和分析有什么区别?
在深入探讨数据质量之前,理解数据质量如何与相关概念如数据完整性或数据分析有所不同是至关重要的。
数据完整性是数据质量的一个子集 —(作者提供的图片)
尽管这三者是互相关联的,但它们关注的领域各有不同
-
数据完整性关注于在数据的整个生命周期内保持其准确性和一致性。
-
数据分析涉及检查和清理数据,以保持其质量。
数据分析不应与数据挖掘混淆。
数据挖掘与数据分析 —(作者提供的图片)
-
数据分析将重点关注数据的结构和质量,检查异常值、分布或缺失值。
-
数据挖掘侧重于从数据中提取业务和运营洞察,以支持决策制定或持续改进计划。
现在我们已经澄清了这些差异,我们可以专注于定义数据质量。
数据质量的 6 个维度是什么?
数据质量是基于多个维度来评估的,这些维度在保持数据的可靠性和可用性方面发挥着至关重要的作用。
数据质量的 6 个维度 —(作者提供的图片)
数据完整性:我们是否拥有所有的数据?
目标是确保所有必要数据的存在。
缺失的数据可能导致误导性的分析和差劲的决策。
示例:主数据中的缺失记录
在公司中,主数据管理 (MDM)是确保不同部门之间数据一致性和完整性的关键方面。
示例主数据管理 —(作者提供的图片)
主数据专家在项目创建过程中将与产品相关的信息输入到 ERP 系统中。
-
产品信息:净重、尺寸等
-
包装:总重量、尺寸、语言等
-
处理单位:每(箱、托盘)的物品数量、托盘高度
-
商品销售:供应商名称、采购成本、市场定价
这些数据专家可能会犯错,主数据中可能会存在缺失的数据。
缺失数据可能带来哪些问题?
价值链中的许多其他问题,从原材料采购到商店交付。
💡 我们如何检查它?
-
空值分析:识别和统计数据集中空值或缺失值的数量
-
领域特定检查:确认每个预期的数据类别是否存在。
例如,如果一个列本应包含五个不同的类别而仅出现四个,这将表明缺乏完整性。
-
记录计数:比较数据集中的记录数与预期记录数
-
外部数据源比较:使用已知完整的外部数据源作为基准
现在我们的数据完整,让我们去除重复项。
数据唯一性:特征是否都唯一?
目标是确保每条数据条目都是唯一的且没有重复。
我们希望准确地表示数据的全貌。
示例:用于 CO2 报告的运输货物
投资者和客户对可持续发展的透明度需求增长。
因此,公司正在投资分析解决方案,以评估其环境足迹。
第一步是测量 其运输的 CO2 排放 网络。
CO2 报告的数据处理 —(图片来源:作者)
运输和主数据记录从 ERP 系统中提取,并且从 WMS 中提取。
它们涵盖从仓库到商店或最终客户的订单范围。
我们可能面临哪些重复数据的问题
如果我们有重复的运输记录,可能会高估 运输的 CO2 排放,因为我们可能会多次计算排放。
💡 我们如何检查它?
-
重复记录识别:使用 Python 的 Pandas 或 SQL 的功能识别重复记录
-
关键约束分析:验证数据库中的主键是否唯一
有效性:格式是否符合业务要求?
目标是验证数据是否符合所需的格式和业务规则。
示例:生命周期评估
生命周期评估 (LCA) 是一种评估产品或服务在其整个生命周期内环境影响的方法。
它严重依赖于数据质量。
在下面的示例中,我们从不同来源收集数据,以估算生产和交付 T 恤所使用的公用设施和自然资源。
时尚零售生命周期评估的数据要求 —(图片来源:作者)
-
生产管理系统提供每个时期的 T 恤数量
-
垃圾库存、公用设施和平面 Excel 文件中的排放
-
距离、路线和来自承运人 API 的 CO2 排放
最终结果,即一件 T 恤的整体环境足迹,取决于每个数据源的可靠性。
我们可能面临哪些无效数据的问题?
-
如果某些记录的燃料消耗是(L/Shipment),而其他记录是(Gallons/Shipment),那么总评估将是错误的。
-
如果不确保所有的公用事业消耗是按月的,就无法评估每单位生产的消耗。
💡 我们如何检查它?
-
数据类型检查:数据中的每个字段都是预期的数据类型
-
范围检查:将值与预期范围进行比较
-
模式匹配:对于像电子邮件或电话号码这样的数据,可以使用正则表达式来匹配预期的模式
时效性:数据是否是最新的?
目标是确保数据在预期时间范围内的准备情况。
示例:过程挖掘
过程挖掘 是一种分析方法,专注于发现、监控和改善运营和业务流程。
时间戳收集——(作者提供的图像)
在上述示例中,我们在订单到交付的每一步收集带时间戳的状态*(来自不同系统)*。
如果我们没有及时获得数据,会面临什么问题?
-
状态可能需要正确更新。
这可能在追踪货物时产生“空白”。
例如,我的货物在凌晨 12:05 送达,但状态仍显示“打包中”。
-
事件可能会被报告
💡 我们如何检查它?
-
时间戳分析:检查所有时间戳是否落在预期的时间范围内
-
实时数据监控:监控数据流,当出现中断时生成警报
准确性:是否正确反映了现实?
目标是确保数据值的正确性。
这对于维持数据驱动决策的信任是必需的。
示例:零售销售预测的机器学习 这些算法使用历史销售数据记录来预测未来 X 天的按店铺和商品代码的销售情况。
零售销售预测的机器学习——(作者提供的图像)
对于这种业务案例,数据准确性比你预测模型的复杂程度更为重要(基于树的,深度学习,统计预测,…)。
不准确数据可能面临什么问题?
-
错误的历史销售数据由于数据输入错误或系统故障可能会影响模型的性能。
-
这可能导致库存过剩或缺货,产生财务和商业影响。
💡 我们如何检查它?
-
来源验证:与其他权威来源交叉验证数据,以确保信息准确
-
数据审计:定期审计数据可以通过手动检查数据记录样本来帮助发现不准确之处
一致性:它是否正确反映了现实?
目标是评估来自不同数据集的记录,以确保一致的趋势和行为。
💡 如何执行?
-
数据标准化:执行严格的数据录入和格式规范以确保一致性。
-
自动数据清洗:实施自动化工具或脚本来清洗和标准化数据。
-
错误报告:建立一个稳健的错误报告和解决流程。
这些示例为你提供了足够的洞见,以了解如何在你的组织中实施数据质量检查。
下一步
如果你的公司投资于供应链数字化转型,数据质量不再是奢侈品,而是必要条件。
这应纳入你的战略路线图中,以确保足够的质量水平,以做出明智的决策,简化操作并实现商业目标。
如果你有低质量的数据用于你的报告,会发生什么?
可持续报告的数据质量
数据质量将影响你公司所有的分析和数据产品。
其中包括影响组织财务和法律方面的战略报告。
战略报告示例:ESG——(作者图片)
**环境、社会和治理(ESG)**方法是一种公司用来报告其环境足迹、社会影响和治理结构的方法论。
生成 ESG 报告的数据处理能力——(作者图片)
这依赖于从多个来源收集、处理和协调数据集。
这种报告通常涉及在发布前对数据和假设进行全面审计。
绿色洗涤的五大罪恶——(作者图片)
为了打击绿色洗涤,审计员可能会进行审计
-
涵盖端到端供应链的数据来源
-
数据处理和协调
-
环境足迹和治理关键绩效指标的最终计算
绿色洗涤是指对产品环境效益做出误导性声明的做法。
因此,你的可持续部门依赖于高质量的数据,以避免可能导致合规问题的错误计算。
💡 关于绿色洗涤和 ESG 报告的更多细节,
利用数据分析进行公司环境、社会和治理的全面有效报告
towardsdatascience.com [## 什么是绿色洗涤?以及如何使用分析检测它?]
探索数据分析如何帮助我们检测和防止绿色洗涤,并促进真正的可持续性。
towardsdatascience.com](/what-is-greenwashing-and-how-to-use-analytics-to-detect-it-15b8118031?source=post_page-----f2c0274a6404--------------------------------)
你听说过生成性 AI 吗?
生成性 AI:使用 GPT 代理自动化数据质量检查。
OpenAI 于 2022 年底发布了 ChatGPT 的第一个版本。
从那时起,生成性 AI 成为利用大型语言模型(LLMs)提升用户数据和分析产品体验的机会。
使用 LangChain SQL 代理的供应链控制塔代理 [文章链接]——(图片由作者提供)
作为首次尝试探索这项技术,我在这篇文章中分享了我的实验历程。
由 GPT 增强的智能代理原型——(图片由作者提供)
目标是创建一个智能代理来
-
收集以自然语言(英语)形式制定的用户请求。
-
自动查询数据库以提取见解。
-
用专业的语气制定合适的答案。
初步结果令人印象深刻!
我们能否创建一个“数据质量”智能代理?
这种方法可以应用于我们的数据质量问题。
-
我们可以将智能代理连接到不同的数据源。
-
配备先进的 Python 脚本以进行特定分析。
-
教会代理数据质量的基础知识。
💡 了解更多关于如何使用 LangChain 创建智能代理的详细信息,
[## 利用 LLM 和 LangChain 进行供应链分析——由 GPT 驱动的控制塔]
构建一个连接到运输数据库的 LangChain SQL 代理的自动化供应链控制塔……
towardsdatascience.com](/leveraging-llms-with-langchain-for-supply-chain-analytics-a-control-tower-powered-by-gpt-21e19b33b5f0?source=post_page-----f2c0274a6404--------------------------------)
关于我
让我们在Linkedin和Twitter上联系,我是一名供应链工程师,利用数据分析来改善物流操作和降低成本。
如果你对数据分析和供应链感兴趣,可以看看我的网站。
[## Samir Saci | 数据科学与生产力
这是一个专注于数据科学、个人生产力、自动化、运筹学和可持续发展的技术博客。
💡 关注我在 Medium,获取更多与🏭供应链分析、🌳可持续发展以及🕜生产力相关的文章。