机器学习 第一章 机器学习基础
机器学习的真实含义:利用计算机来彰显数据背后的真实含义。
1.1 什么是机器学习
机器学习就是把无序的数据转换成有用的信息。
机器学习横跨计算机科学、工程技术和统计学等多个学科领域,需要多学科的专业知识。
机器学习对于任何需要解释并操作数据的领域都有所裨益。
1.2 关键术语
机器学习的主要任务就是分类。
最终我们决定使用某个机器学习算法进行分类,首先需要做的就是算法训练,即学习如何分类。
训练集:用于训练机器学习算法的数据样本集合。通常我们为算法输人大量已分类数据作为算法的训练集。
目标变量:机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
我们通常将分类问题中的目标变量称为类别,并假定分类问题只存在有限个数的类别。
训练数据和测试数据:为了测试机器学习算法的效果,通常使用两套独立的样本集,即训练数据和测试数据。
当机器学习程序开始运行时,使用训练样本集作为算法的输人,训练完成之后输人测试样本。输入测试样本时并不提供测试样本的目标变量,由程序决定样本属于哪个类别。
比较测试样本预测的目标变量值与实际样本类别之间的差别,就可以得出算法的实际精确度。
知识表示:可以理解为输入数据经过算法后的输出。
知识表示可以采用规则集的形式,也可以采用概率分布的形式,设置可以是训练样本集中的实例。
1.3 机器学习的主要任务
1.分类(主要任务):将实例数据划分到合适的分类中。
2.回归:主要用于预测数值型数据。
分类和回归属于监督学习,因为这类算法必须知道预测什么,即目标变量的分类信息。
与监督学习相对应的是无监督学习,此时数据没有类别信息,也不会给定目标值。
在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程被称为聚类;将寻找描述数值统计值的过程称为密度估计。
无监督学习还可以减少数据特征的维度,以便我们可以使用二维或者三维图形更加直观地展示数据信息。
下表列出了机器学习的主要任务,以及解决相应问题的算法:
监督学习的用途 | 无监督学习的用途 |
---|---|
k-近邻算法、朴素贝叶斯算法、 支持向量机、决策树、 线性回归、局部加权线性回归、 Ridge回归、Lasso最小回归系数估计 | K-均值、最大期望算法、 DBSCAN、Parzen窗设计 |
1.4 如何选择合适的算法
- 上表的算法中选择实际可用的算法,必须考虑两个问题:
- 使用机器学习算法的目的,想要算法完成何种任务;
- 需要分析或收集的数据是什么。
一、首先考虑使用机器算法的目的。
Step1:如果想要预测目标变量的值,则可以选择监督学习算法。
Step2:确定监督学习算法后,需要进一步确定目标变量类型。
目标变量是离散型,如:是/否、1/2/3、A/B/C或者红/黄/黑 等,选择分类器算法。
目标变量是连续型,如:0.0100.00、-999999、-∞~+∞等,选择回归算法。
Step3:如果不想要预测目标变量的值,则可以选择无监督学习算法。
Step4:进一步分析是否需要将数据划分成离散的组。
如果这是唯一的需求,则使用聚类算法;
如果还需要估计数据和每一个分组的相似程度,则需要使用密度估计算法。
二、其次需要考虑的是数据问题。
主要应该了解数据的以下特征:
1、特征值是离散型变量还是连续型变量
2、特征值中是否存在缺失的值,何种原因造成缺失值
3、数据中是否存在异常值
4、某个特征发生的频率如何
等等。
充分了解上面的数据特征可以缩短选择机器学习算法的时间。
我们只能在一定程度上缩小算法的选择范围,一般并不存在最好的算法或者可以给出最好结果的算法,要尝试不同算法的执行效果。
对于所选的每种算法,都可以使用其他的机器学习技术来改进其技能。
1.5 开发机器学习应用程序的步骤
- 收集数据: 收集样本数据。
- 准备输入数据: 确保数据格式符合要求。
- 分析输入数据:确保数据集中没有垃圾数据。
- 训练算法:将前两步得到的数据输入到算法中,从而抽取知识或者信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤的使用。
若采用无监督学习算法,由于不存在目标变量值,故而也不需要训练算法、所有与算法相关的内容都集中在第五步。 - 测试算法: 这步将实际使用第四步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。
对于监督学习,必须已知用于估算算法的目标变量值;
对于无监督学习,也必须用其他的评测手段来检测算法的成功率。 - 使用算法:将机器学习算法转换成应用程序,执行实际操作,以检验上述步骤是否可以在实际环境中正常工作。
1.6 Python语言的优势
- Python的语法清晰
- 易于操作纯文本文件
- 使用广泛,存在大量的开发文档
Python可以快速实现系统,可以帮助我们快速地检验算法或者思想是否正确。
1.7 NumPy函数库基础
机器学习算法涉及许多线性代数知识,因此在使用Python语言构造机器学习应用时,会经常使用NumPy函数库。
NumPy矩阵与数组的区别
NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素。它们虽然看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同的结果。