学会数据挖掘做预测有多难?
数据挖掘是一项应用十分广泛的技术,它能够从历史数据中发掘出有用的规律,然后运用规律去做预测。比如在金融机构中通过挖掘历史用户信息和违约之间的规律进行风险预测,防止坏帐;在营销场景中可以通过挖掘客户消费行为规律寻找潜在客户,进行精准营销;在企业生产中,可以根据历史生产数据来预测良品情况,从而改进工艺降低不良率;在医疗行业可以使用历史医疗记录基于数据挖掘技术找出关联规律,帮助医生更好地诊断疾病……
在科技飞速发展的今天,各行各业都离不开数据,也越来越重视数据的价值,数据挖掘自然而然也成为一项很实用的技能,也是很多人希望掌握的技能。
那么,学会数据挖掘做预测是不是很难呢?
学会做数据挖掘,一般是指能够灵活运用各种常用算法,然后用算法解决工程问题。
但是,对于普通人来说,要实现这个目标其实并不容易。因为数据挖掘是一个涵盖统计学,机器学习和计算机科学的交叉学科,要学的东西比较多,也不简单。具体来讲就是首先必须具备一定的统计学基础,能够从数学层面理解各种算法的原理和逻辑,还要会用编程的手段实现它。
这其中最难的就是数学了。
和数据挖掘相关的数学课程随便一列就有大串:概率论,数理统计,线性代数,随机过程,最优化理论这些基础理论是要懂的,然后还有常见的机器学习模型,比如线性回归,逻辑回归, SVM ,感知机,决策树,随机森林, GBDT , XGBoost,贝叶斯, KNN , K-means , EM 等,以及常见的机器学习理论过拟合问题,交叉验证问题,模型选择问题,模型融合问题等都需要掌握。
如果你数学功底一般,这些东西学起来还是会挺难的,短时间内掌握基本上不可能。
有人会问了,不是有很多封装好的算法可以直接调用吗?比如满大街的 python 培训班,貌似就可以速成。
看起来是这样,但其实并不够。只会调用现成算法而不懂原理,充其量也就是能建出模型,其好坏完全不可控,一旦有问题或是模型效果不好也不知如何调整。
举个最简单的例子,比如原始数据中缺失值,要不要处理?
在调用算法包时会发现有些算法要求数据中不能有缺失,而有些算法即使有缺失值也能跑的通(暂且不论效果如何),如果不理解算法原理就会很疑惑或者想当然的以为是算法的要求不同,其实如果理解了原理就会知道所有算法本身都是不能处理缺失值的,只不过有些算法包在封装的时候作者为了方便将缺失值的处理也封装了进去。
再进一步,对于缺失值该如何处理呢,删除还是填充,如果是填充又该如何填充?
以简单填充为例,是该用平均值填充还是中位数填充呢,有统计学基础的就很清楚要先去分析数据中是否有极值才能决定用哪种方法。缺失值的填充方法还有很多,也比较复杂了,没有这些数学和算法基础时也不知道使用哪一种最合适。
再比如,对于不平衡样本如何处理,数据噪音如何处理,高基数变量如何处理……
即便是封装好的算法也还要设置很多参数,如损失函数,学习率,树的深度,叶子节点等等,不理解数学原理,很难知道怎么用。简单调用这些现成的算法函数,确实也能够跑出来模型做预测。但模型效果又如何保证呢?比如精确度不好,或者不稳定。如果没有这些算法知识就不知道如何改进,只能无方向的随机尝试,如同大海捞针。要知道,有专业知识的选手其实也会用这些现成的函数包,但建一个好模型通常仍然要几天甚至数周时间,其中大部分时间都是在不断地调整优化。并不是把数据往算法里一丢就完事的。
虽然有了封装好的算法,要学会数据挖掘,也还是要学数学,学算法。这事在培训班中速成是没有戏的。
那么,是不是我们就一定得读上 N 年寒窗才能用数据挖掘技术了吗?
也不是,对于普通人来讲也有个捷径,那就利用工具,自动数据挖掘工具。数据挖掘工具将建模所需要知识和流程整合起来,这样就可以利用前人的知识自动建模和预测了。
实际上市面上也已经有不少这样的工具了,比如这个易明建模,嵌入了数据挖掘所需的数学知识和顶级统计学家的经验,使用起来连编程都不需要,效果都还不错。
易明建模采用的是全自动化的建模流程,只需一键式的操作就能够自动进行预处理和模型搭建。什么缺失值,异常值,高基数变量,时间特征……统统不用担心,还有算法选择,参数寻优等,易明建模都会自动帮你搞定。
在算法种类方面易明建模涵盖了常用的机器学习算法,比如线性回归,逻辑回归,树类算法,集成算法,pca 等,能够解决分类问题,回归问题和时间序列问题,大部分的商业场景问题都能用。
在模型质量方面,易明建模拥有顶级科学家的经验和理论,并且经过了大量的实践验证。远远超过培训班选手,能够达到中上等数据挖掘师的水平。当然作为一个通用的数据挖掘软件,和苦读 N 年的专业选手精心调出来的模型可能还会稍差一些,但对于大多数的场合已经足够用了。
易明建模还有一大亮点,就是耗费资源少,建模速度快。百万级的样本量,PC 机也能跑,万级的样本量,更是几分钟就搞定。当然巧妇难为无米之炊,如果小伙伴手上只有几十甚至十几条数据,也是难以建模的。
借助易明自动建模,普通人也能做数据挖掘,重要的是,这么好用的软件竟然还是免费的,免费的羊毛不薅白不薅。
不过,需要注意的是,虽然借助自动建模可以省去学习算法原理的过程,但是一些基本的知识还是要了解的,起码要学会评估模型,知道我们建出的模型到底好不好。
比如模型质量,因为是用于预测,我们很容易简单地想像可以用准确率来评估,然而并不是。数据挖掘模型的质量通常会用一个叫做 AUC 的指标来评估,比单纯一个准确率复杂得多。不同的场景侧重的指标也不相同,比如还有查全率,提升度等。如果是回归问题则需要用 mse, rmse, ……来评估。如果这些都不懂,那样就算能建出模型也是一头雾水。
好在,这些东西虽然听起来有点复杂,但其实学起来并不难,只要有高中数学基础,花一两周时间就能理解学会了,这属于可速成的知识。和学数学,学算法相比,相当于打了一个粉碎性折扣。
这里有一套课程可以看http://www.raqsoft.com.cn/wx/course-data-mining.html,从零开始,深入浅出讲解数据挖掘的基础概念和实用知识,特别偏重从应用的角度教大家如何做数据挖掘,课程中的一些案例也来源于真实业务场景,很适合没什么基础的人看。