近半年数据分析工作的总结----或者说所踩的坑的总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了近半年数据分析工作的总结----或者说所踩的坑的总结相关的知识,希望对你有一定的参考价值。

1. 算法(数学)原理重要不重要?

    不重要。因为不懂数学,你也可以把数据扔进Sas,选择一个名字看起来有逼格的算法,然后CPU煎个鸡蛋,结果就出来了。还能配上不明觉厉的图形化结果。更有逼格的,网上搜一下‘R/Python  xxxx算法 代码‘,再吃个煎鸡蛋,结果也出来了。塞到TableAU搞一下,打完收工! /摊手

    不重要。因为不同算法,对同一套测试数据来说,结果都差不多。顶多这个算法好一点点,那个差一点点。结果很差说明算法完全不适用。

    很重要。

    不懂原理,就不会明白算法如何工作,每个参数代表的含义,如何去优化参数得出更好地结果。

    不懂原理,就不会知道:朴素贝叶斯在小规模算法中效果更好。如果测试数据不是条件独立,它杯具了。决策树对数据表现形式要求不高,尤其是随机森林,貌似是万能算法。然而如果决策树在测试数据上得分很高,它很有可能杯具了。线性回归,最小二乘法容易实现,速度飞快。然而,如果数据不是线性关系,它杯具了。如果超出测试研究范围,结果更杯具。Logistic回归,包括岭回归,LASSO回归,Elastic Net。后三者更适合高维数据。LR很快,但是只能处理2分类问题,而且精度不高。因为LR的输出结果是概率,当概率接近于阈值时,其分类并不严肃。KNN分类简单成熟,然而它计算量很大,需要大量的内存,它无法处理样本不平衡问题。K均值聚类原理简单,但是参数敏感,需要不断调试。

    不懂统计原理,就不会知道F检验是什么,什么是T检验,它们怎么使用。如何判断变量独立还是线性相关。为什么要用方差、均值、中位数、百分位数来描述一组数据的特性。为什么数据的分布对算法这么重要。为什么出来正确率还要有错误率,召回率等其他指标?

    结果得分很高,有时候并不代表算法参数很好,而是过拟合发生了。分层抽样,交叉测试,改变算法是可以尝试的方法。

    关于算法的好多内容,我也记不清了。需要的时候找一找资料,就能看懂。

 

2. 在数据清洗中作弊?

    为什么说作弊?

    这是我发现在工作中的一个疏忽后的总结。当时在补充某个变量的缺失值时,使用了线性回归去拟合。经F、TR检验后效果还不错。一时得意忘形把训练和测试数据的缺失值都打了补丁。结果后来发现这个变量在测试中表现异常优异,在交叉测试中也一样,因为这相当于考试前老师提前划了重点,圈了例题。然而实际应用中它的表现却让人不忍直视。避免这种情形,需要将在测试数据中发现的规律应用到测试数据,而不是把训练、测试数据放在一锅里炖出个未来。

   

3. 数据质量是重中之重!

    所有基于虚假的、错误的数据的分析都是耍流氓

 

4. 厚脸皮向人请教,尤其是业务知识

    数据分析不能闭门造车,要贴近一线用户。只有他们才懂真实业务,更清楚数据分析的目标,或者说目标的意义。

 

以上内容纯属本人的絮叨,如有错误欢迎不吝指正

以上是关于近半年数据分析工作的总结----或者说所踩的坑的总结的主要内容,如果未能解决你的问题,请参考以下文章

symfony3 使用命令行工具生成Entity实体所踩的坑

自制弹出框所踩的坑

给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑

总结搭建Oracle11g DG踩的坑

Vue cli3.0搭建及过程中遇到的问题总结

golang 学习过程中踩的坑