赞
踩
先看一个简单的例子。假设我们有一个数据集,这个数据集包含如下变量:冰激凌销量、鲨鱼袭击次数、温度和风速。
我们假设下列陈述都为真。夏季炎热的气候使得人们购买冰激凌和游泳潜水的次数增加,从而导致鲨鱼袭击事件增多。其他气象现象–比如风–驱使鲨鱼在近海岸活动也会增加鲨鱼袭击。
这些都是因果关系和因果效用。我们可以将其总结为一张因果图(如图1)。因果发现的目的是从数据中找到正确的因果结构,就像下图一样:
因果知识可以通过3中互补的方法获得:
实验是发现因果关系的黄金准则,但很多场景下干预实验是不道德的或无法操作的。比如我们无法将人们置于被鲨鱼攻击的危险中,我们也无法人为改变天气去观测对冰淇凌销量的影响。
我们先聚焦在因果发现算法上,后面再回过头来讨论这3种方法。
从观测数据中发现因果关系很难,因为相关不意味着因果。有关相关不等于因果的更多案例请参考 为什么相关不等于因果
例如,鲨鱼袭击和冰淇凌销量有相关性或者说他们在统计上彼此相关(如图2)。但二者之间没有直接的因果关系–是因为维度这个共因导致二者呈现出相关性。这里温度被称为混淆因子。
如果因果能直接从关联中获取,那么因果发现就变得很容易了,现在的机器学习算法应该早就解决了这个问题。但是正如上面所说的那样,因果发现需要特别的技术去发掘隐藏在关联背后的数据产生过程。
因果发现算法可以从数据中找到因果关系的线索。其中 条件独立 是众多算法找寻的关键证据。下面我们详细拆解一下这个概念。
如果两个变量之间没有任何关系,则说这两个变量独立。独立意味着一个变量的值不会告诉我们关于另一个变量的任何信息。比如特斯拉的股价跟鲨鱼袭击相互独立。
条件独立建立在这面这个概念之上:
当给定变量C的值时X和Y彼此独立,那么变量X,Y对给定的变量(或一组变量)C条件独立。
当给定温度后,鲨鱼袭击和冰激凌销量条件独立。因为如果我们已知气温,鲨鱼袭击的发生率不会对冰淇淋销量提供任何新的信息。
为什么条件独立能帮助因果发现?
直觉上,条件独立检验有点类似控制实验。在实验中,我们试图通过控制环境来隔离因果效用,然后调节我们感兴趣的变量。因果发现软件无法做到跟控制实验一样控制环境,但在所有背景因素上进行调节是次优的选择。
接下来让我们宏观地看一下因果发现算法,去了解因果发现是如何工作的。
“基于约束”的算法是因果发现算法的一类,它采用条件独立关系作为约束,然后构建能够表示这些约束的因果结构。
其中"PC算法"是一个经典的基于约束的因果发现算法,算法步骤如下:
因果发现算法(例如PC算法)是人工智能在概念上超越传统机器学习的巨大飞跃。但不幸的是,传统算法在实际应用中存在局限性。
许多流行的因果发现算法在大多数用例中都会做出过强的假设。例如,PC算法假设数据之外没有混杂因子,这通常是错误的,可能会带来不准确的因果模型。
因果发现算法需要大量计算。例如,随着数据越来越大,PC需要运行的条件独立检验数量会急剧增大。经典的“基于分数”算法是另一种直接搜索可能的因果结构空间的核心方法,但也存在效率低下的问题。这使得大多数因果发现算法在解决实际问题时都显得太慢了。
我们研究发现,因果发现算法不能保证有稳定的模型输出。例如我们发现在基于分数的算法上,修改数据的单位会带来完全不同的因果模型输出。这显然不合理,因果模型不应该因为温度数据是用摄氏度表示还是华氏度表示而不同。
对于任何给定的应用,都有大量的因果发现算法可供选择。有些算法比其他算法更适合某些用例。如何选择正确的算法需要大量专业知识和经验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。