说到机器学习,便很快会和人工智能联想到一起,现阶段人工智能的背后就是依赖于大数据和一系列机器学习算法相互配合,通过许多次的拟合训练而达到的一个准确度较高的模型,将模型内置与机器内就形成了我们生活中的许多智能用品,现如今我们生活的方方面面早已被各种智能算法所覆盖,淘宝、抖音的推荐算法,无人驾驶技术等等。后续我也会将自己已经掌握的算法的原理将为大家进行详细的讲解,希望帮助的有需要的人。本帖是结合《统计学习方法》李航和《机器学习》周志华的学习所写的学习总结,是以自己通俗的理解来写的,或许这样对于初学者来说更容易接受和理解。
数据:要想对算法进行学习和改进大量而较为准确的数据是必不可少的,还有一门爬虫技术就是从网络中获取大量数据的关键。获取的整个数据被称为数据集,每一条数据也就是记录被称为示例或样本,每一个样本中的各种描述被称为属性,属性的取值就是属性值,我们把每一个属性想象为一条坐标轴,那么属性就构成了一个属性空间或样本空间。
以西瓜为案例:
瓜1(色泽=青绿;根蒂=蜷缩;敲声=沉闷)
瓜2(色泽=浅白;根蒂=硬挺;敲声=清脆)
瓜1、瓜2合起来 称为数据集,瓜1和瓜2都是数据集中的一条记录,色泽、根蒂、敲声为属性,等号右边为属性值,色泽、根蒂、敲声可以组成一个三维的样本空间。
获取到足量的数据集后,我们需要将其划分为训练集和测试集,用训练集去进行模型的参数调整,达到一定准确率后,在用测试集对模型的准确率进行验证。因此当你数据越多且越真实你的模型准确率也会越高,而训练集和测试集的划分有留出法、交叉验证法、自助法。
留出法 | 1、为避免偏差训练集和测试集的划分尽量保存数据分布的一致。 2、通过若干次随机划分来减少误差。 3、缺点就是训练集和测试集的划分不好把握 |
交叉验证法 | 1、将数据集化为k份,k个子集分布保存一致。 2、每次随机取一中一个或多个子集为测试集,剩下的为训练集。 关键在于k值的选择,k较大会导致训练时间长进而偏差小方差大。 |
留一法 | 每次留出一个样本其余全作为训练集,不适合于数据量大的数据集 |
自助法 | 1、有放回的从数据集中取m次,得到大小为m的数据集合。 2、(1-m)1/m的概率没有被选为训练集,也就是说数据集中有三分之一的数据可作为测试集-包外估计。 不适合于数据量小的数据集。 |
统计学习:主要就是模型(我们所要得出的条件概率或决策函数)、策略(对模型的好坏进行评估)和算法(求解最有模型的具体计算方法)。
统计学习基本过程:训练数据集->模型的假设空间(学习模型的集合)->模型的选择(学习策略)->求解最有模型的算法(算法)->利用最优模型带入测试集进行测试->投入使用
统计学习的分类:
按输出 | 回归、分类、结构化学习 |
按数据 | 监督、无监督、半监督、强化学习 |
按策略 | 在线学习、批量式学习、主动学习 |
模型:主要分为概率模型和非概率模型。
概率模型 | |
非概率模型 |
概率模型实际上就是利用条件概率计算一个事物是哪一种本质的概率,哪个大那件事物的本质就归为哪个,而非概率模型就是直接通过训练机训练出一个决策函数,当新事物来到之后通过它的属性等直接对其本质进行判断。
策略:拿到训练集我们需要利用多种不同的模型去看哪个模型更适合这个数据集,怎么判断合不合适那就需要了解每个模型多次调参后的准确率,策略实际上就是用来选择模型的。
损失函数(度量模型一次预测的好坏) | 绝对值损失、累积损失、指数损失、合叶损失、0|1损失 |
风险函数 (度量模型平均下的预测好坏) | 经验风险(训练数据集的平均损失) |
结构风险(为防止过拟合,给模型复杂程度前加上一个惩罚项) |
方差:不同训练数据估计函数时,函数值的改变量。 即输出减去期望输出的平方。
偏差:期望输出与真实标记的差别。即期望输出减去真实值的平方。
在模型选择中我们注意到训练误差和测试误差,我们要尽量使得两者都要小,训练模型会随着模型复杂程度的提高而降低,而测试模型则会先降低然后陡然增加,如果训练误差小而测试误差大就是导致过拟合,训练误差和测试误差都较大的的话就是欠拟合。防止欠拟合可以增加模型复杂度和训练时间,防止过拟合可通过正则化、增加训练样本、多个模型求平均值。
算法:统计学习基于训练数据集,根据学习策略,从模型空间中选出最优模型,最后需要考虑应用什么计算方法求解最优模型,即求解最优化问题。通常有解析解(最小二乘法、岭回归)、无解析解(梯度下降法、凸优化)、带隐变量(EM算法)。
基础知识后续算法中应用到之后会继续补充,其实不知道大家和我是否有一样的感觉,大学时刚学高数、概率论、线性代数感觉有什么用呀,然而接下来的所有算法会很直观的让你感受到基础学科的无限魅力,它几乎渗透到了计算机领域的方方面面。