Machine Learning On Coursera - Week 1

简单的背景

也许在三、五年之前,人工智能这个概念,对于大部分人来说,仅仅存在于电影之中,比如说《终结者》中施瓦辛格大叔帅气的背影。不过随着两次人机大战,Google携着AlphaGo,让人工智能的概念迅速的普及,人们发现,曾经出现在电影中的未来,或许正一点点到来。

说起人工智能,不得不提到的一个概念就是机器学习。在编程领域,机器学习正引领者另一个浪潮,仿佛今天,字里行间不带点Machine Learning的属于,都不能跟别人在GitHub上约架一样。

为了抓住时代的尾巴,我也参加了一下Coursera上Andrew Ng的Machine Learning课程。特此开一系列的文章,记录接下来的几周自己的所学。

第一周的课程主要对Machine Learning做一个整体的介绍。

Machine Learning的定义

Andrew在这里引用的是Mitchell对Machine Learning的定义:

A computer program is said to learn form 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.

周志华的《机器学习》一书中,给出了如下翻译:

假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习

Machine Learning的分类

在Week 1中,Andrew给出了两个简单的Machine Learning分类:

  • Supervised Learning 监督学习
  • Unsupervised Learning 无监督学习

Supervised Learning

在监督学习中,我们会给出一系列的数据集,并且已经知道正确的输出可能的样子,我们会认定在输入和输出之中存在着某种关联。

对于监督学习,还可以根据输入和输出的不同,分成两种类型:

  • Regression 回归:给定的数据集是一些列的输入和这些输入对应的正确输出,对于新的输入,程序可以预测其输出的值时什么
  • Classification 分类:对于不同的输入,总是存在着有限种类的输出,给定一个新的输入,程序可以判断输出的具体类型

Unsupervised Learning

在无监督学习中,只会给出一些输入,并不会给出可能的输出内容。

对于无监督学习,可以分成两种类型:

  • Cluster 聚类:给定一组数据集,程序会将自动将这些数据,根据这些数据自身的某些特征,分成不同的类型
  • Non-Cluster 非聚类:Andrew列举了一个鸡尾酒宴会,可以从嘈杂的环境中分辨出不同人的声音。大概理解就是,输出并不是分成一个个典型的类型

线性回归算法(单一变量)

表示方法

为了更简单的表示算法,引入一些特殊的符号:

  • x^((i)):输入
  • y^((i)):输出
  • (x^((i)), y^((i))),i=1, 2, 3…m:数据集。对于其中任意一个(x^((i)), y^((i))),称为一个训练样本
  • X:定义域
  • Y:值域
  • h:Hypothesis(假设),用于表示从x到y的关系(函数)

对于单一的一个变量来说,其线性回归方程可以表示为:
h(x) = θ0 + θ1x

代价函数

J(θ)用于度量获得的h(x)的精确度。代价函数计算的是,对于一个h(x),计算出的值与实际值的偏差。J(θ)越小,表示预测的h(x)越贴近真实情况,当J(θ),则表示对于给定的x,都可以根据h(x)算出正确的y

可以做出J(θ)的图像来寻找其最小值,对于一个变量的h(x)来说,其代价函数为J(θ0, θ1),不断的改变θ0和θ1的值,可以在一个二维的坐标轴上,画出类似等高线的图片,等高线的中间,即为使J(θ0, θ1)最小的θ0和θ1的值

多一份关怀,多一份爱