一个完整的机器学习项目大体有如下步骤(kaggle比赛流程也大体如下):
首先、将所要解决的问题抽象成机器学习的问题(类似数学建模),目标问题到底是一个什么问题,分类,回归还是聚类问题,要达到的目标是什么,对准确率的要求等。
其次、明确该项目可以获取哪些数据,大概有多少样本,多少个特征,训练的时候内存占用量,需不需要用分布式,
接着、考虑对特征数据做处理和选择,包括特征筛选,数据清晰,归一化,缺失值处理......,然后利用特征选择的方法,比如相关系数法,卡方检验,逻辑回归权重选择,平均互信息等,如果需要,还可以进一步用PCA,LDA等方法降维。
然后 就是模型选择、训练与调优,根据样本大小特征选择相应模型,然后对参数进行调优,随后还需要模型诊断,进行特征融合,模型融合等进一步提高预测效果
最后、经过测试,方差可以接受以后就可以提交上线。
---------------------
原文:https://blog.csdn.net/meihao5/article/details/79507010
什么是机器学习 计算机程序如何随着经验积累自动提高性能系统自我改进的过程
机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。机器能否像人类一样能具有学习能力呢?
在图像识别、语音识别、天气预测、基因表达等方面。目前我们通过机器学习去解决这些问题的思路都是这样的:
从开始的通过传感器来获得数据。然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的。 中间的三部分,概括起来就是特征表达。良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。但这块实际中一般都是人工完成的。
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的
1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点; 2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。 与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
AutoEncoder自动编码器
,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。
自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表原信息的主要成分。
我们就通过调整encoder和decoder的参数,使得重构误差最小,这时候我们就得到了输入input信号的第一个表示了,也就是编码code了。因为是无标签数据,所以误差的来源就是直接重构后与原输入相比得到。
2)通过编码器产生特征,然后训练下一层。这样逐层训练:
我们将第一层输出的code当成第二层的输入信号,同样最小化重构误差,就会得到第二层的参数,并且得到第二层输入的code,也就是原输入信息的第二个表达了。其他层就同样的方法炮制就行了。
3)有监督微调
到这里,这个AutoEncoder还不能用来分类数据,因为它还没有学习如何去连结一个输入和一个类。它只是学会了如何去重构或者复现它的输入而已。或者说,它只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。那么,为了实现分类,我们就可以在AutoEncoder的最顶的编码层添加一个分类器(例如罗杰斯特回归、SVM等),然后通过标准的多层神经网络的监督训练方法(梯度下降法)去训练。
我们需要将最后层的特征code输入到最后的分类器,通过有标签样本,通过监督学习进行微调,这也分两种,一个是只调整分类器(黑色部分):
另一种:通过有标签样本,微调整个系统:(如果有足够多的数据,这个是最好的。end-to-end learning端对端学习)
在研究中可以发现,如果在原有的特征中加入这些自动学习得到的特征可以大大提高精确度,甚至在分类问题中比目前最好的分类算法效果还要好!
利用决策树方法进行数据挖掘,一般有如下步骤:数据预处 理、决策树挖掘操作,模式评估和应用。
数据预处理 数据挖掘的处理对象是大量的数据,这些数据一般存储在数 据库系统中(该用户相关数据存储在其CRM中),是长期积累的 结果。但往往不适合直接挖掘,需要做数据的预处理工作,一般 包括数据的选择(选择相关的数据)、净化(消除冗余数据)、转换、 归约等。数据预处理工作准备是否充分,对于挖掘算法的效率乃 至正确性都有关键性的影响。 该公司经过多年的电脑化管理,已有大量的客户个人基本信息 (文中简称为客户信息表)。在客户信息表中,有很多属性,如姓名 用户号码、用户标识、用户身份证号码(转化为年龄)、在网时间 (竣工时间)、地址、职业、用户类别、客户流失(用户状态) 等等,数据准备时必须除掉表中一些不必要的属性,一般可采用面 向属性的归纳等方法去掉不相关或弱相关属性。