机器学习概览
机器学习的种类
机器学习的分类有多种准则,主要是一些三种:
数据是否有标签
- 监督学习:
全部的数据都带有标签,相应的机器学习算法如:SVM,分类树等 - 非监督学习,
全部的数据都没有标签。算法要从数据中找出某种规则和模式。如:
Apriori算法,聚类算法等 - 半监督学习:
含有大量的未标记数据和少量的标记数据,比较又代表性质的就是受限玻尔兹曼机(通过无监督的方式进行训练,然后通过监督学习的模式对系统进行微调) - 强化学习:
类似于我们人类学习的模式,通过观察做出决策后的回报进行学习。现在的机器人大多采用这样的算法。
是否可以根据传入的数据进行增量学习
- 批量学习:
采用离线的方式进行数据的学习,每次的训练算法都要用整个数据集,从零开始。存在一定的缺陷。 - 增量学习(在线学习):
新的数据飞速的写入,可以根据传入的新的少量的数据进行学习,要不断的接收持续的数据流。评价增量学习的一个重要参数就是看其适应不断变化数据的速度
模型如何进行泛化,如何做出预测 - 基于实例的学习:
该算法通过记住实例,给出新的实例,通过计算相似度进行预测和泛化 - 基于模型的学习:
从数据中提取出模型,根据提取出的模型或者规则进行预测
机器学习的主要挑战
- 训练的数据不足:
虽然数据是影响机器学习的一个主要问题,但是我们也不要放弃算法。
(突然就想到上吴恩达老师的课,说掌握数据者掌握机器学习) - 训练的数据不具有代表性
- 质量差的数据:
常常含有错误,异常值,和噪声。 - 无关的特征:
数据集要包含足够多的相关特征,以及较少的无关特征,所以一个好的机器学习项目要有一个好的特征集,(通过特征工程):
1、特征的选择:选择最有用的特征
2、特征的提取:对现有数据进行整合,产生最有用的特征
3、收集新的数据来创造新的特征
- 过拟合:
数据本身是含有噪声的,模型检测到了噪声中的模式并对其进行了学习,解决方案:
1、简化模型,选择一个较少参数的模型,或者一些简单的神经网络
2、收集更多的数据,以减少噪声对数据的影响
3、减少询量数据中的噪声,修复数据的错误或者消除异常值
4、正则化,引入正则化可以有效的减少过拟合现象
- 欠拟合:
解决方案:
1、选择带有更多参数,更加强大的模型
2、提供一个更完善的特征集
3、减少模型中的约束,(减少正则化的超参数)
测试与验证
传统的是分为:测试集和训练集
现在可以分为:测试集,验证集和训练集
Tips:
- 典型的机器学习项目的基本步骤:
- 没有免费的午餐定理
如果你对数据绝对没有任何的假设,那么你没与理由会更偏好某个模型 - 参数与超参数:
参数是模型进行预测相关的参数,而超参数是算法本身的参数。
例如线性回归 y = w ∗ x + b ∗ λ ∗ ∣ ∣ w ∣ ∣ y = w*x+b*\lambda*||w|| y=w∗x+b∗λ∗∣∣w∣∣,其中w,b是参数, λ \lambda λ是超参数。这里的超参数只是为了防止过拟合,真正预测的时候只用到了w和b。 - 验证集可以用来比较不同的模型,用来选择最佳模型和调整超参数。最后再用测试集对选择出来的模型进行评价
- 如果用测试集用来调整超参数,会有过拟合的风险,导致最后的泛化误差会过于乐观
- 通过交叉验证技术,可以不需要单独的验证集实现模型的比较(用于模型选择和调整超参数)。这样就节省了宝贵的训练数据。