查看原文
其他

案例 | 鸢尾花案例之必须说在前面的话

叉烧 CS的陋室 2022-08-08

往期

熟悉机器学习的同学应该知道,鸢尾花是一个非常著名的案例,运用多种方法进行分类,而且是一个比较理想的数据集,一版只要方法没问题,就会有比较好的结果,当然,也很多人写过相关的案例,那么我这一系列要讲的,重点就放在一些细节、软技能上,去解决一些可能案例里面比较理想但现实比较尴尬的问题。

任何的实验课第一节,都没啥机会让你动手,大家应该都是知道的,先把一些实验之前需要说清楚的事情说清楚,那么这次,我要说的就是整体的一个流程,这个流程可能鸢尾花的例子不涉及,但是在思考的过程中,这些步骤不能跳过!

环境

首先来谈的是环境。

  • python3.6(anaconda)

  • 以sklearn为核心的算法包,当然可能涉及numpy等相关的数据处理

  • 环境用的是jupyter,同样的我也会给出纯py版本,供大家直接练习

但似乎,第一讲可能还不需要给什么代码。大量的东西需要在开始分析之前讲清楚,而这些东西往往比代码本身来的更加重要。

数据分析项目的主要流程

目标和需求分析

不仅是数据分析项目,其实很多事情,在做之前都需要解决一个问题——“做这件事情的目标是什么”,道理显而易见,但是在每一件事都能想到这一步并且做好的人其实并不多,因此在这里我必须强调一下这个事情。不清楚目标就在做一个事情,结果往往不好。

在鸢尾花的案例里面,目标很简单也很清楚,就是希望通过给定的指标,建立合适的模型去区分不同的鸢尾花,所以才说这个是一个很简单的问题。

在很多现实的项目中,问题可就不那么明确了,例如就是要分析一个产品的好坏,这个概念非常模糊,什么叫做好?你其实一开始不清楚,你需要通过一定的指标才能够衡量,而找指标又是一个很复杂的工作,这个时候就需要你去细化,很细很细。

指标设计与数据探索

指标是评判事情的标准,怎么去分析一个产品的好坏,首先需要看视角,从用户而言那就是该产品能满足用户什么需求,解决什么问题,用起来还很方便,而从企业而言,那就是用户的使用量(注册量只是一个不太靠谱的指标,因为大量的人注册了也不会用,你想想你自己就知道了,很多账号申请了就为了下载啥东西,然后就不再进去了对吧),使用量又是十分模糊的概念,在订阅类产品里指的就是用户的阅读量(阅读量其实也不见得是一个好指标,例如你看了第一行发现是标题党直接走了)、阅读时间(这个指标我感觉还行)、转发量(除了转发后会送啥东西的,其他的其实也还行),在娱乐软件里面的,例如王者荣耀,那就是游戏时间等。

指标的制定很难,一方面就是要根据业务本身来制定,要求合适的,准确的,有表现力的,显著的。而另一方面,就是要和数据有关,巧妇难为无米之炊,没有数据,上面的指标都白搭。

数据探索是制定指标的一个重要步骤,很可能你想的指标并不存在在你所有的数据集里面,或者是即使有,但是质量不高,例如有缺失值和异常值之类的,再者,有些指标不如你想象的对你的目标很显著。

因此在我看来,数据探索主要要完成下面几个事情

  • 指标的存在性

  • 指标对应数据的可靠性(数据质量问题)

  • 指标数据与目标之间的显著性(业务显著性和数学显著性)

指标换句话,也可以被称为特征,专门的,也有相关的科目,成为“特征工程”,主要涉及特征的筛选,这块也是难度非常大的一块,俗话说:“特征选不好,调参调到老”,因此,成为一个非常困难的点。

数据预处理

数据预处理是在选定一定数据集之后要做的第一步,主要是为了提升数据的可靠性、降低缺失值、异常值、噪音数据对后续分析的影响,所以主要就是这些异常数据的检测、异常派出和评估。

这块谈的人已经比较多了,具体怎么操作我直接在案例开始之后通过案例和大家解释吧。

建模

哼哼哼,终于到了建模了,应该是大家最为期待的一环了,那我们来探讨一下。

建模是讲已知数据进行处理得到结果与结论的过程,是面向目标的,这里先强调几个点:

  • 黑猫白猫,能抓的到老鼠的就是好猫。不求最高新的技术,要求的是能够解决问题,解决问题是第一目标!

  • 先想可行方案,再来优化。先用最简单、最快、最容易想到的方法,然后根据结果和需求查看是否进行进一步的改进。

  • 建模不是拍脑袋。多去看看别人用的都是什么方法,结果又怎么样,再进行选择,有自己的创新是好事,但是——请看第三条。

  • 持续沟通。做项目,和客户沟通,和需求方沟通,和上级沟通,和同事沟通等等,只有持续沟通,才能了解项目的实际进展和需求,有些东西是越辩才会越明的。

所以对于建模,怎么建立的问题,我的建议是首先看别人在类似问题的解决方案,百度,谷歌,专题网站,甚至是论文等等,在有基模型的基础上根据实际问题进行改进,这才是最为快捷可靠的思路。

结果评估

结果评估,一方面是模型的可靠性,另一方面是模型得到的结果的可靠性,两者不同,前者是后者的必要条件。

模型的可靠性主要评判模型的准确性。对于分类模型,那就是查全率(准确率)、召回率(查准率)、F1值、AUC&ROC等,对于回归,那就是RMSE等,还有其他模型不再列举,其实就是去判断,你建立的模型是否能够达成你的建模目标

而模型得到的结果的可靠性,其实就是看,假设模型是没问题的,跑出来的结果是什么,这个结果甚至会直接面向决策,例如我分析的结果是该营销方式对提升用户的活跃度有显著影响,那我们就可以开始投放该营销方式了,在鸢尾花的例子里面,那就是我可以根据这些指标去判断鸢尾花的种类了。

如果通过评估,则可以得到一些重要结论,开始进行一定的决策了,如果不能通过,则必须回到前面的步骤,剖析原因,是问题的理解不对,还是指标设计的不好,数据质量不高,模型设计不合理等,都是重要原因,而这些原因,都是十分重要的。

数据展示

这是一个额外的流程,不是所有项目都需要,但是很重要,数据展示是面向团队、面向客户、面向需求方等多方面的一个重要的沟通和桥梁。这块内容同样比较复杂,不展开,在具体的案例开始的时候我再详细讲。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存