mahout-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Eastman <>
Subject Re: [jira] Commented: (MAHOUT-479) Streamline classification/ clustering data structures
Date Tue, 17 Aug 2010 21:06:03 GMT
  Hi Ted,

I've made significant progress on both of these issues in commits late 
last month. At the command level, all the clustering drivers now inherit 
from AbstractJob and have their common parameters factored into the 
DefaultOptionCreator for API consistency. All drivers also support a 
buildClusters() method which processes input vectors to produce their 
respective Cluster models in persistent storage (clusters-i directory), 
plus a clusterData() method that reads those models and performs actual 
clustering of the input vectors. The sequence files in the clusters-i 
directories can be read uniformly by the ClusterDumper and other 
utilities as they all support the Cluster interface.

The clusterData() process for most algorithms produces a single, 
most-likely cluster assignment, usually the closest cluster. For 
Dirichlet and FuzzyK, the clustering can be specified to use the 
most-likely assignment (the default) or a pdf threshold can be specified 
above which multiple cluster assignments will be output. All 
clusterData() processes produce WeightedVectorWritable objects in 
persistent storage which contain a probability weight and the input 
vector. These sequence files are keyed by the clusterId and are output 
to the clusteredPoints directory.

The buildClusters() step is always run from the command line but the 
clusterData step is optional (-cl flag). It would be straightforward to 
support the other use case (clusterData only). Users who instantiate the 
drivers from Java code can call either/both at their discretion now.

I've also implemented an execution method (-xm) parameter on all 
clustering drivers which allows the sequential, in-memory reference 
implementation to be invoked from the command line using the same 
arguments as the mapreduce implementation. The display examples use 
these now, except Dirichlet which I didn't get to before I left.

Given this information, what do you now see as logical next steps?

On 8/17/10 9:31 AM, Ted Dunning wrote:
> Jeff,
> You asked about clustering things to do.
> In my mind, there are two clustering issues.  One is unification at the
> command level where clusters are learned.  The other is unification in
> subsequent steps where somebody might want to use a clustering.  The second
> issue actually seems a bit more pressing to me.
> That second issue concerns the ability to have a model that is the output of
> the clustering.  That model should support:
> - reading the model from persistent storage
> - classifying new vectors to get either a single best-fit cluster or a score
> vector.
> In my view, this should apply equally to all classifiers and the models
> produced by classifier learning algorithms should be the same at the
> interface level as the models produced by cluster learning algorithms.
> On Tue, Aug 17, 2010 at 9:26 AM, Ted Dunning (JIRA)<>  wrote:
>>     [
>> Ted Dunning commented on MAHOUT-479:
>> ------------------------------------
>> I just moved the encoding objects associated with MAHOUT-228 to
>> org.apache.mahout.vectors to provide a nucleus for feature encoding.
>> There are also a fair number of things in oam.text and oam.utils that are
>> related.  Since those are in the utils module, however, I couldn't leverage
>> them.  We may want to consider moving some of them to core to allow wider
>> use.
>>> Streamline classification/ clustering data structures
>>> -----------------------------------------------------
>>>                  Key: MAHOUT-479
>>>                  URL:
>>>              Project: Mahout
>>>           Issue Type: Improvement
>>>           Components: Classification, Clustering
>>>     Affects Versions: 0.1, 0.2, 0.3, 0.4
>>>             Reporter: Isabel Drost
>>> Opening this JIRA issue to collect ideas on how to streamline our
>> classification and clustering algorithms to make integration for users
>> easier as per mailing list thread
>>> {quote}
>>> Jake and Robin and I were talking the other evening and a common lament
>> was that our classification (and clustering) stuff was all over the map in
>> terms of data structures.  Driving that to rest and getting those comments
>> even vaguely as plug and play as our much more advanced recommendation
>> components would be very, very helpful.
>>> {quote}
>>> This issue probably also realates to MAHOUT-287 (intention there is to
>> make naive bayes run on vectors as input).
>>> Ted, Jake, Robin: Would be great if someone of you could add a comment on
>> some of the issues you discussed "the other evening" and (if applicable) any
>> minor or major changes you think could help solve this issue.
>> --
>> This message is automatically generated by JIRA.
>> -
>> You can reply to this email to add a comment to the issue online.

  • Unnamed multipart/mixed (inline, None, 0 bytes)
View raw message