月度归档:2017年08月

机器学习的一些建议

在全部学完课程里的机器学习算法之后,我们总结下Andrew Ng对于这门学科的一些建议,其实主要是线性回归和逻辑回归的一些debug技巧。本文覆盖Coursera Machine Learning Week 6的内容。

评估假设函数(Evaluating a hypothesis)
比如我们找到了合适的模型,经过训练得到了最终的假设函数,那我们该如何评估这个假设函数以判断他是否过拟合了或者欠拟合呢?很简单,我们把数据集分为两部分:训练集(training data set)测试集(test data set),这两者的比例大概是70%和30%。使用训练集学习得到参数\(\Theta\),使用测试集计算误差\(J_{test}(\Theta)\)。具体地,

  • 对于线性回归,我们计算:\(J_{test}(\Theta)= \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_{\Theta}(x_{test}^{(i)})- y_{test}^{(i)})^{2}\)
  • 对于分类问题,我们先计算错误的分类误差(Misclassificat[……]

    继续阅读

  • Machine Learning-Photo OCR(图片文字识别)

    今天来总结一下Coursera Machine Learning最后一周week 11的内容:图像文字识别(photo OCR),这个问题是机器学习在计算机视觉(computer vision)领域里的一个很常见的应用。本章我们会介绍如何使用机器学习算法解决这个问题,以及什么是人工数据合成(artificial data synthesis)。

    The Photo OCR problem
    Photo OCR全称是:photo optical character recognition,照片光学字符识别,意思就是从照片里识别字符信息,比如我们有如下图片:

    那么OCR解决的问题就是把照片中红框内的文字识别出来。

    Photo OCR pipeline
    这是一个较为复杂的机器学习应用,我们可以把它分为几个小模块,然后组成一个流水线(pipeline)来解决问题。具体地,分为以下几个步骤:

    • 文字区域检测(text detection),找到图片中属于文字的部分,并把它抠出来:
    • 字符分割(character segmentation),把上一步得到的图片分割成包含单个[……]

      继续阅读

    大规模机器学习

    本文覆盖Coursera Machine Learning Week 10的内容。

    大数据集的学习(Learning with large data set)
    如果我们回顾过去10年机器学习的发展历史,你会发现现在的学习算法效果比之前要好很多,其中一个重要的原因是现在比以前拥有更多可以供训练的数据。所以有人会说拥有更多的数据比算法更重要:“It’s not who has the best algorithm that wins, it’s who has the most data.”。所以这篇文章会介绍一些在大数据规模下的机器学习技巧。
    先回顾一下之前的梯度下降公式:
    $$\theta_{j} := \theta_{j} – \alpha\frac{1}{m}\sum_{i=1}^{m}\left ( h_{\theta}\left ( x^{(i)}\right )- y ^{(i)}\right ) x_{j}^{(i)}$$
    上面公式中\(m\)的值可能会很大,比如\(m\)等于一个亿,不要以为这个数据量很大,在实际应用中是很常见的。如果还是按照之前的方法进行梯[……]

    继续阅读

    Machine Learning-推荐系统(Recommender Systems)

    本文覆盖Coursera Machine Learning Week 9的内容。这篇文章看似公式很复杂,但实质上内容还是比较简单的,就是基于最基本的线性回归,其实很容易理解的。

    一、问题描述

    推荐系统是机器学习在工业界的一个非常重要的应用,虽然它在学术界并不怎么被重视。今天你看到的大部分网站里使用的推荐系统,比如Amazon,淘宝,豆瓣等,它们基本都采用了机器学习技术,今天我们花点时间总结下推荐系统的相关知识。
    例子:预测电影评分
    假设我们有一些数据,它包含了不同用户对不同电影的评分情况(0-5分),其中?表示该用户没有看过这部电影,这些数据用一个表格表示如下:

    Movie
    Alice(1)
    Bob(2)
    Carol(3)
    Dave(4)

    Love at last
    5
    5
    0
    0

    Romance forever
    5
    ?
    ?
    0

    Cute puppies of love
    ?
    4
    0
    ?

    Nonstop car chases
    0
    0
    5
    4

    Sward[……]

    继续阅读

    Machine Learning-异常检测(Anomaly Detection)

    本文覆盖Coursera Machine Learning Week 9的内容。
    一、问题描述
    假设我们现在要构建一个模型来判断某一个飞机发动机是否有问题,我们选取的特征如下:

  • \(x_{1}\) = 发热
  • \(x_{2}\) = 抖动
  • 原始数据集:\(\left \{ x^{(1)},x^{(2)}, … ,x^{(m)} \right \}\)在坐标轴上的分布如下图所示:

    很明显上图数据点的分布是有规律可寻的:越往中心越密集,越往边缘越稀疏。也就是说大部分数据点都散落在中心位置,而小部分散落在边缘位置。那么我们就可以说如果一个测试点\(x_{test}\)越靠近中心点,那么它是正常引擎的可能性就越大;如果他远离中心点,则它很可能就是异常的引擎。这就是异常检测,他在很多领域都有应用,比如它可以监测网站的异常用户、监测机房电脑运转是否正常等。

    二、算法

  • 高斯分布(Gaussian distribution)
    看到上图的分布我们很容易想到一个模型:高斯分布(Gaussian distribution),也就是正态分布(Normal distribu[……]

    继续阅读