笔者是一名软件工程在读研究生,同样是机器学习的爱好者,希望我所总结的内容能以简单直白的方式帮助读者们理解机器学习并了解如何利用Python来做机器学习。不需要走很多弯路,只需要准备好python的JupyterNotebook或Pycharm等,做好笔记。我很快带你入门。
那么首先作为传统还是要对所讲内容有背景知识介绍,当然这是给新人看的,已经了解的可以自动跳过前传哈!
机器学习的概念
概念:机器学习是一门能够让变成计算机从数据中学习的计算机科学。
专业的概念:一个计算机程序在完成任务T之后,获得经验E其表现效果为P,如果任务T的性能表现,也就是用以衡量的P)随着E增加而增加,那么这样计算机程序就被称为机器学习系统。
人话解释:一个程序要有输入和输出,比如说我们要执行一个预测天气的任务,那么计算机预测完天气就是完成了任务,系统从这次预测中获取预测的经验,比如说从给定的观测到的指标如风力温度湿度等等,它们与天气有着怎样的联系;而表现效果是指预测的准不准。那么如果每天都预测一次,随着次数的增加获得的经验也在增加,而如果随着预测的经验增加预测的效果越来越好,这样的程序就是一个机器学习系统。
机器学习的优势
机器学习的好处在于:1.可以自动化的升级和维护;2.解决算法过于复杂或根本就没有已知算法的问题。这两点还是可以很明显的推出的。比如我们做的商品推荐系统,系统能通过用户评价中的关键词比如说“好用”“差评”等词来自动更新程序记忆能力,来对这些词进行学习以便于在之后更准确的判断用户是否喜爱这件商品。而第二点,我们可以思考一下围棋阿尔法狗,众所周知围棋很多时候都是靠人的感觉和大脑的判断去下,并没有固定的能赢的模式,也就没有根本已知的好的算法,需要系统去不断学习摸索。
机器学习需要解决的问题
1.建模问题
所谓机器学习,在形式上可这样理解:在数据对象中通过统计或推理的方法,寻找一个接受特定输入X,并给出预期输出Y的功能函数f,即Y=f(X)。建模这件事情就是通过输入得到输出的事情,从数学角度其实就是寻找这个f(x)函数,来表达原始数据中输入与输出的关系。
2.评估问题
针对已知的输入,函数给出的输出(预测值)与实际输出(目标值)之间存在一定的误差,因此需要构建一个评估体系,根据误差的大小判定函数的优劣。这也就是说我们要去判断什么样的一个模型是好的模型。
3.优化问题
学习的核心在于改善性能,通过数据对算法的反复锤炼,不断提升函数预测的准确性,直至获得能够满足实际需求的最优解,这个过程就是机器学习。这个优化的过程就是机器学习的过程。
这三个要解决的问题也就构成了机器学习的过程,首先对问题进行建模,对建成的模型进行评估,再根据评估效果不断的优化模型。
机器学习的种类
监督学习、无监督学习、半监督学习
- 有监督学习:用已知输出评估模型的性能。这就比如预测这件事情,联想我们人类是怎么做预测的,你如何判断一个人是胖子还是瘦子?我们通过肉眼看到的再结合自己的经验。那么机器也是如此,需要有训练数据让它学习,发现已知数据的规律。也就是我们已经拿到了一个一个人的身高体积体重(作为自变量x),以及他是算个胖人还是瘦人(作为因变量y)。那么通过给计算机输入x,让其输出y可与我们已知的结果进行比较
- 无监督学习:在没有已知输出的情况下,仅仅根据输入信息的相关性,进行类别的划分。这种类型的学习与上一种类型就区别在已知的数据是没有结果的,比如说给了身高体重让机器自己去把人进行分类,机器有可能分为三类比如胖人、瘦人、中等,也有可能是四类五类。这样的结果也并没有对错之分。
- 半监督学习:先通过无监督学习划分类别,再根据人工标记通过有监督学习预测输出。半监督学习正如定义所说,先对数据划分出类别,再用这个分类结果对后续的数据进行预测。具体案例会在后续进行详细介绍。
批量学习和增量学习
- 批量学习:将学习的过程和应用的过程截然分开,用全部的训练数据训练模型,然后再在应用场景中实现预测,当预测结果不够理想时,重新回到学习过程,如此循环。
- 增量学习:将学习的过程和应用的过程统一起来,在应用的同时以增量的方式,不断学习新的内容,边训练边预测。经典的增量模型就是神经网络。
基于实例的学习和基于模型的学习
- 根据以往的经验,寻找与待预测输入最接近的样本,以其输出作为预测结果。
- 基于模型的学习:根据以往的经验,建立用于联系输出和输入的某种数学模型,将待预测输入代入该模型,预测其结果。