机器学习笔记一:简介
一. 监督学习vs非监督学习,线上学习vs批量学习,基于实例vs基于模型学习
1.机器学习定义
机器学习是让机器通过学习数据对某些任务做得更好,而不使用确定的代码规则。
总结一下,机器学习善于:
需要进行大量手工调整或长串规则的问题:机器学习算法通常可以简化代码、提高性能。
问题复杂,对于传统方法太复杂或是没有已知算法的问题 :最好的机器学习方法可以找到解决方案。
环境有波动:机器学习算法可以适应新数据。
洞察复杂问题和大量数据。
2.机器学习分类
机器学习有多种类型,可以根据如下规则进行分类:
2.1 是否在人类监督下进行训练:监督,非监督,半监督和强化学习
(1)监督学习:训练数据包含标签。
如,K近邻算法、线性回归、逻辑回归、支持向量机(SVM)、决策树和随机森林、神经网络等。
(2)非监督学习:训练数据是没有加标签的。
如,聚类(k-均值、层次聚类分析、期望最大值);
可视化和降维:给算法大量复杂的且不加标签的数据,算法输出数据的2D或3D图像(主成分分析、 核主成分分析、局部线性嵌入、t-分布邻域嵌入算法);
异常检测:从训练数据集去除异常值。异常检测的系统使用正常值训练的,当它碰到一个新实例,它可以判断这个新实例是否像正常值或异常值;
关联性规则学习(Apriori算法、Eclat算法)。
(3)半监督学习:处理部分带标签的训练数据,通常是大量不带标签数据加上小部分带标签数据。
(4)强化学习:学习系统在这里被称为执行者agent,可以对环境进行观察,选择和执行动作,获得奖励。然后它必须自己学习哪个是最佳方法,以得到长久的最大奖励。策略决定了执行者在给定情况下应该采取的行动。
2.2 能否从导入的数据流进行持续学习:线上学习vs批量学习
(1)批量学习:系统不能进行持续学习,必须用所有可用数据进行训练。缺点:用全部数据训练需要大量计算资源(CPU、内存空间、磁盘空间、磁盘I/O、网络I/O等等),如果资源有限,则无法进行训练。
(2)线上学习:是用小批量数据实例持续地进行训练,每个学习步骤都很快且廉价,所以系统可以动态地学习到达所有数据训练效果。
线上学习很适合系统接收连续流的数据(比如,股票价格),且需要自动对改变作出调整。当机器的内存存不下大量数据集时,可以用线上学习来训练系统,线上学习仍然是离线学习,并未部署在系统上。
线上学习的关键点之一是学习速率的设定,学习太快会降低旧数据的影响,学习太慢对新数据不敏感。
2.3 归纳方法不同:基于实例学习vs基于模型学习
(1)基于实例学习:系统先用记忆学习案例,通过简单地比较新的数据点和已知的数据点,然后使用相似度测量推广到新的例子。
(2)基于模型学习:从样本集进行归纳的方法是建立这些样本的模型,然后通过样本训练确定模型参数(优化方法),最后使用这个模型进行预测。
3.机器学习的挑战
(1)训练数据量不足:数据不合理,没有代表性(样本偏差),低质量数据,不相关特征
(2)特征工程
特征选择:在所有存在的特征中选取最有用的特征进行训练。
特征提取:组合存在的特征,生成一个更有用的特征(如前面看到的,可以使用降维算法)。
收集新数据创建新特征。
(3)过拟合:发生在相对于训练数据的量和噪声,模型过于复杂的情况。
解决办法:简化模型,可以通过选择一个参数更少的模型(比如使用线性模型,而不是高阶多项式模型)、减
少训练数据的属性数、或限制一下模型收集更多的训练数据,减小训练数据的噪声(比如,修改数据错误和去除异常值)
(4)欠拟合:当你的模型过于简单时就会发生,或者训练数据太少。
解决办法:选择一个更强大的模型,带有更多参数,用更好的特征训练学习算法(特征工程),减小对模型的限制(比如,减小正规化超参数)
4.模型测试与验证
要知道一个模型推广到新样本的效果,唯一的办法就是真正的进行试验。
1.训练集、测试集、验证集
交叉验证:训练集分成互补的子集,每个模型用不同的子集训练,再用剩下的子集验证。一旦确定模型类型和超参数,最终的模型使用这些超参数和全部的训练集进行训练,用测试集得到推广误差率。