监督学习和非监督学习
重新看一遍NG的机器学习课程,第一次写读书笔记,希望能够坚持下来!
对于监督学习,首先来看一个例子,如下图.
图中的数据来自R语言中的Boston数据集,其中lstat轴表示地位较低的人口比重,medv轴表示median value of owner-occupied homes in $1000s。如果有一个新的lstat值(比如lstat=15),想要对相应的medv值进行预测。这时我们可以制定一些方案,比如根据数据拟合出一条直线(下图红色),或者拟合一条二次曲线(下图蓝色),然后根据所拟合的直线或者曲线找出lstat=15所对应的mdev值作为预测。至于哪一种方案更好,我们以后再讨论。
类似上面这个例子,我们这样定义监督学习。
- 监督学习:给学习算法一个数据集,数据集由输入变量和输出变量(正确答案)组成,我们想要拟合一个模型对输出变量进行精确的预测或者能够很好的反映输入变量和输出变量之间的关系。
在上面的例子中,输出变量medv由连续型数据组成,像这样输出变量由连续型数据组成的学习问题称之为回归问题,如果输出变量由离散数据组成,如下图(每个数据对于一个标签{0,1},绿色三角形表示0),则这个问题称之为分类问题。对于分类问题,我们希望学习到线性的或者非线性的分类边界,来很好的区分样本。
回归和分类是最常见的监督学习问题。
下面来看一下什么叫非监督学习。
在监督学习中,每一个样本都对应着一个标签或者响应值。而在非监督学习中(如下图),我们没有没有标签没有相应值没有其他任何信息,我们也不知每个数据点代表什么,只知道他是一个数据集。
从上图中我们能够发现一些规律,通过无监督学习可以将图中的数据分成如下10个不同的簇,这里称之为聚类算法,聚类算法在图像分割、基因表达、新闻事件聚类等等有着重要的应用。对于这样一些事先并不知道“正确答案“,只是通过一些非监督学习来找出数据的内部联系、挖掘有用信息的方法,我们称之为非监督学习。
非监督算法很多,应用也非常广泛,上面提到的聚类算法只是非监督学习中的一种。