目录
笼统定义:
机器学习研究如何让计算机不需要明确的程序也能具备学习能力。
——Arthur Samuel,1959
偏工程化定义:
一个计算机程序在完成任务T之后,获得经验E,其表现效果为P,如果任务T的性能表现,也就是用以衡量的P,随着E的增加,可以称其为学习。
——Tom Mitchell,1997
- 是否在人类监督下训练:
- 监督式学习、无监督式学习、半监督式学习、强化学习
- 是否可以动态地进行增量学习:
- 在线学习、批量学习
- 是简单地将新的数据点和已知的数据点进行匹配,还是像科学家那样,对训练数据进行模式检测,然后建立一个预测模型:
- 基于实例的学习、基于模型的学习
在监督式学习中,提供给算法的包含所需要解决方案的训练数据,称为标签或标记。
监督式学习的算法包含:
- K-近邻算法(k-Nearest Neighbors)
- 线性回归(Linear Regression)
- 逻辑回归(Logistic Regression)
- 支持向量机(Support Vector Machines, SVM)
- 决策树和随机森林(Decision Trees and Random Forest)
- 神经网络(Neural networks)
无监督式学习的训练数据都是未经标记的,系统是在没有老师的情况下进行学习。
无监督式学习的算法包含:
- 聚类算法:
- k-平均算法(k-Means)
- 分层聚类分析(Hierarchical Cluster Analysis, HCA)
- 最大期望算法(Expectation Maximization)
- 可视化和降维:
- 主成分分析(PCA)
- 核主成分分析(Kernel PCA)
- 局部线性嵌入(LLE)
- t-分布随机近临嵌入(t-SNE)
- 关联规则学习:
- Apriori
- Eclat
有些算法可以处理部分标记的训练数据——通常是大量标记数据和少量的标记数据。
- 基于实例的学习
系统先完全记住学习示例,然后通过某种相似度度量方式将其泛化到新的实例。
- 基于模型的学习
从一组示例集中实现泛化的另一种方法是构建这些示例的模型,然后使用该模型进行预测。
- 训练数据不具代表性
针对我们想要泛化的案例使用具有代表性的训练集,这一点至关重要。如果样本集太小,将会出现采样噪声(即非代表性数据被选中);而即便是非常大的样本数据,如果采样方式欠妥,也同样可能导致非代表性数据集,即采样偏差。
- 训练数据过度拟合
过度拟合是指模型在训练数据上表现良好,但是泛化时却不尽人意。
解决方案:
- 简化模型:可以选择较少参数的模型(如,选择线性模型而不是高阶多项式模型),可以减少训练数据中的属性数量,或约束模型。
- 收集更多的训练数据。
- 减少训练数据中的噪声(如,修复数据错误和消除异常值)。
通过约束模型使其简单,并降低过度拟合的风险,这个过程称为正则化。例如,我们定义的线性模型有两个参数,
和
。因此,该算法在拟合训练数据时,调整模型的自由度就等于2:它可以调整线的高度(
)和斜率(
)。如果我们强行让
=0,那 么算法的自由度将会降为1,并且其拟合数据将变得更为艰难——它能做的全部就只将线上移或下移来尽量接近训练实例,最后极有可能停留在平均值附近。这确实太简单了!如果我们允许算法修改
,但是我们强制它只能是很小的值,那么算法的自由度将位于1和2之间,这个模型将会比自由度为2的模型稍微简单一些,同时又比自由度为1的模型略微复杂一些。你需要在完美匹配数据和保持模型简单之间找到合适的平衡点, 从而确保模型能够较好地泛化。
应用正则化的程度可以通过一个超参数来控制。超参数是学习算法(不是模型)的参数,因此,它不受算法本身的影响。超参数必须在训练之前设置好,并且在训练期间保持不变。
- 训练数据拟合不足
与过度拟合相反。解决方案:
- 选择带有更多参数、更强大的模型。
- 特征工程。
- 减少模型中的约束(如,减少正则化超参数)
学习笔记——《机器学习实战:基于Scikit-Learn和TensorFlow》