[R-es] Muestreo de bases de datos

Fernando Fernández fernando.fernandez.gonzalez en gmail.com
Mar Mayo 5 15:35:14 CEST 2015


Hola,

Para mí el principal error de la anécdota es intentar hacer una "traducción
literal" de lo que se tiene programado en SAS porque no se tiene ni idea de
cómo funciona R. Muchas veces en SAS se hacen determinadas cosas
simplemente "porque se puede" sin pensar en si realmente son necesarias o
son una buena práctica, como por ejemplo, lanzar una regresión logística
para un conjunto de 5 millones de registros con 3 variables. Lo hago porque
el comercial de SAS de turno me dijo que se podía y que era mucho mejor, y
era algo que otros programas no podían hacer, y vende muy bien decirlo...

Creo que cuando se trabaja con R hay que cambiar un poco el chip, y por
mucho que nos guste, asumir que tiene ciertas limitaciones a la hora de
procesar datos y que no pasa nada por combinarla con otras herramientas.
Cuando se mencionaba que "R no sirve para trabajar en la base de datos"
creo se refiere a hacer el procesamiento de los datos dentro de R, y que
esta confusión viene de que mucha gente utiliza "base de datos" como
sinónimo de "conjunto de datos". Como apuntan algunos, R se lleva bastante
bien con muchas bases de datos, y creo que es una muy buena práctica
delegar en la medida de lo posible el procesamiento a una bbdd. Si no
existe, pues la creas, es gratis. Yo he trabajado en varios proyectos
montando una mysql y R con mucho éxito. Toda la manipulación de datos que
puedo la delego en mysql, y el rendimiento es MUY bueno si tienes espacio
en disco suficiente para crear algunos índices. Utilizo R para generar las
consultas un poco al estilo de cómo funcionan las macros de SAS. Como
grandes ventajas, es un código que es muy fácil portar a otros sistemas
(includo SAS, via proc sql). La mayoría de los modelos que generaras pueden
traducirse en fórmulas que se pueden implementar perfectamente en sql
también y permitirán generar un "código de scoring" puramente SQL. A R solo
llevo lo absolutamente imprescindible para hacer el análisis o modelo que
toque. En el peor de los casos, con casos complicados que puedan requerir
algunos conjuntos de datos más grandes, comprar una máquina con 64-128GB de
ram probablemente sea mucho más barato que las licencias de SAS necesarias
para hacerlo en una máquina menos potente. Aquí también hace falta mucho
cambio de chip de las empresas que parece que tienen alergia a hacer
esto...

Si la cosa se complica más y sigues necesitando procesar conjuntos de datos
mucho más grandes, probablemente sea mejor opción pasarse al mundo big data
(Hadoop-HIVE, Spark...). (Qué sí, que ahora SAS también hace big data, pero
a qué precio... )


Saludos.
Fer.



El 5 de mayo de 2015, 13:12, Gilsanz, Jose Luis <
jluis.gilsanz en tasacionesh.com> escribió:

> Hola
>
> Desviándome un poco de la cuestión que plantea Freddy, no estoy muy de
> acuerdo con lo que comenta acerca de que  "... R no está diseñado
> (operaciones en la base de datos)..".
>
> Precisamente la mayor parte de mi trabajo en R se realiza vinculadolo a un
> servidor Microsoft SQL Server y lo cierto es que, hasta ahora, "se
> entienden" muy bien entre ellos.
> Cierto es que, en mi caso, la mayor parte del flujo de datos (con millones
> de registros como norma general) va de R hacia el SQL, puesto que utilizo R
> para descargar los datos, organizarlos  y depurarlos antes de subirlos al
> SQL server.
>  Al principio me inquietaba mucho el tiempo (horas en algún caso) en el
> que la consola de R se mostraba "pensando" hasta que se subían todos los
> datos al SQL Server, así que  diseñe una función que usando el paquete
> snowfall mostraba una barra de progreso mientras se hacia la subida de
> datos.
>
> Para el flujo de datos en sentido inverso, (de SQL Server a R) siempre me
> aseguro de que la consulta SQL que "baja" los datos del SQL  Server a un
> dataframe o similar solo recupera los datos verdaderamente necesarios.
> Lógicamente y dependiendo de lo que vayas a hacer luego con esos datos a
> veces esto no es posible, pero en general eso de "bajarse todo" e intentar
> ejecutar un proceso me parece un hábito bastante pernicioso e improductivo.
>
>
>
>
>
>
> > -----Mensaje original-----
> > De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de r-
> > help-es-request en r-project.org
> > Enviado el: martes, 05 de mayo de 2015 12:00
> > Para: r-help-es en r-project.org
> > Asunto: Resumen de R-help-es, Vol 75, Envío 4
> >
> > Envíe los mensajes para la lista R-help-es a
> >       r-help-es en r-project.org
> >
> > Para subscribirse o anular su subscripción a través de la WEB
> >       https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > O por correo electrónico, enviando un mensaje con el texto "help" en el
> > asunto (subject) o en el cuerpo a:
> >       r-help-es-request en r-project.org
> >
> > Puede contactar con el responsable de la lista escribiendo a:
> >       r-help-es-owner en r-project.org
> >
> > Si responde a algún contenido de este mensaje, por favor, edite la linea
> del
> > asunto (subject) para que el texto sea mas especifico que:
> > "Re: Contents of R-help-es digest...". Además, por favor, incluya en la
> > respuesta sólo aquellas partes del mensaje a las que está respondiendo.
> >
> >
> > Asuntos del día:
> >
> >    1. Muestreo de bases de datos.- (Freddy Omar López Quintero)
> >    2. Re: Muestreo de bases de datos.- (Carlos J. Gil Bellosta )
> >    3. Re: Muestreo de bases de datos.- (javier.ruben.marcuzzi en gmail.com)
> >
> >
> > ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Mon, 4 May 2015 15:15:33 -0300
> > From: Freddy Omar López Quintero <freddy.vate01 en gmail.com>
> > To: "r-help-es en r-project.org" <r-help-es en r-project.org>
> > Subject: [R-es] Muestreo de bases de datos.-
> > Message-ID:
> >       <CALCOUqu7nKupKdc47Q2ixvsfGVqAdOhgdLmNMfc8JvTS7hqX+Q@
> > mail.gmail.com>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > ¡Hola!
> >
> > Mi duda surge por la siguiente anécdota: un amigo (empleado de una
> > enorme consultora que tiene SAS) migró a R y ansioso me contó que iba a
> > ejecutar las rutinas que había traducido de SAS a R y luego de intentar
> > ejecutarlas nada le funcionó porque, ingenuamente, quería hacer cosas
> para
> > las cuales R no está diseñado (operaciones en la base de datos) y porque
> leyó
> > TODOS los datos de una consulta (millones de registros) e intentó correr
> > algún procedimiento (!). Me dijo que SAS corre todo lo que él necesita y
> pues
> > quedó tristemente decepcionado.
> >
> > Yo le dije que es corriente tomar una muestra de los datos para calibrar
> los
> > modelos que se van a necesitar y que no es necesario utilizar los
> millones de
> > registros enteros. Esto me hizo pensar ¿existen normas o buenas prácticas
> > para el muestreo de las bases de datos?¿existen normativas?¿lineamientos?
> > Es claro que mi primera respuesta sería ocupar los métodos ya
> desarrollados
> > para encuestas, pero quién sabe.
> >
> > Si existen: ¿tienen su contraparte en R?
> >
> > Gracias y disculpen las molestias.
> >
> > ¡Salud!
> >
> > --
> > «No soy aquellas sombras tutelares
> > que honré con versos que no olvida el tiempo.»
> >
> > JL Borges
> >
> >       [[alternative HTML version deleted]]
> >
> >
> >
> > ------------------------------
> >
> > Message: 2
> > Date: Mon, 4 May 2015 20:35:28 +0200
> > From: "Carlos J. Gil Bellosta " <cgb en datanalytics.com>
> > To: Freddy Omar López Quintero <freddy.vate01 en gmail.com>
> > Cc: "r-help-es en r-project.org" <r-help-es en r-project.org>
> > Subject: Re: [R-es] Muestreo de bases de datos.-
> > Message-ID:
> >       <CADg83efiwWEdwA6dyR4RUkwB5Qc5evOAmdLfBeg+yO0GngL0Aw
> > @mail.gmail.com>
> > Content-Type: text/plain; charset=UTF-8
> >
> > Hola, ¿qué tal?
> >
> > La mejor manera de muestrear una tabla en una base de datos es a través
> > del módulo de algún valor (típicamente autonumérico), como los ids. Si
> no, a
> > través del módulo de un hash de algún identificador similar. Este
> > procedimiento tiene la ventaja de ser repetible:
> > consultas sucesivas pueden muestrear la misma subpoblación u otra de
> > tamaño similar completamente distinta de la anterior. El filtro se hace
> en el
> > where de la consulta a la base de datos (y la sintaxis cambia de una a
> otra).
> >
> > Si los datos son grandes y están en una base de datos, es mejor
> manipularlos
> > dentro de ella previamente enviando consultas SQL desde R y solo
> descargar
> > los datos (debidamente filtrados y muestreados, es decir, pequeños y/o
> > manejables) al final.
> >
> > Un saludo,
> >
> > Carlos J. Gil Bellosta
> > http://www.datanalytics.com
> >
> >
> >
> > El día 4 de mayo de 2015, 20:15, Freddy Omar López Quintero
> > <freddy.vate01 en gmail.com> escribió:
> > > ¡Hola!
> > >
> > > Mi duda surge por la siguiente anécdota: un amigo (empleado de una
> > > enorme consultora que tiene SAS) migró a R y ansioso me contó que iba
> > > a ejecutar las rutinas que había traducido de SAS a R y luego de
> > > intentar ejecutarlas nada le funcionó porque, ingenuamente, quería
> > > hacer cosas para las cuales R no está diseñado (operaciones en la base
> > > de datos) y porque leyó TODOS los datos de una consulta (millones de
> > > registros) e intentó correr algún procedimiento (!). Me dijo que SAS
> > > corre todo lo que él necesita y pues quedó tristemente decepcionado.
> > >
> > > Yo le dije que es corriente tomar una muestra de los datos para
> > > calibrar los modelos que se van a necesitar y que no es necesario
> > > utilizar los millones de registros enteros. Esto me hizo pensar
> > > ¿existen normas o buenas prácticas para el muestreo de las bases de
> > > datos?¿existen normativas?¿lineamientos? Es claro que mi primera
> > > respuesta sería ocupar los métodos ya desarrollados para encuestas,
> pero
> > quién sabe.
> > >
> > > Si existen: ¿tienen su contraparte en R?
> > >
> > > Gracias y disculpen las molestias.
> > >
> > > ¡Salud!
> > >
> > > --
> > > «No soy aquellas sombras tutelares
> > > que honré con versos que no olvida el tiempo.»
> > >
> > > JL Borges
> > >
> > >         [[alternative HTML version deleted]]
> > >
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es en r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> >
> >
> > ------------------------------
> >
> > Message: 3
> > Date: Mon, 4 May 2015 19:32:14 +0000
> > From: <javier.ruben.marcuzzi en gmail.com>
> > To: "=?utf-8?Q?Carlos_J._Gil_Bellosta?=" <cgb en datanalytics.com>,
> >       Freddy López <freddy.vate01 en gmail.com>
> > Cc: "=?utf-8?Q?R-help-es en r-project.org?=" <r-help-es en r-project.org>
> > Subject: Re: [R-es] Muestreo de bases de datos.-
> > Message-ID: <5547cad4.48958c0a.7228.2102 en mx.google.com>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > Estimado Freddy López
> >
> >
> > Yo estoy de acuerdo con Carlos Gil Bellosta, no se si es apropiado para
> > millones del registros como los que usted comenta, pero R tiene sqldf,
> que
> > básicamente usa sqlite, esto posibilita usar una base de datos dentro de
> R sin
> > tener que preocuparnos demasiado, otra forma es utilizar data.table en
> lugar
> > de data.frame, dplyr, posiblemente su amigo no migro correctamente de SAS
> > a R (aunque tome con cuidado esto último, yo nunca use SAS).
> >
> >
> > Javier Rubén Marcuzzi
> >
> >
> >
> >
> >
> > De: Carlos J. Gil Bellosta
> > Enviado el: ?lunes?, ?04? de ?mayo? de ?2015 ?03?:?35? ?p.m.
> > Para: Freddy López
> > CC: R-help-es en r-project.org
> >
> >
> >
> >
> >
> > Hola, ¿qué tal?
> >
> > La mejor manera de muestrear una tabla en una base de datos es a través
> > del módulo de algún valor (típicamente autonumérico), como los ids. Si
> no, a
> > través del módulo de un hash de algún identificador similar. Este
> > procedimiento tiene la ventaja de ser repetible:
> > consultas sucesivas pueden muestrear la misma subpoblación u otra de
> > tamaño similar completamente distinta de la anterior. El filtro se hace
> en el
> > where de la consulta a la base de datos (y la sintaxis cambia de una a
> otra).
> >
> > Si los datos son grandes y están en una base de datos, es mejor
> manipularlos
> > dentro de ella previamente enviando consultas SQL desde R y solo
> descargar
> > los datos (debidamente filtrados y muestreados, es decir, pequeños y/o
> > manejables) al final.
> >
> > Un saludo,
> >
> > Carlos J. Gil Bellosta
> > http://www.datanalytics.com
> >
> >
> >
> > El día 4 de mayo de 2015, 20:15, Freddy Omar López Quintero
> > <freddy.vate01 en gmail.com> escribió:
> > > ¡Hola!
> > >
> > > Mi duda surge por la siguiente anécdota: un amigo (empleado de una
> > > enorme consultora que tiene SAS) migró a R y ansioso me contó que iba
> > > a ejecutar las rutinas que había traducido de SAS a R y luego de
> > > intentar ejecutarlas nada le funcionó porque, ingenuamente, quería
> > > hacer cosas para las cuales R no está diseñado (operaciones en la base
> > > de datos) y porque leyó TODOS los datos de una consulta (millones de
> > > registros) e intentó correr algún procedimiento (!). Me dijo que SAS
> > > corre todo lo que él necesita y pues quedó tristemente decepcionado.
> > >
> > > Yo le dije que es corriente tomar una muestra de los datos para
> > > calibrar los modelos que se van a necesitar y que no es necesario
> > > utilizar los millones de registros enteros. Esto me hizo pensar
> > > ¿existen normas o buenas prácticas para el muestreo de las bases de
> > > datos?¿existen normativas?¿lineamientos? Es claro que mi primera
> > > respuesta sería ocupar los métodos ya desarrollados para encuestas,
> pero
> > quién sabe.
> > >
> > > Si existen: ¿tienen su contraparte en R?
> > >
> > > Gracias y disculpen las molestias.
> > >
> > > ¡Salud!
> > >
> > > --
> > > «No soy aquellas sombras tutelares
> > > que honré con versos que no olvida el tiempo.»
> > >
> > > JL Borges
> > >
> > >         [[alternative HTML version deleted]]
> > >
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es en r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >       [[alternative HTML version deleted]]
> >
> >
> > ------------------------------
> >
> > Subject: Pié de página del digest
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> >
> > ------------------------------
> >
> > Fin de Resumen de R-help-es, Vol 75, Envío 4
> > ********************************************
>
>
> Jones Lang LaSalle Arquitectura, SLU
> Registration number: B-61888715
> Registered Office: Pº de la Castellana, 51 - 5ª ; 28046 Madrid
>
>
> This e-mail is for the use of the intended recipient(s) only. If you have
> received this e-mail in error, please notify the sender immediately and
> then delete it. If you are not the intended recipient, you must not use,
> disclose or distribute this e-mail without the author's prior permission.
> We have taken precautions to minimise the risk of transmitting software
> viruses, but we advise you to carry out your own virus checks on any
> attachment to this message. We cannot accept liability for any loss or
> damage caused by software viruses. If you are the intended recipient and
> you do not wish to receive similar electronic messages from us in future
> then please respond to the sender to this effect.
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es