背景:

在所有聚类算法中KMeans算是表面上最简单的一种,没有过多恼人的古希腊符号公式,没有过分繁杂的公式嵌套。对于一个初学矩阵或者仅有向量概念的非专业人士的来说,不可不畏是一把踹门利器。这个世界上越是简单的东西,其实越是复杂,尤其在笔者将其改造成MapReduce时,发现并非那么容易一跃而过。虽然有现成的代码供把玩,但是对于练手还是值得一试。

心得:

· 纯理论一笔带过

KMean的大致实现过程就是任意指定N个的质心,然后对所有星星进行遍历,寻找与这个N个质心距离最近欧几里得距离的星星,将其归为一类,再从这一类中重新计算N个质心坐标属性。直至这N个质心坐标变化DELTA小至自己设定的阀值。

· 一些心得

  1. 网上对于KMEAN的算法有很多,大多数集中于(2质心+2维+单机)版本。要想支持(N质心+N维+MP)着实需要重新好好考虑程序架构,当然更NB者还能支持多线程。
  2. 嵌套问题是目前大多数非JAVA Hadoop计算的一道门槛,即便是JAVA类本身在JOB CHAIN上也常常会碰到傻傻分不清的情况。对于10G以上数据如何在MP上发挥最大功效,就是减少JOB和TASK之间来回SHUFFLE。
  3. 既期望一次MP,完成整个运算,同时将负载尽可能在Map阶段进行压榨。也因此,笔者在假设数据完全散列的情况下完成每组TASK的计算,已期望得到N个K(质心)离开最终质心近似向量值。在Reduce阶段粗暴地对N个K做归类,再做算术平均,再做一把全两项遍历,最后得出N个类。难就难在对N个TASK的K做重新归类
  4. 由于主要通过Streaming来计算,整个对于Hadoop的I/O还是有较大负荷。
  5. 下面两幅图简单介绍下K-Means聚合过程。左边是2个质心2维,右边是3个质心2维。

                      

DATA:

X      Y

记录近期小改K-Means至MapReduce上的心得的更多相关文章

  1. 记录近期小改Apriori至MapReduce上的心得

    ·背景 前一阵,一直在研究一些ML的东东,后来工作关系暂停了一阵.现在继续把剩下一些热门的算法再吃吃透,"无聊+逗比"地把他们搞到MapReduce上.这次选择的入手对象为Apri ...

  2. 记录近期面试题,面试总结 (从css - vue 全面面试题)

    记录近期换工作时遇到的面试题和面试题答案 css 部分 盒模型 问题:说一下 css 的盒模型 盒模型分为标准模型和怪异盒模型(IE 盒模型) 标准盒模型:盒模型的宽高只是内容(content)的宽高 ...

  3. 算法进阶面试题02——BFPRT算法、找出最大/小的K个数、双向队列、生成窗口最大值数组、最大值减最小值小于或等于num的子数组数量、介绍单调栈结构(找出临近的最大数)

    第二课主要介绍第一课余下的BFPRT算法和第二课部分内容 1.BFPRT算法详解与应用 找到第K小或者第K大的数. 普通做法:先通过堆排序然后取,是n*logn的代价. // O(N*logK) pu ...

  4. 关于GitHub上传没有记录(小绿块不显示的问题)

    最近开始使用上github来上传保存自己在学习中所写过的代码,打算将自己每天的成果能有个保存,然后就利用上GitHub这么一个利器. 听说GitHub的那个绿块是用来记录每天的上传记录的,结果我将代码 ...

  5. MySQL 表记录查询小练习

    表记录查询小练习 查看岗位是teacher的员工姓名.年龄 查看岗位是teacher且年龄大于26岁的员工姓名.年龄 查看岗位是teacher且薪资在12000-16000范围内的员工姓名.年龄.薪资 ...

  6. 微信小程序之下拉刷新,上拉更多列表实现

    代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...

  7. Naive Bayes在mapreduce上的实现(转)

    Naive Bayes在mapreduce上的实现 原文地址 http://www.cnblogs.com/sunrye/p/4553732.html Naive Bayes是比较常用的分类器,因为思 ...

  8. 微信小程序基础之在微信上显示和体验小程序?

    随着小程序正式上线,用户现在可以通过二维码.搜索等方式体验到开发者们开发的小程序了. 用户只要将微信更新至最新版本,体验过小程序后,便可在发现页面看到小程序TAB,但微信并不会通过这个地方向用户推荐小 ...

  9. 《Javascript高级程序设计》阅读记录(五):第六章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

随机推荐

  1. GitLab一键式安装bitnami

    https://bitnami.com/stack/gitlab/installer https://bitnami.com/redirect/to/96764/bitnami-gitlab-8.5. ...

  2. C# 使用WinRar命令压缩和解压缩

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. UVA 11249 - Game(游戏)

    UVA 11249 - Game 题目链接 题意:两堆石头.a和b.每次能取一堆随意数量,或者两堆同一时候取.可是绝对值差不能超过k,最后不能取的人输,问先手能否赢 思路:先如果(a, b)石子,a是 ...

  4. 采取Volley,实现瀑布流

    今天停止php,在研究Volley框架的源代码,实现了瀑布流的效果. 为了实现最终的级联效应,一些需要掌握的知识: (1)自己定义布局,由于我们要监听滑究竟部的事件就要实现自己定义的ScrollVie ...

  5. mfc配置GDI+有106个错误

    mfc配置GDI+有106个错误,处理如下,参考http://bbs.csdn.net/topics/380054079 一开始#include...放在stdafx.h里有错误,后来上面修改好了,放 ...

  6. Java 新特性(2) - JDK6 新特性

    http://freesea.iteye.com/blog/160133 JDK6的新特性之一_Desktop类和SystemTray类 JDK6的新特性之二_使用JAXB2来实现对象与XML之间的映 ...

  7. 【LeetCode从零单排】No189 .Rotate Array

    称号 Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the arr ...

  8. 【LeetCode从零单排】No15 3Sum

    称号 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...

  9. springMvc的注解注入方式

    springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着 ...

  10. win9x_win2k下对物理磁盘的操作

    void CReadSectorDlg::OnReadButton() { UpdateData (TRUE) ; CFile m_Sector_file ; char * buffer ; if ( ...