这门课是CS100.1x的后续课,看课程名字就知道这门课主要讲机器学习。难度也会比上一门课大一点。如果你对这门课感兴趣,可以看看我这篇博客,如果对PySpark感兴趣,可以看我分析作业的博客。

Course Software Setup

这门课的环境配置和上一门一模一样,参考我的这篇博客CS100.1x Introduction to Big Data with Apache Spark

Lecture 1 Course Overview and Introduction to Machine Learning

这一章主要是背景介绍和一些基本概念的介绍。现在的数据越来越多,单一的机器处理这些数据的时候会很慢,所以产生了分布式计算,但是分布式计算本身很复杂,所以出现了Spark来简化分布式计算,特别是Spark MLlib,对解决机器学习问题非常好用。

紧接着介绍了机器学习的概念,包括机器学习的分类,机器学习的相关术语,机器学习的处理流程,处理垃圾邮件的具体例子,线性代数基础知识和衡量时间和空间复杂度的Big O。

这里每个内容都很广,所以不在这里赘述。有兴趣的可以搜搜其他博客。

Lecture 2 Big Data, Hardware Trends, and Apache Spark

这章内容和上一门课的lecture3和lecture4一模一样。参考我的这篇博客CS100.1x Introduction to Big Data with Apache Spark

Lecture 3 Linear Regression and Distributed ML Principles

这一章干活很多。首先介绍了线性回归和最小二乘法,线性回归在工业中应用非常广,因为算法简单,效果好,而且可以通过增加特征来提高模型复杂度。当模型复杂度高时,容易过拟合,Rideg regression是个很好的选择。

这一章还给出了一个预测歌曲年代的例子,通过这个例子简单介绍了机器学习的处理流程。后面的作业会详细的解决这个问题。

这一章解释了如何用分布式来解决线性回归的问题。我们都知道,在解决线性回归的问题时,有一个closed form solution,如下图

我们得到时间复杂度和空间复杂度

我们发现当数据量很大时,n一般很大,而d表示特征的多少,相比较n,显得很小。所以计算和存储的瓶颈就在于如何存储X和如何计算X的转置乘以X(原谅我懒得打公式)。因为这两项涉及到n。

第一个问题很好解决,因为我们这里就是讲分布式系统,直接把数据分布式存储就行。

第二个问题需要一些技巧,如下图,我们把矩阵的乘法从inner product变成outer product。


现在的时间和空间复杂度为

通过这些步骤,还有一个问题就是,时间和空间的复杂度里仍然有平方项,当d很大时,本地计算d*d也够呛。所以最好有一个复杂度为线性实现的方法。

第一个思路是利用数据的稀疏性,稀疏矩阵在实际问题中很常见,我们可以利用PCA降维,来把d变小;第二个思路就是换个算法,比如梯度下降。

梯度下降的定义和过程我们就不多说了,这里说说梯度下降在分布式里的应用和代码实现。

通过上面的步骤,也解释了三个经验法则。

Lecture 4 Logistic Regression and Click-through Rate Prediction

这一章主要讲逻辑回归和其应用——点击预测。点击预测主要用于在线广告,而且有很多难点,比如影响点击的因素太多太乱、数据量太大。然后介绍了监督学习的概念,并从线性回归到逻辑回归。然后介绍了FP,FN定义和用ROC plot来觉得阈值。接着介绍了如何处理类别型特征(label encoding和one-hot encoding)。当对特征这样处理后,整个矩阵可能会很稀疏,这时候用sparse representation会节省存储空间和计算量。

当one-hot encoding处理后特征太多时,最好不要丢特征,因为虽然矩阵很稀疏,不代表没有信息量;另外一个选择是用feature hashing。

Lecture 5 Principal Component Analysis and Neuroimaging

这一章主要讲PCA和神经科学。。我没太明白为什么讲神经科学,难道是和作业有关系么。然后介绍了无监督学习,从而引出了PCA。介绍PCA的博客太多了,这里不赘述。

这里重点讲讲PCA在分布式上的实现。分两种情况。

第一种情况是Big n和small d,分为4步。




第二种情况是big n和big d。主要用迭代的方法。


CS190.1x Scalable Machine Learning的更多相关文章

  1. 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

    ##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...

  2. How do I learn machine learning?

    https://www.quora.com/How-do-I-learn-machine-learning-1?redirected_qid=6578644   How Can I Learn X? ...

  3. 100 Most Popular Machine Learning Video Talks

    100 Most Popular Machine Learning Video Talks 26971 views, 1:00:45,  Gaussian Process Basics, David ...

  4. Java Machine Learning Tools & Libraries--转载

    原文地址:http://www.demnag.com/b/java-machine-learning-tools-libraries-cm570/?ref=dzone This is a list o ...

  5. 【机器学习Machine Learning】资料大全

    昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...

  6. Why The Golden Age Of Machine Learning is Just Beginning

    Why The Golden Age Of Machine Learning is Just Beginning Even though the buzz around neural networks ...

  7. SOME USEFUL MACHINE LEARNING LIBRARIES.

    from: http://www.erogol.com/broad-view-machine-learning-libraries/ http://www.slideshare.net/Vincenz ...

  8. A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning

    A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning by Jason Brownlee on S ...

  9. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

随机推荐

  1. 负载均衡(Load Balancing)学习笔记(二)

    概述 文章负载均衡(Load Balancing)学习笔记(一) 讲述了负载均衡的一般性原理,本文继续介绍常见的实现负载均衡的方法. HTTP重定向 HTTP重定向服务器是一台普通的Web服务器,用户 ...

  2. for之于while的优势

    前言 for与while各有功效,下面就只列举for之于while的优势有哪些 优势 1.循环中提供了特殊的机会来将变量的作用域最小化.(无论是传统的还是for-each形式的)for循环,都允许声明 ...

  3. Hsqldb中设置主键,并让主键自增

    CREATE TABLE userinfo ( Id INTEGER GENERATED BY DEFAULT AS IDENTITY, Name varchar(100) NOT NULL, Dep ...

  4. sysbench安装、使用、结果解读

    sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在github上,项目地址:https://github.c ...

  5. Unity[C#] Reflection Use

      Reflection Reflection是C#程序员的一个最有力工具 最常用的例子来说明反射的用处是一个插件系统.假设你正在创建一个 接受用户创建 的扩展程序,有没有办法预先知道哪些方法这个扩展 ...

  6. django -- uwsgi+nginx部署

    一. 安装nginx How To Install Nginx on CentOS 7 添加epel扩展仓 sudo yum install epel-release 安装Nginx yum inst ...

  7. python的学习之路day7-socket网络编程

    python基础部分学习完了,时间也已经过了两个月左右,感觉没学到什么,可能是我学习之后忘记的太多了. 由于没钱买书,要是去培训就更没钱了,所以在网上找了一本书,感觉还不错,讲的比较好,比较详细. P ...

  8. [Spark Core] Spark Shell 实现 Word Count

    0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 示意图 1. 实现 1.1 分步实现 ...

  9. 谁对EXTJS熟悉,有关关闭panel的问题?

    谁对EXTJS熟悉,有关关闭panel的问题?比如:我在A.js 中写了一个  var  win  =   new  Ext.Window( { b.js });   win.show(); 打开了一 ...

  10. 基于TP5使用Websocket框架之GatewayWorker开发电商平台买家与卖家实时通讯

    https://www.cnblogs.com/wt645631686/p/7366924.html 前段时间公司提了一个新的需求,在商品的详情页要实现站内买家和商品卖家实时通讯的功能以方便沟通促成交 ...