数据和算法的相爱相杀(一):获取数据要注意什么?
作者接下来将用几篇文章能够给大家由浅入深的谈谈对数据和算法的认识,希望大家能对数据和算法有基本全面的认识,常用领域和技巧,数据的获取注意事项,常见的算法的理念和用处。本文是第一篇。
大数据自2000年以后,随着数据积累和数据处理的能力指数级提高,大数据雨后春笋般从理论走向了实践。尤其是Google、Facebook、Amazon、oracle等公司,在国际上率先开展了大数据相关的业务,或用于公司内部的使用或对外开放能力。大数据就这么火起来了。
这时大部分局外人尚处于对大数据的敬畏无措之中,只知数据之大,不知算法之艰。随着人工智能打开了人们新世界的大门,机器学习尤其是神经网络等算法被大众所知,算法也终于和数据站到同一个高度,被人关注。
时至今日,没有人敢轻视数据和算法的重要性,计算机的信息化将这个物体的世界抽象成了信息,大数据将信息抽象成了更小粒度的信息,算法让我们认识到了数据的复杂性和规律性。算法看到了一般人看不到的东西,算法做出了一般人想不到的预测,算法提出了一般人提不出的警告。可以这么说数据是人体的躯干,而算法则是人体的大脑。
数据在百科的解释是:
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0、1的形式表示。其实数据并不神秘,获取也不艰难,相信浏览这篇文章的产品经理或多或少的都与数据打过交道。我在这文章余下的部分就重点讲一下获取数据应该注意的事项。
1、如何让你的用户或者客户乐意分享自己的数据
在之前的工业社会中,为了提高单位时间内的产量,我们的产品也来越标准化,进入互联网时代这种思维也延续下来,但是随着产能过剩和人差异化的需求,我们需要提供越来越多差异化的服务和产品,这就要求我们要足够了解在互联网另一端的人,基于此,千人千面,差异化服务越来越受到到家的重视。而这一切都有一个起点:用户必须自愿或者不得不分享他们的信息,我认为可以分为以下几个方面:
- 利益交换——用户分享了自己的信息能获得什么,我为什么要给你信息?
- 设计产品信任路径——你是否在整个用户历程中设计了重要的信任构建时刻?
- 分享信息不等于泄露隐私,你的产品能否让用户觉得你尊重他的隐私——你的产品围绕隐私的行动是否与自身的价值观一致?
2、做到数据规整,这在后面的挖掘中至关重要
你的数据必须是规整的,我的建议是在一个平台内,或者多个平台内。对于国标数据优先使用国标数据,如果没有国标数据则参考行业标准或者根据自己的情况实际设立标准,并在不同的平台之间共用这一套标准,这是为了确保后面可能进行数据统一化挖掘的过程中统一计量单位。
同时对于常见的计量单位优先使用国内的标准,我国的计量单位多与国际计量单位相同,这是一个优势。比如可以用 米
就别用英尺。
还有数据形式和规范,或者说数据类型,有些是离散化的数据(参加活动的人数),有些是连续型的数据(比如身高,体重),有些是有限集的,而这些集合基本能被有序排列。统一规范和形式,这对后面算法的设计至关重要。
在开发过程中,往往和实际情况下的数据分布不同。例如也许你想把用户按照体重划分为“胖”“适中”“瘦”三档,但如果系统开发时使用的数据集里最低用户的体重是80kg,那最后的分析结果里可能会有一个160斤的瘦子。
3、数据缺失了怎么办
在我们的产品数据库中数据缺失是很正常的,没有一个产品数据百分之百健全的,实际过程中,我们有两种策略,一种是直接全部丢弃参阅严重的数据列;另外一种就是想办法补全这些缺失的数据,去数据列中数据的均值填充进行,实际上我们应该清楚无论哪种一种方式,都会对接下来分析的准确性造成影响。
4、为什么要尽可能的提高数据的规模
数据规模影响可以分三个方面来分析:
- 数据规模会影响算法的计算时间,算法的效率决定了用户在使用过程中的体验状况。
- 数据规模对于算法的精准度有至关重要的影响。
- 数据达到一定的规模后可以掩盖数据缺失造成的影响。
5、不要让数据的预测去迎合你
产品或者运营人员经常会基于自己的主观认识,尝试去预测当前的用户情况,交易情况等。但是在大量的数据集合中,人类基本已经丧失了寻找规律,需找特征的能力,所以不要尝试和数据的预测作对。因为大数据总输入信息间形成的组合关系会快速增加,这让人很难像对中等数据集合那样能够对其中一部分数据进行抽样观察。
更麻烦的是,特征数量增加时人类对数据的直觉会迅速降低。例如在高维空间里,多元高斯分布并不是沿着均值分布,而是像一个扇贝形状围绕在均值附近,这和人们的主观感受完全不同。在低维空间中建立一个分类器并不难,但是当维度增加时,人类就很难直观的理解了。(举例来自直接搬砖,向不知名人士表示感谢)
6、回答一下程序员哥哥们的提问(产品止步)
在JSON数据获取中,ajax后台获取数据之后,在前台返回的时候,有时候显示的是杂乱无章的信息,并非你想要的,其一的原因是一定要 response.getWriter.print() 后response.getWriter.flush (),然后 response.getwriter.close()。
如有不同意见,欢迎拍砖。将继续更新,请大家关注。
本文由 @没空儿 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自 Unsplash ,基于 CC0 协议
噢