1. 算法(数学)原理重要不重要?
不重要。因为不懂数学,你也可以把数据扔进Sas,选择一个名字看起来有逼格的算法,然后CPU煎个鸡蛋,结果就出来了,还能配上不明觉厉的图形化结果。更有逼格的,网上搜一下'R/Python xxxx算法 代码',再吃个煎鸡蛋,结果也出来了。塞到TableAU搞一下,打完收工! /摊手
不重要。因为不同算法,对同一套测试数据来说,结果都差不多。顶多这个算法好一点点,那个差一点点。结果很差说明算法完全不适用。
很重要。
不懂原理,就不会明白算法如何工作,每个参数代表的含义,如何去优化参数得出更好地结果。
不懂原理,就不会知道:朴素贝叶斯在小规模算法中效果更好。如果测试数据不是条件独立,它杯具了。决策树对数据表现形式要求不高,尤其是随机森林,貌似是万能算法。然而如果决策树在测试数据上得分很高,它很有可能杯具了。线性回归,最小二乘法容易实现,速度飞快。然而,如果数据不是线性关系,它杯具了。如果超出测试研究范围,结果更杯具。Logistic回归,包括岭回归,LASSO回归,Elastic Net。后三者更适合高维数据。LR很快,但是只能处理2分类问题,而且精度不高。因为LR的输出结果是概率,当概率接近于阀值时,其分类结果并不严肃。KNN分类简单成熟,然而它计算量很大,需要大量的内存,它无法处理样本不平衡问题。K均值聚类原理简单,但是参数敏感,需要不断调试。
不懂统计原理,就不会知道F检验是什么,什么是T检验,它们怎么使用。如何判断变量独立还是线性相关。为什么要用方差、均值、中位数、百分位数来描述一组数据的特性。为什么数据的分布对算法这么重要。为什么出来正确率还要有错误率,召回率等其他指标?
结果得分很高,有时候并不代表算法参数很好,而是过拟合发生了。分层抽样,交叉测试,改变算法是可以尝试的方法。
关于算法的好多内容,我也记不清了。需要的时候找一找资料,能看懂就行。
2. 在数据清洗中作弊?
为什么说作弊?
这是我发现在工作中的一个疏忽后的总结。当时在补充某个变量的缺失值时,使用了线性回归去拟合。经F、TR检验后效果还不错。一时得意忘形把训练和测试数据的缺失值都打了补丁。结果后来发现这个变量在测试中表现异常优异,在交叉测试中也一样,因为这相当于考试前老师提前划了重点,圈了例题。然而实际应用中它的表现却让人不忍直视。避免这种情形,需要将在训练数据中发现的规律应用到测试数据,而不是把训练、测试数据放在一锅里炖出个未来。
3. 数据质量是重中之重!
所有基于虚假的、错误的数据的分析都是耍流氓
4. 厚脸皮向人请教,尤其是业务知识
数据分析不能闭门造车,要贴近一线用户。只有他们才懂真实业务,更清楚数据分析的目标,或者说目标的意义。
以上内容纯属本人的絮叨,如有错误欢迎不吝指正