前言
人工智能在近些年来飞速发展,而大学生数学建模比赛也有不少用到机器学习算法的实例。本文通过查阅维基百科、一些书籍、CSDN文章,结合清风“利用matlab快速实现机器学习”的直播课程,写下机器学习小白的笔记记录1。
一、机器学习的基本概念
1.1 机器学习是干什么的
维基百科·机器学习
- 机器学习正是这样一门学科,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能.在计算机系统中,“经验”通常以 “数据”形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生“模型”(model)的算法,即“学习算法”(learning algorithm).有了学习算法,我们把经验数据提供给它,它就能基于这些数据产生模型;在面对新的情况时(例如看到一个没剖开的西瓜),模型会给我们提供相应的判断(例如好瓜).
?周志华.机器学习,北京 清华大学出版社

?机器学习思路及买西瓜分类问题栗子:

1.2 机器学习的划分
以下mindmap是我阅读完一文读懂机器学习入门概述【参考了全网最火的文章】的理解:

?1.2.1 监督学习
监督学习给定一组带有标记的数据集。计算机可以使用特定的模式来识别每种标记类型的新样本。监督学习的两种主要类型是分类和回归。 不管是分类还是回归,数据都带有一定的标记(也称特征)。?
一文读懂机器学习入门概述【参考了全网最火的文章】
翻译:我们在获取输入变量、输出变量(即特征、标签)的数据集之中,寻找二者关系。

而监督学习通过判断变量Y是连续或离散类型,区别出分类问题以及回归问题:
(1) 当输出变量Y 取有限个离散值时,称为分类问题。 举例: ? 判断西瓜的好坏(好瓜/坏瓜) ? 判断肿瘤的性质(良性/恶性) ? 根据鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度这四个指标 来判断它的种类(山鸢尾/杂色鸢尾/维吉尼亚鸢尾) 在分类问题中,当Y 只取两类时,我们称为二分类问题,当分类的类别为多个时, 称为多分类问题。 (2) 输出变量Y 为连续型变量,称为回归问题。(此回归非彼回归) 举例: ? 给定房屋的一些信息(户型、是否靠近地铁等),预测房价 ? 给定土地的施肥量,预测农作物的产量
?1.2.2 无监督学习
在无监督学习中,数据是无标签的。由于大多数真实世界的数据都没有标签,所以这些算法可能更加实用。无监督学习分为聚类和降维。?
一文读懂机器学习入门概述【参考了全网最火的文章】
聚类的例子:银行收集了客户的许多个人信息,根据这些个人信息可以将客户划分到不同的用户群体(例如:贵宾客户、重点客户、普通客户、可能流失的客户等),银行可以为不同的用户群体制定出相应的个性化营销方案。 降维的例子:输入变量的维度太大(指标个数太多了),我们需要通过降维的方法来构造出少数几个指标,这几个指标能保留原来这些输入变量的绝大部分信息。
1.2.3 强化学习
强化学习是指一类在与环境交互中不断学习的问题以及解决这类问题的方法。相比监督学习,它不需要给出“成功”策略作为监督信息,给出滞后回报,调整策略从而取得最大化期望即可。
举个栗子:
一台下棋的电脑可以学会不把它的国王移到对手的棋子可以进入的空间。然后,国际象棋的这一基本教训就可以被扩展和推断出来,直到机器能够打败人类顶级玩家为止。
1.3 模型评估指标
1.3.1 回归问题的评估指标

?1.3.2 分类问题-评估指标
我们借用混淆矩阵(Confusion Matrix)可视化分类结果,以下为西瓜实例:


?通过混淆矩阵,我们计算衡量分类结果好坏的指标就方便很多了。
机器学习中,我们通常将更关注的事件定义为正类事件。(生活中我们通常会更关注那些结果不好的情况的出现)。当然,这个定义依据只是参考借鉴,不是唯一的。
上述西瓜分类例子中,坏瓜为正类(记为1),好瓜负类(记为0)。

?其中TP、FN、FP、TN为混淆矩阵数值所定义的四个指标:

?借上述指标定义了如下评估指标:
 
?以下为ROC曲线&AUC用法:
1.4 模型的泛化能力及其评估方法
模型的泛化能力(generalization ability)是指由该模型对未知数据的预测能力。 拿西瓜问题作例子,评价结果仅基于该组西瓜模型的预测,而对于新的一组西瓜,这是否能够继续做出良好的分类判断,即为泛化能力所体现之处了。
【1】留出法
?我们不能提前得到未来瓜组的数据,只能选择从已有数据着手。假设100个西瓜,80个瓜用来建立分类模型,称其为训练集(train set);剩下20个瓜用来检验模型的好坏(其实就是我们拿这20个瓜等价新瓜组),称其为测试集(test set)。我们将上述泛化能力的评估称为留出法(Hold-Out)。
注意:
1)一般情况下,划分比例为:7:3,8:2;
2)尽量做到 训练集和测试集的划分随机且数据分布均匀。
?【2】交叉验证
在留出法中,用于评价模型泛化能力的测试集只是所有样本的一部分,而且这个结果不是很稳定,对模型的泛化能力的评价依赖于哪些样本点落入训练集,哪些样本点在测试集。 下面我们介绍一种用的更多的方法:k 折交叉验证(K-fold cross-validation)。 我们先将数据集D随机的划分为k个大小相似的互斥子集。每一次用k-1个子集的并集作为训练集,剩下的一个子集作为测试集;这样就可以获得k 组训练/测试集,从而可进行k次训练和测试,最终返回的是这k次测试的平均结果,通常k取10,此时称为10折交叉验证。
1.5 选择最优模型
对于同一个问题,我们可以建立不同的模型去解决。例如前面介绍的西瓜分类问题中,我们可以使用决策树、K最近邻(KNN)、支持向量机(SVM)等常用的机器学习模型。
我们通过衡量泛化能力,参数调节(parameter tuning)选取最好的参数确定最终需要的模型。
1.6 欠拟合&过拟合
过拟合(overfitting)指的是模型在训练集上表现的很好,但是在测试集上表现的并不理想,也就是说模型对未知样本的预测表现一般,泛化能力较差。


可能产生过拟合的常见原因: (1) 模型中参数设置的过多导致模型过于复杂 (2) 训练集的样本量不够 (3) 输入了某些完全错误的的特征 举个极端的例子:样本的编号。现在有100 个西瓜,编号1-60 的是好瓜,编号61-100 的是坏瓜,如果你把编号作为了输入变量放入了我们的模型,那么有可能模型会将编号作为一个最重要的识别变量来对西瓜进行分类,模型会认为只要编号小于等于60 的都是好瓜,此时在训练集上的误差一定为0。如果这时候你拿来编号大于100 的需要判断好坏的瓜,模型都会认为是坏瓜! 解决过拟合的方法: (1) 通过前面介绍的交叉验证的方法来选择合适的模型,并对参数进行调节。 (2) 扩大样本数量、训练更多的数据 (3) 对模型中的参数增加正则化(即增加惩罚项,参数越多惩罚越大) 欠拟合则和过拟合刚好相反,我们可以增加模型的参数、或者选择更加复杂的模型;也可以从数据中挖掘更多的特征来增加输入的变量,还可以使用一些集成算法(如装袋法(Bagging),提升法(Boosting))。
总结
第一次笔记整理如上,遗憾之处包括参考资料有限、学习视频观看不足等。以后定会裨补阙漏,优化文章知识体系、拓宽自己的理解。
注:
- 除了自制的思维导图,本文图片均源于数学建模清风。?
- 引用文字未注明即也源于清风。
|