大数跨境
0
0

我是怎样在一周内逆向工程了一家5亿美元的人工智能公司的

我是怎样在一周内逆向工程了一家5亿美元的人工智能公司的 学术头条
2017-03-26
2
导读:是的,现在人人都可以利用人工智能,而无需花费数年的时间和大量的研发资金。

许多与深度学习相关的论文、数据集和软件工具都已经开源。这使得越来越多的个人和小型组织也能构建强大的应用程序。WhatsApp的全球邮件系统为9亿多用户提供服务,开发这一系统的只有50名工程师,相比之下,上一代的邮件系统需要数以千计的工程师。这个“WhatsApp效应”现在正发生在AI领域。小型团队的工程师利用Theano和TensorFlow等软件工具,以及用于训练数据的云数据中心和廉价的GPU,同样能够构建起最先进的AI系统。


这背后传递出的信息很简单:现在人人都可以利用人工智能,而无需花费数年的时间和大量的研发资金。


我坚定地认为,无论你是想拓展技术的边界,还是想利用一些成熟的人工智能方法来解决新问题,这个结论都是有效的。


由于有些人不完全相信这个说法,所以我决定证明这一点,并投入一些时间来实际做一做。正如我在圣克拉拉大学的商学教授曾经说过的那样,“你必须亲自尝一下你的狗的食物”。


另外,实话实说,我觉得这很有趣:)


寻找正确的实验:


作为一位能源工程师,我决定选择一个我非常钦佩的公司案例:Opower。


Opower做的事很简单,但功能非常强大:它使用智能电表数据,帮助电力公司进行客户定位,了解用户的能源消费模式。这对于电力来说非常重要,这些公司需要在白天保持客户的能源消耗尽可能稳定(能耗“高峰”和“低谷”的出现,对于能源生产者来说是很棘手的事,要付出的成本很高,其原因我们在这里不做说明)。一旦了解了能源用户的消费模式,就可以通过定制报价来精准定位,以便在关键时刻降低能源消费。


Opower在这方面取得了很大的成功:据资料显示,该公司成立于2007年,2014年上市,终于在2016年以5.32亿美元被Oracle收购。


Opower之所以成为完美的实验对象,是因为我发现了一个非常棒的数据集,大约包括15000个csv文件,涵盖了2004年收集的美国15000个建筑物的每小时的能源负载。这些数据看起来与Opower实际上拥有的数据足够接近。


这个案例很完美,我准备好了。


考察数据:


我做的第一件事是导入单个csv文件,并快速绘制一些能源消耗的曲线图,来看看我可以从这些文件中获取什么信息。


我绘制一些“毛球图”:基本上我绘制了一个图表,表中包括几天的能量消耗曲线(用透明度0.1的黑线表示),从表中可以看出建筑物中最常见的能量使用模式。


我还为全年、工作日和周末分别绘制了三张曲线图,从中寻找不同的模式。


以下是两个例子:


餐厅的“毛球”图。从左到右依次为:全年每一天、仅工作日、仅周末和假期

 

中学的“毛球”图。从左到右依次为:全年每一天、仅工作日、仅周末和假期



这看起来可能没什么用,但是我们可以从中推断出一些信息:


餐厅在早餐,午餐和晚餐时段营业(从图中的三个高峰可以看出)

餐厅大概在早晨五点至六点开始营业(由于工人入店,能源消费量首次上升)

餐厅大概在凌晨1点到2点之间打烊

餐厅在周末和假期都营业。

午餐顾客在店中停留时间要比早餐顾客长一些。

餐厅可能有一些冰箱在夜间保持运行(能源消费从不为零)。


学校在上午六时左右开门,晚上十点钟左右关门。

早6点左右,大多数人都离开了学校,但有人一直不离开(是教授?还是有课后活动?)

学校有一些从不关闭的电器(是冰箱?IT设备?还是夜晚长明的安全灯?)


数据集存在问题!我们应该期望在周末(即图中水平线)上有一个稳定和接近零的能源消耗。数据集是否发生了变化?结果是肯定的。通过考察过去三天的所有情况,结果越来越接近我们的期望,大多数周末和假期的能源消耗都保持稳定。


一旦我知道可以在这些数据中找到些什么,我就开始进行数据清理和并准备构建模型需要的一些函数。像往常一样,这是最耗时的一部分。


到了机器学习的时间:


要开始寻找能源消耗模式,我需要一个包括每栋建筑能源消耗“模型”的数据集。我只是根据每栋建筑每年每天每小时的平均能耗建立了模型,(再加上我认为可能有趣的其他功能,如州、城市等)。为了使建筑物之间能够相互比较,我将每小时的能源消耗量除以最高的记录消耗量,这样得到的每栋建筑的消耗系数范围在0到1之间。我还构建了自己的函数,以便轻松地更改数据集,如果我想寻找更具体的能耗模式,也可以在只考虑工作日或假期的情形下对每个建筑的进行建模。


我决定开始考虑整年的情况,并在所有15000个csv文件中运行我的脚本,最后产生一个15000行的数据集,并开始聚类。


我使用了非常简单(但功能强大、效率高)的K-Means算法,并输入15000个样本,样本提供了一个包含24小时能源消耗值的列表。


我考察了几个群集,让我得到最明显聚类效果的是群集6(这是一种试错法,为简洁起见,我在这里仅报告最后的结果)。


为了提取出一些观点,我绘制了集群中心(基本上是算法识别出的6个主要模式),以及作为该集群一部分的建筑物的“毛球”图,以便读者可以欣赏到二者的相似之处。



集群表示


看起来很不错,对吧?我们现在大体上知道:


有些用户的能耗稳步上升,在下午4点左右达到最高峰,然后下降。(集群1)

有些用户一天有两次能耗高峰,出现在早7点和晚9点。(集群2)

有些用户一天有三次能耗高峰,分别出现在早8点,下午1点和晚6点(集群3)

有些用户采用“双模式”的运营方式:从上午9点到下午5点是高能耗时段,其余的为低能耗时段(集群4)

有些用户的能耗情况和集群4很像,但是在下午1点左右会出现一次不大的能耗下降。(相当于10%峰值能耗的10%)(集群5)

一些用户的能耗水平相当稳定,最低能耗约为峰值的60%(集群6)。


我们还能走得更远吗?一家公司可以从这些数据中获得什么样的价值?

如果把上面的描述打印出来,以下就是我们得到的结果,可以看出哪些建筑属于哪个集群:

CLUSTER 1
total elements: 3042
n Stand-aloneRetailNew = 936 out of 936
n StripMallNew = 936 out of 936
n SecondarySchoolNew = 923 out of 936
n PrimarySchoolNew = 235 out of 936
n MediumOfficeNew = 4 out of 936
n LargeOfficeNew = 8 out of 936
CLUSTER 2
total elements: 2808
n LargeHotelNew = 936 out of 936
n MidriseApartmentNew = 936 out of 936
n SmallHotelNew = 936 out of 936
CLUSTER 3
total elements: 1872
n FullServiceRestaurantNew = 936 out of 936
n QuickServiceRestaurantNew = 936 out of 936
CLUSTER 4
total elements: 5381
n LargeOfficeNew = 928 out of 936
n MediumOfficeNew = 932 out of 936
n OutPatientNew = 935 out of 936
n PrimarySchoolNew = 701 out of 936
n SecondarySchoolNew = 13 out of 936
n SmallOfficeNew = 936 out of 936
n SuperMarketNew = 936 out of 936
CLUSTER 5
total elements: 936
n WarehouseNew = 936 out of 936
CLUSTER 6
total elements: 937
n HospitalNew = 936 out of 936
n OutPatientNew = 1 out of 936


下面是我要说的:


所有独立零售商、商场,以及几乎所有的中学都属于集群1。如果电力公司使用这种工具,那么在向这种客户提供新合同时,可以考虑提出奖励措施,努力消除那个能耗的单峰。


所有酒店和“中档”公寓属于集群2。电力公司可以针对这些客户提供优惠,在早上7点至晚上9点(尤其是晚上9点)降低能耗。或者至少意识到,如果他们的签约新客户是一个大型连锁酒店,这些能耗高峰的出现就是意料之内的情况。


所有的餐馆都属于集群3。这可能是因为数据集中没有任何餐厅只在三餐时的两餐开放(即早餐,午餐和晚餐)。电力公司应特别注意这些用户的最后一个能耗高峰,其出现时段这与集群2大致相同。推出一些量身定制的促销活动可能会促使餐馆开门时间的变化,因而造成能耗情况的变化(我不知道这在商业上是否说得通)。


集群4是最常见的情况,无论大小的办公楼、超市和大多数小学都属于这一类。这是一种经典的“朝九晚五”类型。


集群5是典型的仓库。下午1点左右的消费量下降可能是转机。我们可以通过量身定制的促销激励这类用户在夜间使用能源,从而使能耗高峰出现的时段与集群4的用户错开。


新建的医院的能耗模式都类似集群6。这类用户在夜间的能耗很高,也很稳定,因为他们可能有晚上不能关机的机器。关于这类用户,我们能够改变的地方不多,而且他们也是稳定用户,所以只需保持现状就好。


结论:


是的,即使你并不是一家5亿美元的公司,而只是一个有点闲工夫的人,也可能使用机器学习得出一些非常有趣的结论。这主要是由于开放数据集以及开放源码软件的普及,让我能够以惊人的速度构建了一个虽粗略、但好用的模型。


还有,聚类技术是一个非常强大和易于应用的技术,该技术还有很多未开发的潜力。想象一下,您完全可以用同样的方法在营销方面做更多的事。



原文链接:https://blog.ai-academy.com/i-reverse-engineered-a-500m-artificial-intelligence-company-in-one-week-heres-the-full-story-d067cef99e1c#.4qtsa2zca


【声明】内容源于网络
0
0
学术头条
致力于学术传播和科学普及,重点关注大模型、AI4Science 等前沿科学进展。
内容 1019
粉丝 0
学术头条 致力于学术传播和科学普及,重点关注大模型、AI4Science 等前沿科学进展。
总阅读605
粉丝0
内容1.0k