机器学习发展到今天已经有众多优秀前辈给我们贡献了各种各种现成的开源包
以最流行的 Scikit-learn 为例,提供了包括回归 (Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering) 等方法的开源包,使用者可以灵活的实现各种建模操作。但是也有人发现了,同样的开源包不同的人建出的模型效果是不一样的,甚至大相径庭。为什么大牛就能建出高质量模型,而我基于开源包建的模型效果总是不尽人意呢?主要原因有以下三点:
首先是数据本身质量差。数据挖掘就像挖金矿,含金量高,那么挖掘难度就小,出金率就高,反之含金量低,那么就会难度大效果差。数据问题大概可以从 2 个方面来考虑,首先要检查数据量是否充足,大部分的机器学习算法都需要一定量的数据才能正常工作,太少的数据量会导致建模失败或模型效果不好,尤其要注意不平衡样本中阳性样本的数量;其次要分析参与建模的数据样本和特征分别是否具有代表性,例如要通过民调来预测美国总统大选,那么民调的样本要具有全面的代表性,不能只抽查偏向某一方的人群或地区,除了样本要有代表性数据特征也要有充足的相关性才容易建出好的模型。
但是,我和大牛使用的是同样数据,建出的模型依然不好,又是怎么回事?
第二个原因是预处理没做好。原始数据往往是不能拿来直接建模,还需要做预处理,预处理做的是否合适会对模型结果产生很大影响。但同时预处理也是一件十分头大的工作,因为它没有固定的方法可言,数据特点和分布不同预处理的方法也就不同,需要不断地去尝试,这也正是为什么我们使用开源包复制了别人的流程,也依然效果不好的。以简单