读“关于数据科学,书上不曾提及的三点经验”对数据挖掘,机器学习方面的实战感悟

  机器学习,数据挖掘的相关技术书籍里,总会罗列出大量的数学公式和计算方法,就好比烹饪时使用的各项专用工具,但使用这些工具时的一些注意事项或适用场景,以及为什么要适用这个工具,则讲的不够或根本没提。所以,即使看过数本相关书籍,我还是要去找和手头项目比较相似的有实际案例的cook书,才能按图索骥的找到合适的分析算法。

  数学算法,只要有心,有一定的功底,花时间就能掌握,但为什么该这么做&这么做的原因,我始终认为这才是数据挖掘专家的核心竞争力所在。正好今天看关于数据科学,书上不曾提及的三点经验这篇文章里讲到的三点经验,和我自己对这方面的思考有一定的重合,所以在这里整理记录下自己对应的思考感悟,一方面可以方便以后查阅归档,另外也希望和同行们交流探讨,相互启发借鉴。

  下面针对上文中提到的三点经验一一罗列:

  1、评价方法是关键
  初学者常犯的错误就是仅仅关注手头数据集上的表现效果,然后认为在未来数据上同样奏效。
  ......
  如果你只考虑训练集数据,那么机器很容易记住整个训练集,然后返回完美的测试结果(除非数据自相矛盾)。
  ......
  因此合适的评价方法是模拟有未来数据的场景,把数据集一分为二,一部分做训练集,然后在另一部分测试集数据上做预测。

   牢记,训练集的表现效果并不等于实际数据集的分析效果。如果不方便获取未来数据,第一次获取训练集数据时不妨多取点,然后再根据数据集的特征设定自定义抽取规则,从训练集里抽出一部分作为实际使用的训练集。考虑到某些数据的时间特征比较明显,如果随机抽取,导致训练集的数据大部分落在某个时间段内的话,则分析出来的关联模型可能会和真实情况偏差很大。


  2、特征提取是根本
  它们从足够的数据样本里鉴别出有效信息的本领很强大,但如果有效信息并不被包含其中,或者不能用输入特征的线性组合所表示,它们就没有了用武之地。它们本身也无法通过“洞察”数据来完成数据精简这一环节。
  ......
  换句话说,如果找到合适的特征,数据量就能被大大缩减。
  ......
  首先,你必须确保完全理解这些等价算法中的一种,然后就可以一直用下去了。
  ......
  其次,你必须完全掌握特征工程。

  当数据维度很多时,如何剔除和业务需求相关性不大的维度数据是关键。读书时学习数学建模的相关知识时,老师一再强调,在建立模型之前,一定要先找出影响因子最大的变量元素,对应实际需求影响较小的变量,可以先略过暂不考虑,除非发现仅使用选取的变量建立的模型不能较好的模拟实际情况时,才考虑再引入之前忽略的新的变量。的确是这样,昨天参加腾讯云的会议时,会议上的两位技术大牛也都提到了类似的观点,在设计时首先考虑最简单最牢固的方案,要有化繁为简的能力。脑科学家也通过科学实验证实,我们人类的大脑最多同时记住4块模组,即在不搞砸的情况下,我们的大脑同时最多只能跟进处理好4件事情。将其转变到数据分析的评估模型设计上,我觉得上面提到的特征提取,可加上不超过4个特征的原则。如果你设定的评估模型,提取的特征数量超过4个,我觉得与其花时间设计公式和优化算法,还不如先想办法砍掉多出的影响因子不大的特征。


  3、时间瓶颈是模型选择,而非数据集规模
  你的算法同样可能也不需要消耗太多时间计算。但你需要花费大量时间从原始数据中提取特征,通过交叉验证来比较不同特征提取方法和不同算法参数的效果差异。
  ......
  问题归根结底在于组合项的爆发式增长。假设现在只有两个参数,并且训练模型和在测试集上评价效果(按照上述正确的评价方式)需要大约一分钟时间。如果每个参数有5个候选值,采取5折交叉验证(把数据集分成5份,重复训练测试过程5次,每次用不同的一份数据作为测试集),这意味着你需要125轮计算来确定哪种算法效果最好,你的等待时间也将是大约2小时而不是1分钟。

  在选好合适的特征,设计完分析算法,编码实现了评估验证程序并测试成功后,我们分析之路其实才走了一半。后面还要使用训练集数据和之前保留的数据对评估公式的参数进行微调,可能数学软件mathlab/octave能帮我们算出完美契合训练集的精准参数,但一旦加上保留数据,这些参数立刻就从一个数字变成了一个范围。不管是否考虑偏差较大的某些点是否真实可信,各种折腾就来了。

你可能感兴趣的:(商业智能,技术心得)