[R] algorithm for clustering categorical data
Li, Yan
Yan_Li at ibi.com
Tue Aug 6 20:43:59 CEST 2013
Thanks for the reply...
For some reason, I need to keep Euclidean distance in the process...
-----Original Message-----
From: Martin Maechler [mailto:maechler at stat.math.ethz.ch]
Sent: Tuesday, August 06, 2013 12:04 PM
To: dcarlson at tamu.edu
Cc: Li, Yan; r-help at r-project.org
Subject: Re: [R] algorithm for clustering categorical data
>>>>> "DC" == David Carlson <dcarlson at tamu.edu>
>>>>> on Tue, 6 Aug 2013 10:26:56 -0500 writes:
> What do you mean by representing the categorical fields by 1:k?
> a <- c("red", "green", "blue", "orange", "yellow")
> becomes
> a <- c(1, 2, 3, 4, 5)
> That guarantees your results are worthless worthless indeed!
> unless your categories
> have an inherent order (e.g. tiny, small, medium, big, giant).
> Otherwise it should be four (k-1) indicator/dummy variables (e.g.):
> a.red <- c(1, 0, 0, 0, 0)
> a.green <- c(0, 1, 0, 0, 0)
> a.blue <- c(0, 0, 1, 0, 0)
> a.orange <- c(0, 0, 0, 1, 0)
> Then you can use Euclidean distance.
Yes, ... or use Gower's or other similarly sophisticated distances, as you (David) mentioned earlier in this thread.
Do also note that a generalized Gower's distance (+ weighting of
variables) is available from the ('recommended' hence always
installed) package 'cluster' :
require("cluster")
?daisy
## notably daisy(*, metric="gower")
Note that daisy() is more sophisticated than most users know, using the 'type = *' specification allowing, notably for binary variables (as your a.<col> dummies above) allowing asymmetric behavior which maybe quite important in "rare event" and similar cases.
Martin
> -------------------------------------
> David L Carlson
> Associate Professor of Anthropology
> Texas A&M University
> College Station, TX 77840-4352
> -----Original Message-----
> From: Li, Yan [mailto:Yan_Li at ibi.com]
> Sent: Tuesday, August 6, 2013 9:36 AM
> To: dcarlson at tamu.edu; r-help at r-project.org
> Subject: RE: [R] algorithm for clustering categorical data
> H David and other R helpers,
> If I rescale the numerical fields to [0,1] and represent the
> categorical fields to 1:k, which is the same starting point as
> Gower's measure, but I use Euclidean distance instead of Gower's
> distance to do k-means clustering. How much is the difference? What
> is the draw back?
> Thanks you,
> Yan
> -----Original Message-----
> From: David Carlson [mailto:dcarlson at tamu.edu]
> Sent: Thursday, August 01, 2013 12:08 PM
> To: Li, Yan; r-help at r-project.org
> Subject: RE: [R] algorithm for clustering categorical data
> Read up on Gower's Distance measures (available in the ecodist
> package) which can combine numeric and categorical data. You didn't
> give us any information about how you numerically transformed the
> categorical variables, but the usual approach is to create indicator
> variables that code presence/absence for each category within a
> categorical variable. Different variances between variables can be
> reduced by standardizing the variables.
> -------------------------------------
> David L Carlson
> Associate Professor of Anthropology
> Texas A&M University
> College Station, TX 77840-4352
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Li, Yan
> Sent: Thursday, August 1, 2013 11:00 AM
> To: r-help at r-project.org
> Subject: [R] algorithm for clustering categorical data
> Hi All,
> Does anyone know what algorithm for clustering categorical
> variables? R packages? Which is the best?
> If a data has both numeric and categorical data, what is the best
> clustering algorithm to use and R package?
> I tried numeric transformation of all categorical fields and doing
> clustering afterwards. But the transformed fields have values from
> 1...10, and my other fields is in a bigger scale:
> 10000-...This will make the categorical fields has less effect on
> the distance calculation...
> Thank you!
> Yan
More information about the R-help
mailing list