Hadoop里的数据挖掘应用-Mahout——学习笔记<三>
之前有幸在MOOC学院抽中小象学院hadoop体验课。
这是小象学院hadoop2.X的笔记
由于平时对数据挖掘做的比较多,所以优先看Mahout方向视频。
Mahout有很好的扩展性与容错性(基于HDFS&MapReduce开发),实现了大部分常用的数据挖掘算法(聚类、分类、推荐算法)不过数据挖掘调参和业务理解是关键,个人觉得真正想学习的话,还是看正规机器学习的课程比较好。
这里省略了大部分比较技术那一块的笔记。。。
虽然mahout在速度上有天然优势。但R/Python其实也在接入hadoop,如RHadoop等
而且正如[别老扯什么Hadoop了,你的数据根本不够大](http://geek.csdn.net/news/detail/2780) 这里提到的,在轻量级数据上,还是没有太大必要折腾hadoop,在hadoop上用mahout的前提应该是数据量非常大
不在博客园上阅读时才会看到的,这篇博文归http://www.cnblogs.com/weibaar 所有
仅保证在博客园博客上的排版干净利索还有代码块与图片正确显示,他站请保留作者信息尊重版权啊
一、课程概述
1、综合介绍
2、聚类算法
3、分类算法
4、推荐算法
二、聚类算法
聚类应用场景如新闻聚类(多少条与之相关)。最常用的是k-means聚类
基本流程应该是指定聚类次数,定位中心点,计算平均距离,最后实现产品分类。
在Mahout里
1、提取feature
对新闻正文分词,对词编码,如doc1有哪些词出现,转化为0-1多维向量
2、feature向量化,多维的向量
之前的多维向量浪费空间,需要换一种表达方式,mahout里提供lucene或其他工具把这些feature转化为向量格式
总之要实现有序的、节省空间的feature,最后储存为SequenceFile格式。
3、用kmeans实施聚类
bin/mahout kmeans \ 并可调相应格式
另外,mahout提供多种向量之间距离计算org.apache.mahout.distance
因此kmeans参数调优,有一个方法是对向量距离计算方法调优
cannopy算法:寻找最优的初始点
一般配合其他聚类方法使用
如cannopy算法可以协助kmeans确定初始点
就是先随机选一个点,计算不同距离的点的个数,然后迭代计算,最后可以找出一个包含度较高的初始点
(kmeans默认用随机点,指定canopy的话可以寻找最优的初始点,这个改进应该也是调参之一)
三、分类算法
属于有监督的机器学习算法,分类已经实现订好了,现在看什么因素是可以让我们快速定位其为该分类的数据
所以应用步骤应该是,用训练集获得分类模型,测试调优后用于线上产品里
再调用其他的参数引用分类模型
模型评估常用的两个指标:confusion混淆矩阵 & AUC
不在博客园上阅读时才会看到的,这篇博文归http://www.cnblogs.com/weibaar 所有
仅保证在博客园博客上的排版干净利索还有代码块与图片正确显示,他站请保留作者信息尊重版权啊
四、推荐算法
用户,对什么物品,打多少分
preference:倾向度,可以用user-item矩阵进行评分
就是用用户对其他物品的打分(基于相似用户的打分,重点是查找用户相似度)以及其他用户对该item的打分(重点查找相似的物品,用商品相似度作为权重填充)
User-based的推荐效果更好,用户效果好
Item-based的效果较差,但是计算效率高,适合实时推荐系统
Mahout有自带一个Taste推荐系统实现。基于java,协同过滤,属于可靠高效的推荐引擎
Hadoop里的数据挖掘应用-Mahout——学习笔记<三>的更多相关文章
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- angular学习笔记(三十一)-$location(2)
之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...
- angular学习笔记(三十一)-$location(1)
本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
- angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
- angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令
在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...
- angular学习笔记(三十)-指令(2)-restrice,replace,template
本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...
- MySql学习笔记三
MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...
随机推荐
- JavaScript函数的概念
函数是这样的一段代码,它只定义一次,但可能被执行或调用任意多次. JavaScript函数是参数化的:函数的定义会包含形参,这些参数在函数的整体中像局部变量一样工作.函数调用时会为形参提供实参的值.除 ...
- RSA加密算法的简单案例
RSA加密算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击. 那关于RSA加密算法有哪些应用呢?以下举一个数据库身份验证的案例. 在使用数据集进行身份认证时,密码存在数据 ...
- 电信行业的BI应用
截至2015年年底,我国三大运营商的移动用户数达到13.1亿户,4G /3G用户累计达到8.09亿户,再次创下新高.从三大运营商的年度财报来看,在具体业务方面,三大运营商的数据流量业务带来的收入均已超 ...
- 聊天室(Java实现)
功能: 登录 若用户账号不存在,弹出错误 若用户密码错误,弹出错误 若用户账号已在线,弹出错误 注册 若用户已注册,弹出错误 聊天室 多人聊天,类似QQ里的群. 点击右侧的在线用户,可进行一对一聊天. ...
- Hibernate 延迟加载和立即加载
概念 什么是延迟加载:所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作.可以简单理解为,只有在使用的时候,才会发出sql语句进行查询,数据是分N次读取. 什么是立即加载:所谓立即加载既是 ...
- UDP
我们通过以下代码来连了解以下UPD 首先我们先创建Server类 package cn.a.qwe; import java.net.DatagramPacket; import java.net.D ...
- app测试总结
1.安全测试(权限) 1)软件权限:其中包括发送信息,拨打电话,链接网络,访问手机信息,联系人信息等等 2)数据在本地的存储.传输等 3)执行某些操作时导致的输入有效性验证.授权.数据加密等方面 4) ...
- EasyUI实现工地领款单项目
环境搭建 引入jar.配置Spring MVC.web.xml.日志等 建表 自动生成MyBatis相关文件 mybatis-generator-core-1.3.2.jar <?xml ver ...
- git提交时支持文件名大小写的修改
在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: 1. 修改git conf ...
- Android 自定义Dialog类,并在Activity中实现按钮监听。
实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下: 开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的 ...