Anomaly Detection in Power BI: Finding What Changed and Why

Learn how Power BI's AI-powered anomaly detection finds unexpected data changes, explains their root causes, and helps analysts focus on the signals that matter most.

E
ECOSIRE Research and Development Team
|2026年3月19日3 分钟阅读480 字数|

Power BI 中的异常检测:查找发生变化的内容及其原因

每个分析师都知道这种挫败感:您正在检查仪表板,发现某些东西看起来有问题,但由于跨越数十个时间段的数百个指标,识别异常现象 - 然后解释其发生的原因 - 可能需要数小时的手动调查。

Power BI 的异常检测功能扭转了这一负担。人工智能不会等待分析师发现异常,而是自动识别与预期模式显着偏差的数据点,并提供对哪些维度对偏差影响最大的初步解释。分析师的工作从“发现问题”转变为“验证人工智能的发现并确定响应”。

本指南介绍异常检测在 Power BI 中的工作原理、如何将其配置为最大信噪比、如何解释其提供的解释,以及如何将其与 Smart Narratives 集成以实现自动异常报告。

要点

  • 异常检测适用于带有日期轴的折线图和面积图,自动或按需
  • 该算法使用谱残差分析结合CNN来检测上下文异常
  • 灵敏度控制异常的阈值 — 灵敏度越高,标记的潜在异常越多
  • 解释分析贡献维度以表明哪个部分驱动了异常
  • 智能叙述可以配置为描述自然语言文本中检测到的异常
  • 所有 Power BI 许可证层均提供异常检测(无需 Premium)
  • 使用 Azure 认知服务或 Python 的自定义异常检测可以扩展到内置功能之外
  • 最佳结果来自稳定、季节性一致的时间序列;不稳定的系列会产生更多的误报

异常检测的作用

Power BI 的异常检测分析折线图或面积图中的时间序列数据,并识别超出给定历史模式的预期值范围的数据点。它使用以下组合:

谱残差 (SR) 算法:从时间序列中去除可预测的趋势和季节性分量后提取“残差”信号。残差较大(与预期偏差较大)的数据点是异常候选点。

卷积神经网络 (CNN):将周围时间窗口内的残差置于上下文中,以区分真正的异常与预期波动。孤立地看起来极端的数据点在给定相邻值的情况下可能是正常的。

结果是每个数据点的异常分数。高于敏感度阈值的点被标记为异常并在图表上可视化。

异常检测可以发现什么:

  • 偏离历史趋势的指标突然上升或下降
  • 趋势意外逆转(增长的指标突然下降)
  • 缺少预期事件(应该每周一飙升的指标本周不会飙升)
  • 跨越置信区间的逐渐漂移

异常检测找不到什么:

  • 非时间序列数据的异常(按类别的条形图、散点图)
  • 所有历史数据都是错误的基线问题
  • 分类或文本数据中的异常
  • 历史波动范围内的变化(正常变化不会触发检测)

启用异常检测

异常检测适用于具有日期/时间轴的折线图和面积图。它是通过“分析”窗格启用的。

步骤 1:使用以下命令在 Power BI Desktop 或 Power BI 服务中创建折线图视觉对象:

  • X 轴:日期或日期时间列
  • Y 轴(或值):一个或多个度量

第 2 步:选择视觉对象 → 分析窗格(闪电图标)→ 异常部分 → 添加。

步骤 3:配置检测设置:

设置选项指导
灵敏度0–100(默认 70)越高=标记的异常越多,误报越多
异常颜色任何颜色使用红色表示负面异常,使用绿色表示正面异常
预期范围显示/隐藏阴影带显示预期值范围
预期范围边界点/无显示预期范围外边界的线

第4步:配置解释功能:

在异常设置下,启用“解释依据”以添加 Power BI 在解释异常时应分析的维度。从模型中选择相关维度(区域、产品类别、客户细分、销售渠道等)。当用户单击异常以获得解释时,将分析这些维度。


了解异常解释

当用户单击折线图上的异常标记时,会打开一个侧面板,显示说明 - 分析哪些维度对异常影响最大。

解释显示:

异常摘要:该点的预期值、实际值和偏差幅度。

影响因素:解释异常的维度值组合的排名列表。例如,如果收入在特定日期出现异常,则解释可能会显示:

  • “西区贡献了68%的异常”——这意味着西区当天的收入低得不成比例
  • “电子产品类别贡献了 22% 的异常”——电子产品具体表现不佳 -“企业客户群造成了 15% 的异常”——企业销售额异常低

强度得分:每个因素对异常的解释程度(表示为总异常的百分比)。强度分数高的因素是最可能的根本原因。

支持可视化:显示贡献维度行为的小图表 - 显示当天各地区表现的迷你条形图,使西部地区的下降在视觉上显而易见。


灵敏度调整

灵敏度滑块 (0–100) 控制 Power BI 标记异常的积极程度。正确调整这一点对于获得有用的信噪比至关重要。

Too high sensitivity (90–100): Almost every local peak or trough is flagged as an anomaly.分析师对误报不知所措,不再相信检测结果。 “狼来了的男孩”效应使得该功能毫无用处。

灵敏度太低 (10–30):仅标记最极端的事件。应该及早发现的逐渐恶化却被忽视了。早期预警信号的微小异常会被错过。

正确的灵敏度取决于时间序列特征:

  • 低波动性系列(客户满意度评分通常每周移动 0.2 分):高敏感度 (70–85) 是合适的 — 即使很小的偏差也值得注意
  • 高波动性系列(每日网站会话):较低的敏感度 (40–60) 避免标记正常的每日变化
  • 强季节性系列(具有每周和假日模式的零售销售):中等敏感性,具有较长的历史窗口来训练季节性模型

实用的调整方法:将灵敏度设置为 70(默认值)并对 12 个月以上的历史数据运行检测。检查每个标记的异常并将其分类为“真”(实际发生变化)或“假”(正常变化)。如果超过 30% 为假阳性,则灵敏度较低。如果您知道应该标记但没有标记的事件,请提出它。


业务监控异常检测

Power BI 异常检测最有影响力的应用是运营业务监控,其中仪表板会被持续审查,异常需要触发操作。

销售监控:根据季节性模式监控每日收入。 3 月份的某个星期二,没有预定的促销活动或假期,出现异常情况会引发调查。解释显示,北美渠道收入比预期低 40%,原因原来是网站宕机,影响结账 6 小时。

财务监控:根据预算和上一年跟踪每月支出。公用事业线的异常标志着 35% 的飙升。解释追溯到一个特定的设施——暖通空调故障,需要紧急维修。

客户服务监控:根据预期负载跟踪每日票务量。异常峰值触发调查 - 解释显示它集中在产品支持类别和特定产品版本中,表明存在软件错误。

供应链监控:每日准时交货率低于历史水平时就会被标记。该解释指向特定的承运商和特定的地理区域,使物流团队能够立即联系承运商。

在每种情况下,分析师的调查都是从异常检测的解释开始,而不是从头开始,从而大大缩短了诊断的平均时间。


与智能叙事集成

智能叙述可以配置为描述折线图中检测到的异常,将视觉异常标记转换为适合执行报告或自动摘要的简单语言文本解释。

添加智能叙述来描述异常:

  1. 将智能叙述视觉对象添加到与启用异常的折线图相同的报告页面
  2. 智能叙事视觉效果会根据在报告视觉效果中观察到的内容自动生成文本
  3. 自定义叙述模板以包含异常特定语言

每月执行报告中的智能叙述 + 异常检测可能会产生:

“420 万美元的月收入比模型预期的 440 万美元至 470 万美元低了 38 万美元,这是一个统计上的显着异常。北美电子商务渠道占了缺口的 71%,业绩从前几个月的 180 万美元下降到 110 万美元。这种差异从 14 日开始,一直持续到月底,与网站基础设施迁移同时发生。”

该叙述是根据数据自动生成的——无需手动编写。每次报告刷新时它都会更新,使其适合自动每月报告。


使用 Azure 和 Python 进行高级异常检测

Power BI 的内置异常检测涵盖大多数用例,但高级场景可能需要:

Azure 认知服务异常检测器 API:Microsoft 的专用异常检测 API 支持多变量异常检测(查找同时出现在指标组合中的异常)、更复杂的季节性处理和流式异常检测。 Power BI 可以通过导入 API 响应中的异常分数和解释来显示异常检测器 API 的结果。

基于 Python 的异常检测:Power BI 的 Python 视觉支持允许自定义异常检测算法在 Power BI 报表中运行。 pyodscikit-learn 的隔离森林或 prophet(Facebook 的时间序列预测库,包含异常边界)等库可以实现为 Python 脚本,生成显示为 Power BI 视觉效果的异常分数。

使用 Prophet 的自定义 Python 示例:

from prophet import Prophet
import pandas as pd

# dataset is the Power BI dataset passed to the Python visual
df = dataset.rename(columns={'Date': 'ds', 'Revenue': 'y'})

m = Prophet(interval_width=0.95, daily_seasonality=True)
m.fit(df)

future = m.make_future_dataframe(periods=0)
forecast = m.predict(future)

result = df.merge(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']], on='ds')
result['is_anomaly'] = (result['y'] < result['yhat_lower']) | (result['y'] > result['yhat_upper'])

# Power BI renders the result dataframe as a visual
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(result['ds'], result['y'], color='blue', label='Actual')
plt.fill_between(result['ds'], result['yhat_lower'], result['yhat_upper'], alpha=0.3, label='Expected Range')
plt.scatter(result[result['is_anomaly']]['ds'], result[result['is_anomaly']]['y'], color='red', zorder=5, label='Anomaly')
plt.legend()
plt.show()

常见问题

异常检测是否适用于所有 Power BI 许可证类型?

是的。所有 Power BI 许可证层均提供内置异常检测功能,包括 Power BI Pro 甚至用于开发的免费 Power BI Desktop。基本异常检测功能不需要高级容量。需要 Premium 的 AI 功能(例如数据流中的 AI 见解、AutoML 和一些认知服务集成)与异常检测可视化分析窗格功能是分开的。

异常检测需要多少历史数据才能发挥作用?

Power BI 的异常检测在处理至少 12 个月的数据时效果最佳,这使其能够了解每周和每月的季节性模式。如果数据少于 3 个月,算法可能无法准确表征“正常”行为,从而导致在训练窗口中未充分体现的时期出现更多误报。对于季节性很强的业务(零售、旅游业),2 年以上的历史记录可显着提高准确性。

异常检测可以对预测的未来数据起作用吗?

内置异常检测是针对历史数据而设计的 - 它可以识别偏离所有先前数据建立的模式的过去数据点。它不会将异常情况投射到未来的预测值中。对于前瞻性异常预测(例如,“我们当前的轨迹是异常的,并且可能会继续下去”),需要自定义 Python 或 Azure ML 模型。

Power BI 如何处理异常检测中的多个系列?

当折线图具有多个系列(同一图表上有多个度量)时,异常检测会在每个系列上独立运行。每个系列都有自己的预期值范围、自己的异常标记以及点击时的解释。这允许同时监控多个相关指标 - 例如,在同一个图表上跟踪收入和毛利率,并通过异常检测标记任一指标中的意外偏差。

我可以设置在检测到异常时触发的警报吗?

当满足数据驱动的警报条件时(例如,当 KPI 磁贴值降至阈值以下时),Power BI 仪表板上的本机警报机制可以触发。这不直接与异常检测的统计模型集成。对于使用 AI 检测模型的自动异常警报,当前的方法是计算数据流中的异常分数(使用 Azure Anomaly Detector API),并针对超出阈值的结果异常分数指标设置仪表板警报。异常检测和 Power Automate 警报之间的本机集成已列入 Microsoft 的路线图。


后续步骤

异常检测将反应性分析(在问题已经影响业务后发现问题)转变为主动监控,尽早捕获信号并将调查工作引导到重要的地方。与智能叙述相结合,它可以实现自动异常报告,无需手动操作即可让利益相关者了解情况。

ECOSIRE 的 Power BI AI 分析服务 包括异常检测实施、灵敏度调整、智能叙述配置以及使用 Azure 认知服务的高级异常检测。联系我们讨论人工智能分析如何改进您的监控和决策流程。

E

作者

ECOSIRE Research and Development Team

在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。

通过 WhatsApp 聊天