本文默认读者有一定程度的python基础,主要用于刚刚开始接触机器学习,有一定的数据处理经验的学生党,同时也是作者的学习记录。
机器学习的定义
人们倾向于从经验中获得信息,这被称之为学习。
然而,当面对大量数据的时候,其数据内部关系错综复杂,人力能学习到的东西相当有限。因此,我们需要借用计算机来帮助我们学到隐藏在数据中的各式信息。
可以说,机器学习既是让机器去学习,也是人们利用机器去学习。
机器学习的输入
为了让计算机能够学习到东西,我们需要给出一些输入数据。这里举一个比较简单的例子:
ID | 年龄 | 身高(cm) | 体重(kg) | 健康程度 |
---|---|---|---|---|
01 | 23 | 185 | 67 | 健康 |
02 | 16 | 165 | 83 | 不健康 |
在这个例子中,我们希望通过读取用户ID,年龄,身高,体重来预测用户的健康程度。其中ID为对象编号,年龄,身高,体重用于描述对象属性的被称为特征值,而预测的结果则被称为目标值。输入数据中可以不含目标值。
机器学习的算法分类
根据目标值的类型,机器学习算法可以分为:
- 分类、聚类问题:目标值表示类别,且一般是离散值
包括K近邻算法,贝叶斯分类,决策树与随机森林,逻辑回归等等 - 回归问题:目标值为连续型的数据
包括线性回归,岭回归问题等
对于找人工智能、算法方向工作的同学,这些都需要了解并掌握
根据用于学习的输入数据(训练集)目标值的有无,机器学习算法可以分为:
- 有监督学习:输入数据中含有目标值
- 无监督学习:输入数据中不含目标值
- 半监督学习:输入数据中部分有目标值,部分没有目标值
机器学习的操作步骤
1.获取数据
这是机器学习中的难点之一,为了方便,一般会采用公开数据集来测试模型的性能,但当面对需要自己处理的数据时,从有限的杂乱的数据中提取出有效特征比较困难。
2.划分训练集,验证集和测试集
为了训练机器学习模型,一般先要在原始数据上进行划分,得到用于模型训练的训练集,用于验证模型效果,保存最优模型参数的验证集,以及用于测试模型的泛化性能的测试集。
有些时候不需要划分这些集合,如无监督的图聚类任务。
3.训练模型
搭建神经网络,输入数据,进行训练,保存表现良好的模型参数方便之后复现。在这个过程中,我们会使用一些评价标准对模型训练过程中的性能进行评估。
顺便一提,改进模型同样是非常困难的一件事,很多情况下理论上行得通,但实际效果并不佳。
4. 测试模型表现
将测试集输入到训练好的模型中,从而获得在评价标准上的性能表现结果,为了保证模型鲁棒性,一般还需要多次训练和测试,排除偶然性的发生(机器学习有时很玄学)
数据集的获取
一般来讲,我们通过公开数据集设计、改进模型,这里贴一个知乎大佬的网址,包含了我们常用的数据集: