一个专业选手和业余选手最大的区别不是智商,而是专业选手在解决问题时有一套系统的工作流程和完善的知识体系,使得他每一步的行动不是想到什么就干什么。
一个数据科学家的工作流程简而言之分成以下五个步骤:
清晰地定义问题,写出工作陈述
理解数据
数据清洗与数据探索性分析
特征选取与特征工程
建模、调参
与公司各个部门沟通你的发现包括:决策者、股东、商业分析师、工程师、产品经理和设计师
完善公司的数据科学基础设施
一、定义问题
这是最重要也是最关键的一步,就好像任何一个软件开发生命周期的第一步都是要做需求分析。在开始实实在在地coding前,认真地写说明文档绝不是浪费时间。
经常犯的错误是没有理解商业问题,理解业务需求就匆匆开始建模和编码。常见的商业问题可以举几个例子:
什么指标可以较好地某个公司的股价?
哪些指标可以较好地预测某个网站的流量?
客户可以被细分成哪几类?什么样不同的营销策略对他们有用?
做数据分析不是为了做而做,如果任何数据分析不能给公司盈利带来帮助,不能紧贴业务的需求,那都是YY。
通常,我们需要写一个工作陈述。这也是保护自己的一个重要策略。在陈述中我们要清晰地定义自己的问题、目标,现有的数据能让我们做到什么,不能让我们做到什么。即使项目在某种程度上失败了,我们也能避免来自团队其他人的无端指责。
不求有功,但求无过。
二、观察数据
这是绝对不能跳过但大多数人都跳过的一步。
所谓垃圾进,垃圾出。
开始大干特干前,问问自己:
我是如何获得这些数据的?如果是采样,采样严重有偏吗?
数据的信噪比如何?
这个数据集维多多吗?数据量大吗?需要传统方法解决还是要上重武器(比如Hadoop)
存不存在Unique Identifier?
缺失数据多吗?为什么会有这些缺失值?
三、数据清洗
现实世界的数据是乱糟糟的。工作中绝大多数时间也花在这个部分。
关于数据清洗可以采取以下这些策略:
先在Excel中打开看一下大概的情况,到底有多乱,缺了哪些值?有哪些乱码?
简单地Plot一下数据,看一下大致的分布情况。毕竟统计学的所有核心都是分布。
问自己几个简单的问题,利用自己的直觉和现实经验回答一下,再观察一下和数据展示的情况是否一致。如果不一致是哪里出了问题,或者成为新发现的重要渠道。
在这个阶段需要形成一种对数据视觉上的直觉。那幅图是怎么样的?当然,你心里还要产生各种需要验证的假说。
四、特征工程
特征工程和特征提取是成功建模的基石。它考察你在多大程度上理解商业问题的本质,这个部分其实更考验人对人性、心理、市场和经济学规律的理解。但是重要程度远比你选取哪个机器学习的算法、统计技巧甚至使用哪个优秀的算法重要得多。
这一步做法了,你模型表现能达到的上限也就决定了。
五、建模
建模这一块现在越来越傻瓜化了。很多现成的包也开发的很成熟。
这部分的难点是调参!我们需要不断地在cross validate中,榨干每个模型的所有剩余价值。
六、输出价值
最后,你需要输出你的工作价值。通常你的工作价值分成两种:对人的和对机器的。
对人的就是你需要说服你的上司或者团队同事你的建议是靠得住的,你的发现对公司决策有帮助的。做好这一点的关键是你需要有很强的同理心,站在他人的角度思考问题,毕竟每个人所受的训练不同,所站的立场不同,你对一个产品经理、一个设计师和一个商业分析师讲的三个故事很有可能需要特别定制。
对机器的就是你开发的这套流程(pipeline)能让后来者使用,提升大家的工作效率。这一部分失败原因通常有三个:
程序本身的说明文档不够有解释性导致后来者很难使用
程序本身有问题
程序不够模块化,导致碰到新问题时无法改进
七、迭代、迭代再迭代
第一版结果可以糙但是要快,避免更大的投入,然后做无用功。比如你很有可能发现你手里拿到的数据全都是噪声。如果你太追求完美主义,很有可能让自己做无用功。
能自动化尽量自动化,让程序模块化并且易于修改。
apple用户打赏