上篇即第一篇文章简短的介绍了机器学习,让读者大致了解了机器学习是干啥的:
先来看看机器学习具体解决一些什么问题,从功能的角度出发,机器学习主要可以具体解决以下两个问题:
1、分类与预测问题
分类与预测问题是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),通过构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到原先定义好的类别。而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值。
应用实例:手写数字的识别(分类)、垃圾邮件的识别(分类)、电影票房的预测(回归分析)、未来房价的预测(回归分析)
2、聚类问题
分类问题是已知结果对数据特征进行分类,属于“监督学习”,而聚类则不需要知道样本所属标签,即没有给定划分类别的情况下,根据数据之间的相似度对数据进行划分,属于“非监督学习”。如常见的k-means聚类算法,通过样本之间的距离将数据分为k类。
应用实例:卖家对消费客户进行划分,新闻分类等。
数学知识基础
机器学习离不开算法,算法的根本就是一大堆数学公式,代码知识用来实现这些公式的工具,所以学习机器学习的第一步就是要有一定的数学基础。机器学习中主要运用的数学知识为:微积分、线性代数、概率与统计。比如算法中经常运用的梯度下降法与牛顿法就是微分知识的运用,本质是“梯度下降法使用平面去逼近局部的,牛顿法使用曲面去逼近局部的。为达到高效的运算,运用矩阵是不可避免的,这就属于线代的知识了。概统与机器学习是密不可分的,从本质来说机器学习本身就是在不断的运用概统。
梯度下降
编程基础
对算法有了一定的了解之后,如何去进行实际应用呢,当然需要去编程实现它。不管是自己实现还是看别人的代码,都需要由一定的编程基础。而在机器学习中运用最普遍的编程语言当然是python了,简单易懂,且包含大量的数据分析库。安装好python核心程序后,需要安装一些第三方库。而Anaconda将大量流行的数据分析库进行了集成,安装好python后推荐安装Anaconda,这样就可通过Anaconda方便快捷的安装第三方库了。如果需要安装IDE的话,建议安装PyCharm,下面简单介绍python中常用的一些数据分析库:
Numpy:提供数组支持以及相应高效的处理函数;
Scipy:提供矩阵支持以及矩阵相关的数值计算模块;
Matplotlib:强大的数据可视化工具、做图库,可看作matlab作图;
Pandas:强大的数据分析和探索工具,构建在Numpy之上,支持类似于SQL的数据增、删、查、改,且带有数据处理函数,支持时间序列分析功能,支持灵活处理确实数据等;
Scikit-Learn:是python下强大的机器学习工具包,提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测和模型分析等。
Keras:深度学习库,用于建立神经网络及深度学习模型,是一个基于Theano的强大深度学习库,不仅可以搭建普通的神经网络,还可搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等。
机器学习工作流程
明确具体问题是机器学习的第一步,明确问题后,需要确定解决该问题需要用到机器学习的哪个具体方法,是分类问题、回归问题还是聚类问题或是其它某类问题。
1、获取数据
进行机器学习首先必定要获取要学习的数据,数据决定了机器学习结果的上限,而算法是需要尽可能的去逼近这个上限。数据的获取有很多方式,网上也有很多的公开数据集。如果自己的数据比较少,可以在网上找些相关的数据进行训练后用自己的数据进行微调。或使用对抗网络生成更多的数据。
2、数据预处理与特征选择
从原始数据中提取出良好的特征才能使机器学习得到良好的结果。数据预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等。可以看看数据挖掘方面的资料。
筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。
3、训练模型与调优
现在很多算法都能够封装成黑盒供人使用,但需要调整这些算法的(超)参数,使得结果更加准确,这就需要我们对算法的原理有很深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。
4、模型检验
模型训练好后,怎样知道该模型的好坏呢,是否可以将该模型应用解决问题呢。过拟合、欠拟合 判断是模型检验中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
误差分析也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题等等。
诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。
5、模型融合
一般来说,模型融合后都能使得效果有一定提升。工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。
6、应用最终模型进行预测
模型在线上运行的效果直接决定模型的成败。 不但包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性等问题。
学习途径
除了平时进行的一些机器学习项目外,可以参加一些有关机器学习与人工智能的比赛如Kaggle、天池、Kesci、DataCastle上面的比赛,比赛提供的数据都是实际问题中真实数据,通过比赛可以锻炼自己用一些机器学习的算法去解决实际问题的能力。平时也可多浏览浏览如GItHub等一些开源社区,了解一些有趣的机器学习算法与应用。
最后推荐一下斯坦福大学Andrew Ng老师的机器学习课程,可以在网易公开课上搜索到。
下一篇准备介绍一下机器学习中所用到的一些具体算法。
更多机器学习相关内容请关注“机器学习与实践”公众号:
部分参考:
张良均,王路等,《Python数据分析与挖掘实战》;
http://www.360doc.com/content/18/0810/20/58578495_777298513.shtml