机器学习和传统的编程的区别
上图为传统的编程方法
上图为机器学习的方法
上图为机器学习自适应变化
机器学习的相对于普通的编程来说优点.
- 程序要短,而且易于维护,可能也更加准确.(不用编写复杂的规则)
- 可以解决无法用已知算法解决的问题。
- 可以对于环境的波动,可以适应新的数据。
机器学习的种类
-
是否在人类监督下训练分为(监督式学习、无监督式学习、半监督式学习和强化学习)
-
监督学习:在监督式学习中提供给算法的包含所需解决方案的训练数据,称为标签或者标记。在机器学习中属性是一种数据类型,而特征取决于上下文,特征往往意味着是一个属性加上其值。常见算法 K-近邻、线性回归、逻辑回归、支持向量机、决策树和随机森林、神经网络
-
无监督式学习:训练数据都是没经标记的。
- 聚类:k-平均算法、分层聚类分析、最大期望法
- 可视化和降维:主成分分析、核主成分分析、局部线性嵌入、t-分布随机近邻嵌入、
- 关联规则学习:Apriori 、Eclat
将多个特征合并和一个特征的过程叫做:特征提取
无监督还可以通过聚类进行相似性检测,数据的可视化,数据的降维,异常检测,挖掘大量数据的关联规则
-
半监督式学习:处理部分标记的训练数据 深度信念网络(DBN),可以用于图片搜索
-
强化学习:自行进行学习。
-
-
是否可以动态地进行增量学习(在线学习和批量学习)
- 批量学习:离线的使用全部数据进行模型的训练
- 在线学习:可以采用小批量数据不断地进行训练模型。其整个过程也是离线完成的可以视为是增量学习 同时要设置其适应不断变化的数据速度,通常和异常检测相结合
-
是简单地将新数据点和已知地数据点进行匹配,还是对训练数据进行模式检测,然后建立一个预测模型(基于实例地学习和基于模型的学习)
- 基于实例的学习:系统先完全记住学习实例,然后然后通过某种相似度度量的方式将其泛化到新实例中。
- 基于模型的学习,学习数据,选择模型,使用训练数据进行训练,最后应用模型进行预测。
机器学习的主要挑战
- 训练数据不足
- 训练数据不具有代表性 — 存在采用偏差
- 质量差的数据 – 训练数据集是错误的,异常值和噪声的
- 无关特征:
- 特征选择:从现有的特征中选择最有用的特征进行训练
- 特征提取:对现有特征进行整合,产生更有用的特征
- 收集新数据创造特征
- 训练数据过度拟合
- 简化模型:可以选择较少参数的模型,也可以通过减少训练数据的属性的数量,又或者约束模型
- 收集更多的训练数据
- 减少训练数据的噪声
- 训练数据拟不足
- 选择一个带有更多参数的模型
- 给学习算法提供更好的特征集(特征工程)
- 减少模型中的约束
测试与验证
如果训练误差很低,但是泛化误差很高,说明模型存在过拟合
通常使用80%作为训练集,20%作为测试集
这里注意将测试集存在的含义在于估计模型在新数据上的泛化误差,而不是选择最优的超参数和模型
如果使用训练集和测试集对超参数进行调整的话,可以会使模型过度拟合测试集
通常使用训练集-验证集-测试集,验证集用来确定模型的最优超参数和模型,测试集用来估计模型在新数据上的泛化误差。
同时为了避免浪费数据,常常使用的是交叉验证的方法,
重要的习题
什么是核外学习?
答:核外算法可以处理计算机主内存中无法应对的大量数据,它把数据分割成小批量的,然后使用在线学习的技术从这里小批量中学习。
模型参数与学习算法的超参数之间的区别?
答:模型有一个或多个参数,这些参数决定了模型对新定义的实例会做出什么样的预测(比如线性模型的斜率)。学习算法试图找到这些参数的最佳值,使得模型能够更好的泛化新的实例。超参数是学习算法本身的参数,不是模型参数。比如正则化的数量
基于模型的学习算法搜索的是什么?他们最常用的策略是什么?他们如何做出预测?
答:基于模型的学习算法搜索使模型泛化最佳的模型参数值,通常通过使成本函数最小化来训练模型,成本函数衡量一个模型对数据的预测能力。