草庐IT

深度揭秘,为什么你做数据分析没思路?

接地气的陈老师 2023-03-28 原文
​很多同学抱怨:“做数据分析时没思路!” 实际上,有很多原因都会导致这个结果。今天系统盘点一下。

有些情况,是数据分析师自身的问题,常见的有以下三种:

问题1 :拿着锤子找钉

数学、统计学、运筹学是有很多方法的,而看书本身能让人感到充实。于是,就有一些看书入迷的同学,开始拿着锤子找钉。比如今天看到统计学正态分布,好爽,于是看谁都像个正态。明天看到回归分析一章,看谁都想回归一下……

这么干会惹麻烦的。比如就有同学算活动效益,非把活动经费和总业绩做回归,然后看着R平方值说活动没有效果。结果自然被业务喷得体无完肤。

而且,这么干也没有真正读懂书,真要是读懂了,起码区分下:

  • 是抽样统计还是整体统计
  • 是预测问题还是分类问题
  • 是已有标注但是没有标注
  • 手头数据有没有内在逻辑
深入业务场景,才知道适合书上的哪种方法。而各种书本方法,是有固定应用场景的。

问题2 :拿着鞋子套脚

这个是上一类问题的兄弟,都是书呆子行为,不过书从《统计学》换成了《管理学》:

因为书上有4P,所以先画四个P的框框

因为书上有PEST,所以先画四个框框

因为书上有RFM,所以先算个RFM

然后呢?……然后就头晕了,不知道咋整,然后被评为:“你这做的都是啥……”

解决方案和上个问题同样,先理解业务场景,找到真正的问题,再组织方法。而不是先拿个套子,见啥都套一下。数据分析是为业务服务的,业务到底对问题了解多少,是分析的起点(如下图)。

问题3:拆解everything

这个也很常见,就是不管问题是啥,先拉一堆交叉表。

比如分析DAU,就把DAU和性别、年龄等维度一通交叉

比如分析GMV,就把GMV和性别、年龄等维度一通交叉

还美其名曰:数据分析的灵魂就是对比,核心就是拆解

结果是:在缺少逻辑,缺少假设的前提下,对比越多,思路越乱。经常干出来苹果和犀牛对比的囧事。而且这种漫无目的的交叉,经常把业务思路带歪。业务部门会抓着你,让你一句句解释:为啥这里差异5%,那里差异3%,最后思路越搞越乱……

所以对比可以做,但是先列清假设,打好标签,做到苹果比苹果,才能有发现。

有些情况,不见得是数据的问题,数据只是背锅的,常见的有以下四种:

问题4:没有业务目标

比如:

做指标监控,指标考核要求是啥?不知道

做活动分析,活动要提升啥指标?不知道

做产品分析,产品改版目的是啥?不知道

然后就不知道该咋分析了……

这种情况下,确实不知道咋分析呀。就像射箭,要先有个靶子,才知道射得准不准。连靶子都没有,闭着眼睛“走你!”乱射一通,然后让分析这通乱射是不是有改天换日的效果,啊呸!分析个屁。

当然,这个问题大部分是业务搞出来的。但是提醒做分析的同学们,一定要先问清目标。并且主动提示业务部门:目标都不清晰,分析自然不清晰。不然这里是很容易被甩锅的。很多业务部门,自己不设目标,然后逼着数据分析师写:“这通乱射极大提升公司业绩!”然后被老板责问的时候,就推说“这都是数据分析写的呀,我是清白的”……

定目标的方法有一大堆,不要说不知道咋定哦(如下图)。

问题5:目标混杂,自欺欺人

这个问题,是“没有目标”的反面,就是业务部门干了一点点活,结果吹得惊天动地。比如他们投放了一张10元优惠券,然后开始吹:这张10元券,上能拉升GMV,下能唤醒老用户,中间能促成新用户。反正功效大大的有,然后要求数据分析分析出来每一个效果到底有多少,还得给出可落地的建议……

很多同学脑子被搅糊涂了,这都是啥玩意!我到底要咋分析!不知道咋做就对了,因为这本身就是在胡搅蛮缠。每一类业务做法,有固定的形式。没有那么多“一招鲜吃遍天下”的搞法。所以想形成思路,我们自己得了解业务常见套路和固定形式,这样面对这种胡搅蛮缠才能分清情况。

问题6:业务手段贫瘠

最常见的就是:用户画像、流失预测、商品推荐这些项目,数据做了一大堆,业务没啥招数。

你辛辛苦苦预测了不同用户的流失概率,结果呢?业务那边就全量发个短信召回……短信yeah,全量发响应率也不到1%,这做不做模型有啥区别。然后到头来,业务还吐槽:“你这分析得没啥用呀”

商品推荐也是,很多公司丫都拿不出几款强力的商品。为了推荐而推荐,整几个毫无竞争力的垃圾商品,然后跑过来责问:“为啥分析得没啥用。”

这种责问,会让做数据的同学陷入深深地自我怀疑“我是不是思路错了”。然而不需要怀疑,这不是思路有问题,而是业务手段贫乏导致无法落地问题。

想破这个局:得做好基础分析,对商品、用户、业务手段有基础了解,知道目前公司的能力有几斤几两,这样才好识别:到底是我思路不对,还是这帮哥们就这两下子?

问题7:缺少迭代,没有积累

好的数据分析模型,是迭代出来的,不是天下掉下来的。明确一个目标,进行多轮测试,摸清每一种业务手段的能力上限、下限,这样才能看清哪种方法有用,才能发现内在逻辑,才能积累分析经验,这是正道。

可有的企业就是喜欢走歪门邪道,比如:

1、做业务方案“既要XX,又要XX,还要XX,协同XX,合力XX”目标一大堆,到底要测哪个方向不清楚

2、天天让分析、分析、再分析,就是不要做测试

3、天天让分析、分析、再分析,分析完了,业务用了一套完全不同的思路去测试

4、达不到目标,就改目标,粉饰太平。

这样做,就像没头苍蝇。完全不用形成有效的经验积累,最后自然颗粒无收。然而深陷其中的同学,只是感觉到自己脑子嗡嗡的,喜欢怀疑:是不是我思路不清楚……这个真不是,这个是标准的乱自上作。

小结

数据分析要紧密结合业务,分析思路也是如此:

  • 结合具体业务场景
  • 有清晰的问题和目标
  • 有逻辑的进行论证
  • 通过测试检验结果
  • 通过多轮测试积累经验
这是让自己分析思路越来越清晰的正途。

当然,有些公司环境就是不好,导致同学们在工作中总是被PUA“你思路不清楚呀”。这时候,大家只要做好自己本职工作,多积累具体问题点上的实操经验,就有机会跳槽离开这种脑残公司,找到更合适自己的工作。所以细节讨论是很重要的,不考虑细节,流于理论或者流于表面,就会像本文开头一样出洋相了。​

有关深度揭秘,为什么你做数据分析没思路?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  6. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  7. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  8. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  9. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  10. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

随机推荐