写在前面:
由于涉及机器学习领域还不深,只是在一边学习一边实践阶段,所以所写内容仅代表我学习《机器学习实战》书籍的笔记。不足之处请大家批评指正!
1.什么是机器学习
机器学习是一门通过编程让计算机从数据中学习的科学。
类比“人类学习”,我们从小开展的学习,都是在已有的数据、书本上,总结规律、发现相似问题、解决相似问题,用总结出来的解决问题的方法去解决更多的实际问题。“机器学习”也是一样,从给定的数据中发现规律,建立模型,把测试数据输入得到学习结果。
2.为什么使用机器学习
机器学习与传统方法相比,有优有劣。在数据量较少时、项目层级较简单时,传统方法会比及其学习更省时省力,因为在构建模型阶段,我们需要花较多时间调整参数或者调整模型,让机器学习达到理想效果,这比传统方法要冗杂一点。
但是当我们面对的数据集过大、系统较难维护、项目层级复杂时,机器学习是我们很好的帮手。前期通过模型对比、选出较好模型、调整参数…将模型构建好后,后期只需要定时维护(甚至我们可以设置自动定期训练模型、更细腻参数)就能达到更好的效果。
3.应用方面
1.图像分类
eg:分析生产线上的产品图像对产品进行自动分类
2.语义分割
eg:医疗上通过脑部扫描发现肿瘤
3.自然语言处理
eg:在新闻app上,上传新闻后会根据内容自动分类到相同标签中去
4.文本分类
eg:自动标识恶评
5.异常检测
eg:异常来电拦截
6.聚类问题
eg:网购平台通过浏览记录对用户分类,推送更多相关内容
7.数据可视化
eg:用清新有洞察力的图表表示复杂的高维数据
8.强化学习
强化学习是机器学习的一个分支,在一个给定的环境中,训练代理选择在一段时间内将它们的奖励最大化的行动
eg:为游戏建造智能机器人
…………
4.机器学习系统的类型
4.1.有监督学习和无监督学习
根据训练期间接受监督的数量和类型,可将机器学习系统分为:有监督学习、无监督学习、半监督学习、强化学习。
1.有监督学习
在有监督学习中,所有训练集都有标签。相当于在训练数据时,我们已经知道了每个数据对应的答案(标签),模型要做的是从数据与答案(标签)的对应关系中找出规律,解决测试集中没有标签的数据(测试集也是有标签的,只不过我们将机器学习测试结果与实际结果进行对比,评价模型好坏)。有监督学习中两大常见的任务分别是:任务与回归。(在后面的博客中我们会详细介绍)
常见算法:
线性回归;
逻辑回归;
k-近邻算法;
支持向量机;
决策树和随机森林;
神经网络……
2.无监督学习
与有监督学习相反,在无监督学习中数据没有标签,相当于我们在研究一个课题时,没有给出固定答案。我们能做的就是从已给数据中发现规律、挖掘规律,通过不同模型的对比、调整参数,实现预期结果的最优化。
常见算法:
聚类算法(k-means,分层聚类分析……)
异常检测(单类SVM,孤立森林……)
可视化和降维(主成分分析,局部线性嵌入……)
关联规则学习(Apriori,Eclat……)
3.半监督学习
训练集中仅有部分已经标记的数据。由于对大量数据做标记的过程麻烦,且耗时耗力,因此,我们常用可以处理部分已标记数据的算法解决。
eg:相册里的托管服务。在已有图库中对某一个人进行命名,那么下次再次传入该人的图片时,手机就会将这张图像自动分类到之前标记好的标签中。
4.强化学习
强化学习是一个非常不同的巨大智能体,它的学习系统(在其语境中称为智能体)能够观察环境,做出选择,执行动作,并获得回报(或者是得到惩罚)。所以它必须自主学习什么是最好的策略,从而随着时间的推移获得最大的回报。
eg:无人驾驶汽车。汽车不断地识别障碍物、行人、其他汽车,在多次碰撞到障碍物,获得惩罚后,它就会更新策略,下次识别到类似的障碍物就会自主避开。
4.2批量学习和在线学习
根据系统是否可以动态地从传入的数据流中进行增量学习,可将机器学习分为:在线学习和批量学习。
1.批量学习
批量学习中系统无法进行增量学习——必须使用所有可用数据进行训练。这需要大量时间和资源,通常都是离线完成。在离线之前将系统训练好,离线之后,只是通过训练好的系统训练导入数据。
2.在线学习
在线学习中,可以不断地给系统提供数据,逐步积累学习成果,不断更新系统参数。提供数据的方式可以是单独的,也可以采用小批量的小组数据进行训练。
在线学习的一个重要参数是其适应不断变化的数据的速度,也就是我们常说的学习率。如果设置的学习率过高,系统会快速的适应新数据,但同时也很快忘记旧数据。相反,如果学习率过低,系统会学习得更慢,对异常点、噪声值不敏感。
4.3基于实例的学习与基于模型的学习
根据系统如何对数据进行预测(泛化),可将机器学习分为基于实例的学习与基于模型的学习。
1基于实例的学习
系统学习给定的实例,通过使用相似度度量来比较新实例和已经学习的实例,从而泛化新实例。
2.基于模型的学习
通过构建实例的模型,使用该模型并进行预测,称为基于模型的学习。
5.机器学习的主要挑战
由于机器学习的任务主要是学习一个算法,并对给定数据进行预测,所以最可能出现的问题无非就是“不良算法”与“不良数据”。
不良数据:
1.训练数据的数量不足
大部分机器算法需要大量的数据才能正常预测,很多模型的规律要通过长期的趋势才能发现,这些都需要我们提供大量的数据来支撑算法发挥优势、构建合理可靠的模型。
2.训练数据不具有代表性
为了实现更好的泛化,训练数据除了保证数据量充足之外,还要保证其在研究领域有足够代表性。
eg:要对比几个省近年来人口的变化趋势,那么我们需要收集几年来各省的总人口,如果收集到的数据中有些仅代表省会的人口,不代表整个省的人口,那这样的数据就不具有代表性。
3.低质量数据
如果收集到的数据集满是异常值、噪声,还有缺失值,肯定不利于数据的表达及模型的训练。因此,数据清理是机器算法实战中很重要的一个环节,同时也是较为复杂的一个环节。
不良算法:
1.过拟合
过拟合表示算法过于复杂,把很多个别样本的个别特性一并体现在模型中,比如:有的异常点数据,因为噪声的影响与其他数据点出入较大,并不能表现数据集的特性,但在模型训练中,考虑到该过多的这样的点,模型就会过于复杂,适用于训练集的“个别特征”,不适用于同类数据集的“共性特征”。在训练集上表现非常优异,但在测试集上表现不好。
2.欠拟合
与过拟合相反,欠拟合是模型过于简单。没有充分考虑数据特性、或者算法设计的过于简单,对测试集预测效果不佳。