1.6 智能应用中八个常见的误区
到此,我们已经介绍了与智能应用相关的基础知识,现在你应该已经对什么是智能应用,以及应该如何使用智能应用有了一个整体的了解。你很有可能迫不及待地想要开始写代码,我们不会让你失望的。除了本章之外,每一章都会给你介绍新的有价值的代码。
但在开始进入激动人心且充满经济利益的智能应用世界之前,先来看一些带有智能功能的项目中常见的错误,或者说是误区。你可能熟悉分布式计算的八大误 区(如果没有看过,可以参考Van den Hoogen的业界评论),其中列举了第一次开发分布式应用的程序员对分布式应用的常见误区。同样,根据这个传统,我们在这里也会介绍八个智能应用开发中 常见的误区。
1.6.1 误区1:数据是可靠的
很多因素会导致你获取的数据不可靠。在考虑具体的智能算法解决方案之前,首先就要判断数据是否可信。如果数据有问题,就算是最聪明的人,通常也会得出错误的结论。
可能导致数据出错的原因有很多,在此不可能一一列举,下面列出了部分有代表性的可能导致数据出错的因素:
在开发过程中所使用的数据不能代表产品环境中的数据。例如,对某个社交网络中的用户按身高分类"高"、"一般"和"矮"。如果开发阶段所使用的数据中最矮的用户的身高是1米84,那就有可能会得出"你太矮了,才1米84"的可笑结论。
数据中可能含有缺失值。实际上,除非数据是人造的,否则数据就肯定会含有缺失值。缺失值的处理非常需要技巧,通常,既可以保持缺失值状态不变,也可以用某种默认值或是计算得到的值来填充。两种情况都可能导致不稳定的实现。
数据可能会改变。数据库策略可能会变,或者数据库中数据的语义也有可能发生变化。
数据没有规范化。假如我们关注的是每个人的体重。为了能根据体重得到有意义的结论,所有的单位应该是统一的:磅或是公斤,两者只能取其一,而不能是两者的混合。
所想的算法可能不适合数据。数据有不同的形式,也就是数据类型。有些数据集是数值类型的,有些则不是;有些数据集可以排序,有些则不能;有些数值的数据集是离散的(例如,房间中的人数),有些则是连续的(例如气温)。