当前课程知识点:高级大数据系统 > Machine Learning System > Mahout > Video
我们之前介绍了
这个大数据相关的若干系统
从底层的这种分布式文件系统到
中层的这个大规模的这种数据的
并行处理系统
以及到上层我们说到了这种
大数据的图的数据库
那么最终大家选择
这个不同的大数据系统
实际上它们都是为了
实现一定的这种数据处理的目标
来做特定的这个应用
或者说特定的服务
那么今天我们就会讲一个和应用
离得比较近的这个大数据系统
叫做这种分布式的机器学习系统
那我们来看怎么样
在这个大数据的平台上
能够非常简单有效的
进行一个机器学习的一个算法
那我们今天的这样一个的系统
叫做mahout
mahout也是在这个
hadoop的这样一个
生态环境底下的一个系统
大家通过它的这个标准
实际上也能猜到它和hadoop和hdfs
有非常密切的这样一个关系
那么用mahout实际上
大家可以用比较简单的代码
就能够实现相对比较工业化
比较复杂的一些机器学习的
这样的一些方法
那么mahout今天已经支撑了
不少这个经典的计算机算法
然后可以和底层的mapreduce
底层的这个HDFS
进行有效的结合
那我们今天会介绍它的一些
基本的这种数据的模型
它能支撑的一些算法包含哪些
那么介绍完了之后
我们会给一个这个样例学习
我们通过做一个简单的推荐系统
来告诉大家怎么样使用
类似于mahout
这样的分布式的
这种机器学习的平台
那么mahout实际上它是一个
这个java的这种实现
然后在mahout里面实现了
一系列的这个继续学习的算法
那大家可以想象
实际上当hadoop和这个
HDFS被发明了之后
大家就开始用hadoop
来进行一系列的这种数据挖掘
那么这个过程往后发展
就是说大家需要在hadoop上
去实现一系列的这种学习的算法
因为它们为了完成更加这个复杂
或者是更加抽象的一些
这种数据挖掘的任务
比如说来做预测
来做推荐
那我们来看
在mahout里面
为了集中在一个地方
把这些代码实现出来
以便后面的人可以简单的去使用
它提供了哪一些
这种继续学习的算法
那么从分类上来说
它包含了大概下面的一些
这个继续学习的方法
包含了这个聚类
我怎么样把这个
大规模的数据样本给它
在无监督的这样一个环境下
把它分配到不同的类里面去
然后这种类可能我可以用来
做一些其它的这种操作
比如说我们可以把这个数据样本
根据它们的这种距离
语义的距离
或者是这个操作上的距离
把它们聚到不同的类里面去
然后分类
在聚类里面
我们可能没有
这个数据的样本的一个标签
但在分类里面
我们会给它一个标签
让它完成一个类似于有监督的
这样一个学习的一个过程
我们可以做推荐和预测
根据时间上
用户之前发生的一些行为
比如说用户对物品的一个打分
用户对物品的一个操作
或者说是人和人之间的一个关系
我们来做一个推荐
我们能够发现这个
frequent的这种itemset
那么这也是在mahout
早期的版本被提供出来的
因为当时的这个工程人员认为
这几种类型的算法实际上是
在用hadoop的时候
用户非常容易去使用到的
那么这几种被用作了原形
来提供给大家广泛的去使用
那么基于学习算法
它从本质上来说
实际上支撑了我们今天数据驱动
或者说互联网驱动的
这样一些服务
那么这边给出了一系列的这个
互联网上之前出现过的
这样一些公司
那么他们实际上都很大程度上
依赖于这种大规模的
机器学习的算法
利用机器学习的方法
进行广告的投放
进行用户关系的推荐
那么foursquare
进行用户这个位置的一个挖掘
twitter进行这种流行趋势的
一个判断、记录
或者说是进行一个推荐
那么这些都和机器学习的算法
联系非常的紧密
那么我们具体来看一下
在不同的这个算法当中
大家这个系统课的同学
需要了解到一个什么样的程度
那么在推荐算法里面
我们的一个目标
从典型的这种意义上来讲
是想把一些物品
一些item
推荐给用户
那么它的一些常用的实现
他们的算法包含哪些呢
首先基于用户的这个协同过滤
我们挖掘出用户和用户之间的
这种相似度
利用这种相似度
把其他用户发生的行为
其他用户的偏好
能够运用到我们要推荐的这个
用户身上
我们可以基于item的这个
协同过滤
把刚刚的过程反过来
我们发现
item和item
由于用户的这种点击用户的评分
发现它们之间的一个关联
oneslope作为一种非常简单的
这种推荐
利用用户和用户之间
评分的这种相似度
来进行这个推荐
对矩阵进行分解
实际上这些都是
在mahout里面我们提供的
从简单的发现用户
item之间的相似度
到能够对矩阵进行
奇异值一个分解
从而发掘出不存在评分的一些
这个用户的销量
和这个item销量
之间的这个关联
那么从简单到复杂
实际上它都提供了一些
解决的思路
那么推荐或者预测也是今天
这种分布式的
这种机器学习的算法
比如说predictionIO
一个初创的这种公司提供的平台
实际上都是他们会去
重点去关心的这个算法的
一个条目
我们刚刚说到了聚类
在聚类里面包含了哪些
我们大家能够立刻想到的这个
k-means或者是k-medio
然后这种LDA
我们也可以把它叫做这种
聚类的一个方案
这个minHash的这样一个clustering
这也是聚类里面会常用到的
那这些算法的一个特点
没有监督 对吧
我们可能并不知道
并不要求用户提供一个
准确的一个分类的标签
但是我们可以得到对数据
可能最初的一个处理的
这样一个结果
分类有了标签
比如说我们要对垃圾邮件
进行一个标签
我们要对这个不同
这种情绪的文字进行一个标签
那么这时候我们会使用到
分类的这样一些方法
包含了这种二职的逻辑的回归
包含了一些贝叶斯方法
甚至是可能一些decission tree
这样的一些方法
实际上都是分类里面包含的
那么这些方法中的重要的一部分
实际上在今天的apache mahout的里面
已经得到了这样一个支持
还有一些其它的算法
比如说这个大家在数据挖掘里面
会接触到的这种计划的算法
那么用来解决
这种不太好通过形式化
能够求解的这样一些问题
比如说一些这种对数据进行降维
那么可能会在我们大数据的
模块里面会用到
用来做数据的这种预处理的
一些模块
比如说PCA
比如说SVD
那么这些都是对数据进行降维
对数据进行这个降维操作的
这样一些比较经典的这个方法
那么在mahout里面
也做了一个支撑
从整体一个框架的这种角度来看
实际上mahout
它把它能够支撑的算法
大概分成了这样几层
那么这上面我们会设计
大数据的服务的应用
和大数据的一些这种
用户体验提升的这种服务
那么这些服务可能会依赖于一些
高级的继续学习的算法
包含了这种
刚刚说到的分类
具类和预测推荐
那这是相对比较高级的算法
当然用户的应用
可能也会直接去使用更加底层的
这种数据挖掘的一些技术
比如说使用一些矩阵化的技术
使用一些这种矩阵的分解
然后数据的降维等等
这些都可以在更低层的
mahout的支撑的库里面
得到一个支持
那么我们后面就会给大家来介绍
怎么样利用mahout提供的
这些库来进行一个
简单的系统的一个实现
那么推荐
-What is big data and what is big data system?
--Video
-Problems in big data systems?
--Video
-Overview of the course
--Video
-Principles of big data system design
--Video
-Manipulating Data on Linux
--Video
--Video
--Video
-Basics of Linux Data Processing--Manipulating Data
-Running Commands on a Single Machine
--Video
-Running Commands on a Single Machine--作业
-Using a Linux Cluster
--Video
-Using a Linux Cluster--作业
-Storage for Big Data Computing: Distributed file system
--Video
-Storage for Big Data Computing: Distributed file system--作业
-File system and GFS
--Video
-File system and GFS--作业
-Understanding HDFS using Legos
--Video
-Understanding HDFS using Legos--作业
-File System Implementation and DFS
--Video
--Video
-File System Implementation and DFS--作业
-What is MapReduce and why
--Video
-What is MapReduce and why
-Learn MapReduce by playing with cards
--Video
-Processing pattern
--Video
-Processing pattern--作业
-Hadoop
--Video
-Hadoop--作业
-Algorithms in MapReduce
--Video
-Algorithms in MapReduce--作业
-Tutorial
--Video
-Background
--Video
-Background--作业
-Spark
--Video
-Spark--作业
-Use Spark for data mining
--Video
-Use Spark for data mining--作业
-Spark data processing
--Video
-Spark data processing--作业
-Experiment in Spark
--Video
-Experiment in Spark--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-What is GraphDB and Graph data processing
--Video
-What is GraphDB and Graph data processing--作业
-Graph systems
--Video
-Graph systems
-Example of a GraphDB
--Video
-Example of a GraphDB--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业