最近在学习吴恩达的机器学习课程。学习过程中经常忘记已经学习过的知识,需要重新观看视频或查阅资料进行复习。为了方便以后的复习,把一些自己认为重要的知识整理在博客上。
机器学习定义
Arthur Smauel在1959年给出的定义:
the field of study that gives computers the ability to learn without being explicitly programmed.
在没有明确设置的情况下,使计算机具有学习能力的研究领域。
Tom Mitchell在1998年给出的定义:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
上面定义的直译有点奇怪。大意就是,计算机程序通过学习以往的经验(数据)来提高解决任务的性能指标(准确率)。
机器学习类别
监督学习(Supervised learning):
用带有标签的数据进行训练。识别垃圾邮件、识别手写数字等可用这类算法建立模型。常见的算法有逻辑回归和反向传播神经网络。
无监督学习(Unsupervised learning):
用无标签数据训练。最典型的应用就是聚簇(Clustering),将相似的数据分为一组。常见算法是K-Means。
半监督学习(Semi-Supervised Learning):
使用有标签和无标签的数据进行训练。先用无标签数据进行建模,再此基础上对有标签数据进行预测调整模型准确性。
强化学习(Reinforcement):
强化学习就是智能系统从环境到行为映射的学习,以使奖励信号最大。如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。
常用概念
1、要进行机器学习的训练,就必须先有数据,最简单的数据分集可以分为以下两种
训练集(training set):对于监督学习来说,训练集是带有标签的一组数据。无监督学习的训练集则不需要标签。这里的标签指的就是你希望模型输出的结果,例如下面的图片,我们给的标签分别是5,0,4,1。
测试集(test set) :用于测试训练结果的准确度。将数据拆分为训练集和测试集很有必要,用单独的测试集进行评估模型,更容易将模型推广到其他数据上(比如线上数据)。
2、根据数据是否有标签,我们还需要确定学习算法类别,是使用监督学习还是无监督学习。
监督学习常用算法:
线性回归
逻辑回归
K-临近算法
支持向量机(SVM)
决策树和随机森林
神经网络
无监督学习常用算法:
K-means
主要成分分析(PCA)
EM(Expectation Maximization)
3、这些算法根据输出是否连续又可以分为回归模型和分类模型
回归(regression)模型:对数值型连续随机变量进行预测和建模的监督学习算法。比如线性回归。
线性回归:线性回归(左下图),训练结果就是图中的一元一次函数(蓝线)。函数中每一个输入对应一个输出,可用于预测趋势。
分类(classification)模型:分类通常用于输出离散的模型。比如逻辑回归。
逻辑回归:逻辑回归(右下图),图中绿色的线是模型训练出的决策边界(Decision boundary),决策边界将数据分为两类是A或不是A,所以输出就是1或者0,是离散的。如果需要将结果分为n类,则需要训练n个决策边界,用hot-ont vectors(一个n列或n行的向量)结构来记录结果,大概是这样([1,0,0,0,0,0,0,0,0,0,0...]),向量的哪一列为1,就代表数据属于哪一类,结果也是离散的。
4、在确定算法以后,就需要知道怎么来训练我们的模型。这里我们使用线性回归作为例子来说明,左上图的横轴是城市的人口数,纵轴是餐车平均利润,我们需要预测不同人口时餐车利润是多少。