Archive | 九月, 2013

Data Mining 笔记聚类k-medoids

一、概述

k-means利用簇内点的均值或加权平均值ci(质心)作为类Ci的代表点。对数值属性数据有较好的几何和统计意义。对孤立点是敏感的,如果具有极大值,就可能大幅度地扭曲数据的分布.
k-medoids(k-中心点)算法是为消除这种敏感性提出的,它选择类中位置最接近类中心的对象(称为中心点)作为类的代表点,目标函数仍然可以采用平方误差准则。
PAM(Partitioning Around Medoids,围绕中心点的划分)是最早提出的k中心点算法之一。

二、算法思想:

随机选择k个对象作为初始的k个类的代表点,将其余对象按与代表点对象的距离分配到最近的类;反复用非代表点来代替代表点,以改进聚类质量。

即:算法将判定是否存在一个对象可以取代已存在的一个中心点。

  • 通过检验所有的中心点与非中心点组成的对,算法将选择最能提高聚类效果的对,其中成员总是被分配到[......]

阅读全文

Tags: , ,

Comments { 1 }

Data Mining 笔记之Classification

一、概念

监督式学习VS非监督式学习

Supervised learning (classification)
Supervision: The training data (observations, measurements, etc.) are accompanied by labels indicating the class of the observations
New data is classified based on the training set
Unsupervised learning (clustering)
The class labels of training data is unknown Given a set of measurements, observations, etc. with the aim of establishi[......]

阅读全文

Tags: ,

Comments { 0 }

【Hadoop代码笔记】Hadoop作业提交之客户端作业提交

一、概要描述
仅仅描述向Hadoop提交作业的第一步,即调用Jobclient的submitJob方法,向Hadoop提交作业。

二、 流程描述
Jobclient使用内置的JobSubmissionProtocol 实例jobSubmitClient 和JobTracker交互,最主要是提交作业、获取作业执行信息等。

在JobClient中作业提交的主要过程如下:

1)通过调用JobTracker的getNewJobId()向jobtracker请求一个新的作业ID
2)获取job的jar、输入分片、作业描述等几个路径信息,以jobId命名。
3)其中getSystemDir()是返回jobtracker的系统目录,来放置job相关的文件。包括:mapreduce的jar文件submitJarFile、分片文件submitSplitFile、作业描述文件submitJobFile
4)检查作业的输出说明,如果没有指定输出目录或输出目录以及存在,则作业不提交。参照org.apache.hadoop.mapreduce.lib.output.FileOutputFormatcheckOutputSpecs方法。如果没有指定,则抛出InvalidJobConfException,文件已经存在则抛出FileAlreadyExistsException
5)计算作业的输入分片。通过InputFormat的getSplits(job)方法获得作业的split并将split序列化封装为RawSplit。返回split数目,也即代表有多个分片有多少个map。详细参见InputFormat获取Split的方法。
6)writeNewSplits 方法把输入分片写到JobTracker的job目录下。
7)将运行作业所需的资源(包括作业jar文件,配置文件和计算所得的输入分片)复制到jobtracker的文件系统中一个以作业ID命名的目录下。
8)使用句柄JobSubmissionProtocol通过RPC远程调用的submitJob()方法,向JobTracker提交作业。JobTracker作业放入到内存队列中,由作业调度器进行调度。并初始化作业实例。JobTracker创建job成功后会给JobClient传回一个JobStatus对象用于记录job的状态信息,如执行时间、Map和Reduce任务完成的比例等。JobClient会根据这个JobStatus对象创建一个 NetworkedJob的RunningJob对象,用于定时从JobTracker获得执行过程的统计数据来监控并打印到用户的控制台。
[......]

阅读全文

Tags: , , ,

Comments { 3 }