机器学习(一)

关于机器学习的定义

  • (1959)Arthur Samuel对机器学习的定义:在没有明确设置的情况下,使计算机具有学习能力的研究领域。[跳棋程序]

  • (1998)Tom Mitchell对机器学习的定义:计算机程序从经验E中学习,解决某一任务T,进行某一性能度量P 。通过P测定在T上的表现因经验E而提高。

监督学习与无监督学习

目前有很多不同类型的学习算法,最主要的有两大类,监督学习和无监督学习。

监督学习:我们给算法一个数据集,其中包含了正确答案。

  • 以房价预测为例,我们给它一个房价数据集,在这个数据集中的每个样本,我们都给出正确的价格,即这个房子的实际卖价。算法的目的就是给出更多的正确答案,例如为你朋友想要卖掉的这所新房子给出估价,它也被称为回归问题。

    [回归问题]:我们想要预测连续的数值输出,也就是价格,技术上而言,价格能够被圆整到分,因此价格实际上是一个离散值,但通常我们认为房价是一个实数,标量或是连续值。回归这个术语是指,我们没法预测连续值的属性。

  • 以乳腺癌预测为例,假设在你的数据集中,横轴是肿瘤的尺寸,纵轴为1或0,代表是或否,即我们看到的肿瘤样本是否是恶性的,恶性的对应1,良性的对应0。机器学习的问题就是,你能否估计出肿瘤是良性的还是恶性的概率,它也被称为分类问题。

    [分类问题]:我们设法预测一个离散值输出。0或1,恶性或良性。实际上在分类问题中,有时你也有两个以上的可能的输出值。在实际例子中就是,可能有三种类型的乳腺癌,因此,你可能要设法预测离散值0,1,2或3。

无监督学习:对于监督学习中的每一个样本,我们已经被告知了什么是所谓的正确答案。比如在肿瘤预测中,数据集中每个样本都被标明为阴性样本或阳性样本,即恶性肿瘤还是阳性肿瘤。而在无监督学习中没有任何标签,都具有相同的标签或者都没有标签。

  • 以基因组学中的应用为例,这里是一个DNA微阵列数据的例子。基本的思想是给定一组不同的个体,对于每个个体,检测他们是否拥有某个特定的基因,也就是要检测,特定基因的表达程度。这些颜色,红、绿、灰等等,展示了不同个体拥有特定基因的程度。然后你能做的就是运行一个聚类算法,把不同的个体归入不同的类,或归为不同类型的人。

    这就是无监督学习,因为我们没有提前告知这个算法,这些是第一类人,这些是第二类人,这些是第三类人等等。相反我们只是告诉算法这儿有一堆数据,我不知道这些数据是什么,我不知道谁是什么类型,我甚至不知道都有哪些类型,但你能自动找出这些数据的结构吗?虽然事先我并不知道有哪些类型,你能自动按得到的类型把这些个体分成簇吗?因为我们没有把数据集的正确答案给算法,所以这就是无监督学习。

无监督学习或聚类算法在其他领域的应用:

  1. 用来组织大型的计算机集群,找出哪些机器趋向于协同工作,如果你把这些机器放在一起,你就可以让你的数据中心更高效的工作。
  2. 社交网络的分析,如果可以得知你email最频繁的联系人,或者知道你的Facebook好友,或者你Google+圈,我们是否可以自动识别同属一个圈子的朋友,判断哪些人互相认识?
  3. 在市场细分中的应用,许多公司拥有庞大的客户信息数据库,对于一个客户数据集,你是否能自动找出不同的市场分割,并自动将你的客户分到不同的细分市场,从而能自动高效地在不同的细分市场中进行销售。
  4. 用于天文数据分析

鸡尾酒会问题:鸡尾酒会问题(机器可以同时识别多人对话吗?)算法,(无监督学习的一种算法)分理出多个被叠加到一起,被混合到一起的音频源。

一些标志
m = Number of training examples
x’s = “input” variable / features
y’s = “output” variable / “target” variable
( x , y ) = one training example
( x ( i ) x^{(i)} x(i) , y ( i ) y^{(i)} y(i) ) = i t h i^{th} ith training example

假设函数 代价函数

假设函数是用来进行预测的函数。
代价函数用来衡量模型预测出来的值h( θ \theta θ)与真实值之间差异的函数。

  1. 以线性函数版本为例
    Hypothesis : h θ h_{\theta} hθ(x) = θ 0 \theta_0 θ0+ θ 1 \theta_1 θ1x
    问题:如何选择 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1
    选择标准:在线性回归中,我们要解决的是一个最小化问题。(尽量选择参数值使得我们能合理准确地预测y的值。)
    Parameters: θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1
    Cost Function:
    J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1) = \tfrac{1}{2m} \sum_{i=1} ^ m (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2
    Goal : θ 0 , θ 1 m i n i m i z e J ( θ 0 , θ 1 ) ^{minimize}_{{\theta_0,\theta_1}} J(\theta_0,\theta_1) θ0,θ1minimizeJ(θ0,θ1)

梯度下降法

可以将代价函数J最小化。它不仅被用在线性回归上,还被广泛应用于机器学习的众多领域。
(也可以用梯度下降算法最小化其他函数。)

  1. Gradient descent algorithm
    repeat until convergence {
    θ j \theta_j θj := θ j \theta_j θj - α ∂ ∂ θ j J ( θ 0 , θ 1 ) \alpha \tfrac \partial {\partial \theta_j} J(\theta_0,\theta_1) αθjJ(θ0,θ1) (for j = 0 and j = 1)
    }

注意

  1. :=是赋值运算符。

  2. 参数 α \alpha α称为学习速率,它控制我们以多大的幅度更新这个参数 θ j \theta_j θj

  3. 你需要同时更新 θ 0 和 θ 1 \theta_0和\theta_1 θ0θ1
    即Correct:Simulataneous update如下
    temp0 := θ 0 \theta_0 θ0 - α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) \alpha \tfrac \partial {\partial \theta_0} J(\theta_0,\theta_1) αθ0J(θ0,θ1)
    temp1 := θ 1 \theta_1 θ1 - α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) \alpha \tfrac \partial {\partial \theta_1} J(\theta_0,\theta_1) αθ1J(θ0,θ1)
    θ 0 \theta_0 θ0 := temp0
    θ 1 \theta_1 θ1 := temp1

  4. 如果使用非同步更新的方式,可能也会正确工作,但这并不属于梯度下降法,而是具有不同性质的其他算法。

  5. 即使学习率 α \alpha α不变,梯度下降法也可以收敛到局部最低点,故实际上没有必要再另外减小 α \alpha α
    在梯度下降法中,在我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,根据定义,在局部最低时,导数等于零,所以当我们接近局部最低点时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度。

梯度下降和代价函数结合得到线性回归

我们要做的就是将梯度下降法应用到最小化平法差代价函数。

在这里插入图片描述
线性回归的代价函数总是凸函数,这个函数没有局部最优解,只有一个全局最优。只要你使用的是线性回归,它总是会收敛到全局最优。

Batch梯度下降算法

Batch梯度下降意味着每一步梯度下降,我们都遍历了整个训练集的样本。

如何处理无穷多的特征

如何在计算机中存储无穷多数量的事物,因为你的计算机内存可能会溢出。

  • 以支持向量机算法为例。
    提到了但没讲的,待补充:
  • 如何处理无穷多的特征
  • 聚类算法
  • 正规方程组法求代价函数最小值 (事实上相比于正规方程组法,梯度下降适用于更大的数据集。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值