Anuncios

martes, 21 de junio de 2011

Apuntes sobre minería de datos de SQL Server DMX


El presente documento contiene solamente apuntes basados en el siguiente link de Microsoft sobre DMX (Data Mining Expressions):

Tutorial DMX de Bike Buyer


http://technet.microsoft.com/es-es/library/ms345287(SQL.90).aspx


Existe muy poca documentación clara sobre Expresiones para obtener información de Minería de datos.
El mayor problema es que toma mucho tiempo simular datos.


Para el ejemplo del tutorial es necesario tener la base de datos AdventureWorks instalada ya sea en SQL 2005 o 2008 o superior.


El tutorial utiliza 1 vista y 1 tabla muy importantes para generar los ejemplos:


La vista dbo.vtargetmail que está dentro de la base de datos AdvenutureWorksDW o AdventureWorksDW2008. También la tabla dbo.prospectivebuyer está incluida en este ejemplo.


Este ejemplo nos mostrará la probabilidad de que nuevos clientes quieran o no comprar bicicletas.
  1. Primero se debe tener un proyecto de Analysis Services que ya contenga un datasource.
  2. Luego, se puede crear una Estructura de minería de datos (es más fácil hacer esto visualmente que con DMX):
CREATE MINING STRUCTURE [Bike Buyer]
(
   [Customer Key] LONG KEY,
   [Age]LONG DISCRETIZED(Automatic,10),
   [Bike Buyer] LONG DISCRETE,
   [Commute Distance] TEXT DISCRETE,
   [Education] TEXT DISCRETE,
   [Gender] TEXT DISCRETE,
   [House Owner Flag] TEXT DISCRETE,
   [Marital Status] TEXT DISCRETE,
   [Number Cars Owned]LONG DISCRETE,
   [Number Children At Home]LONG DISCRETE,
   [Occupation] TEXT DISCRETE,
   [Region] TEXT DISCRETE,
   [Total Children]LONG DISCRETE,
   [Yearly Income] DOUBLE CONTINUOUS
)

La estructura, permite definir los tipos de datos de la información.

Una vez que se tiene la estructura, se puede agregar el algoritmo que se va a utilizar para la predicción. En este caso son árboles de decisión:

ALTER MINING STRUCTURE [Bike Buyer]

ADD MINING MODEL [Decision Tree]
(
   [Customer Key],
   [Age],
   [Bike Buyer] PREDICT,
   [Commute Distance],
   [Education],
   [Gender],
   [House Owner Flag],
   [Marital Status],
   [Number Cars Owned],
   [Number Children At Home],
   [Occupation],
   [Region],
   [Total Children],
   [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH

3 aspectos importantes acá que valen la pena resaltar.
Vamos a predecir si la gente va a comprar o no bicicletas. Bike Buyer es un campo que retorna el valor de 0 si el cliente no compra bicicletas y 1 si compra. Ese valor es el que queremos predecir en base a la información que tenemos.

USING Microsoft_Decision_Trees nos indica con qué algoritmos vamos a trabajar.  Podría ser arboles de decisión, Naive, Cluster u otro criterio.

Finalmente with drillthrough nos permite mostrar información de los usuarios del cubo.

Bueno, ya tenemos la estructura de minería de datos y el modelo (que es mejor crear visualmente).

Pero son estructuras vacías !!. Sin datos. Para llenar de datos a nuestra estructura, hay que usar la siguiente sentencia:

INSERT INTO MINING STRUCTURE [Bike Buyer]

(
   [Customer Key],
   [Age],
   [Bike Buyer],
   [Commute Distance],
   [Education],
   [Gender],
   [House Owner Flag],
   [Marital Status],
   [Number Cars Owned],
   [Number Children At Home],
   [Occupation],
   [Region],
   [Total Children],
   [Yearly Income]  
)
OPENQUERY([Adventure Works DW2008],
   'SELECT CustomerKey, Age, BikeBuyer,
         CommuteDistance,EnglishEducation,
         Gender,HouseOwnerFlag,MaritalStatus,
         NumberCarsOwned,NumberChildrenAtHome,
         EnglishOccupation,Region,TotalChildren,
         YearlyIncome
    FROM dbo.vTargetMail')

Acá simplemente estamos llenando a la estructura creada anteriormente con los datos de la vista dbo.vTargetMail que existe por defecto en la tabla AdventureWorksDW.

Ahora sí,podemos consultar la probabilidad de que un cliente con características X, nos compre un producto.
Estamos prediciento el futuro con una computadora !!. Usando algoritmos inteligentes, podemos ver la probabilidad de que una persona x compre nuestros productos:

SELECT
   [Decision Tree].[Bike Buyer] AS Buyer,
   PredictHistogram([Bike Buyer]) AS Statistics
FROM
   [Decision Tree]
NATURAL PREDICTION JOIN
(SELECT 43 AS [Age],
   '1-2 Miles' AS [Commute Distance],
   '0' AS [House Owner Flag],
   1 AS [Number Cars Owned],
   3 AS [Total Children]) AS t

La siguiente consulta, está preguntando. Cuál es la probabilidad de que alguien de 43 años que vive de 1 a 2 millas de mi tienda, que tenga una casa y que tenga 3 hijos me compre una bicicleta ?.

Al correr la consulta, se obtiene la siguiente información:


Entonces, la respuesta nos muestra Buyer 1. Significa que el usuario si va a comprar nuestros productos.
La probabilidad es de 0.6609468 de que compre los productos (66 %), mientras la probabilidad de que no compre es de 0.3390 (34 %). La conclusión de nuestro algoritmo es que una persona de 43 años, con casa que vive de 1 a 2 millas de acá probablemente si compre una bicicleta.

Finalmente, si son varios usuarios y queremos hallar la probabilidad de cada uno de los usuarios de una tabla de que compren los productos, la consulta es la siguiente:

SELECT
  TOP 10
  t.[LastName],
  t.[FirstName],
  [Decision Tree].[Bike Buyer],
  PredictProbability([Bike Buyer])
From
  [Decision Tree]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW2008],
    'SELECT
      [LastName],
      [FirstName],
      [MaritalStatus],
      [Gender],
      [YearlyIncome],
      [TotalChildren],
      [NumberChildrenAtHome],
      [Education],
      [Occupation],
      [HouseOwnerFlag],
      [NumberCarsOwned]
    FROM
      [dbo].[ProspectiveBuyer]
    ') AS t
ON
  [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
  [Decision Tree].[Gender] = t.[Gender] AND
  [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
  [Decision Tree].[Total Children] = t.[TotalChildren] AND
  [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
  [Decision Tree].[Education] = t.[Education] AND
  [Decision Tree].[Occupation] = t.[Occupation] AND
  [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
  [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
WHERE [Decision Tree].[Bike Buyer] =1
ORDER BY PredictProbability([Bike Buyer]) DESC

Lo que hace esta consulta es mostrar en orden de probabilidad a los usuarios de la tabla dbo.ProspectiveBuyer que se encuentra en la base de datos adventureworksDW que probablemente comprarán una bicicleta:


La consulta muestra que los compradores son Morris Riley, Pal Carly, etc. 
Con esta información, los encargados de Marketing ya saben en qué clientes enfocar sus esfuerzos. Las probabilidades de que compren bicis es de 84 % de todos estos clientes con excepción de Jesús Jimenez cuya probabilidad es de 76 % (0.76).

Con estos apuntes muestro cómo crear un modelo de Minería de datos que contiene la información sobre compradores de bicicleta y en base a esa información, detecto la probabilidad de que otros clientes nuevos compren o no bicicletas. 


Para mayor información, tomar el curso de la fundación Jala de Business Intelligence, IT Academy:


http://itacademy.fundacion-jala.org




viernes, 17 de junio de 2011

El problema de edición de tablas en SQL Server


Existe un error típico que ocurre en SQL Server cuando se desea editar columnas en las tablas:

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be recreated or enabled the option prevent saving changes that require the table to be recreated

En español el error es:

No se permite guardar los cambios. Los cambios que se han realizado requieren que se quiten y se vuelvan a crear las siguientes tablas. Quizá  ha realizado cambios en una tabla que no se puede volver a crear. O habilitado la opción Impedir guardar cambios que requieran volver a crear tablas.

Solución:
Vaya a Tools>Options  (Herramientas>Opciones) y luego deshabilite la opción mostrada en la figura (Prevent saving changes):


Eso es todo !!... si tienen dudas avísenme.

jueves, 16 de junio de 2011

Encuentro tecnologico STC Bolivia



Hora
Viernes, 17 de junio · 13:00 - 21:00


Lugar
Cine 6 de agosto


Creado por


For


Más información
Temática y cronograma

13:15 - 14:00 Registro
14:00 -14:15 Inauguración del encuentro Gerente Microsoft y Javier Ogarrio
14:15 – 15:00 HTML 5 à Ivana Tilca(Argentina)
15:00 - 15:45 Windows Phone 7 Giovanni Callisaya (Bolivia)
15:45 - 16:30 Hiper-V à Said Nikjou (Bolivia) & Daniel Landivar(Bolivia)
16:30 - 17:00 Receso
17:00 - 17:45 Proyecto Mono à Victor Andres Altamirano Vasques & Fredy Guibert (Peru)
17:45 - 18:30 Azure à Marilyn Alarcon (Colombia) & Alicia Estrada (Bolivia)
18:30 – 19:15 Office 365 y Sharepoint à Franklin Apaza & Henry Mamani (Bolivia)
19:15 – 20:00 ALM con Visual Studio Team System 20
20:00 – 20:45 Premiación, presentación de Suit academica y clausura.

Entrega de Certificados a todos los participantes que hayan participado de todos los temas ofertados.

ENTRADA GRATUITA.

Si quieres conocer mas de la tecnologia y como Microsoft ve la educacion.
No te puedes perder el encuentro con la tecnologia
http://www.stcbolivia.net/

Para ingresar al LiveMeeting, descargar el siguiente Programa
http://office.microsoft.com/en-us/help/redir/XT010222792.aspx?CTT=5&origin=HA010173383

miércoles, 15 de junio de 2011

Curso de DataWarehouse en la Microsoft ITA de la fundación Jala




Si, Jalasoft da cursos de Datawarehouse utilizando las herramientas de Microsoft (Integration Services, Analysis Services y Reporting Services).
Si usted trabaja con Oracle o MySQL con Datawarehouse, el curso le ayudará a encontrar herramientas alternativas y comparar tecnologías.
Si usted no posee experiencia alguna, el curso le dará todas las herramientas necesarias para crear proyectos reales de Datawarehouse.

Para mayor información sobre los cursos, contáctenos:
Av. Melchor Pérez de Olguín esq. Wiracocha
Cochabamba Bolivia
tel: (591) (4) 4415600

Analysis Services es una moderna tecnología complementaria a las bases de datos usada para la toma de decisiones.
Analysis Services (AS) es un componente independiente que viene en los instaladores de SQL Server. Con Analysis Services se realizan reportes gerenciales.
Analysis Services no depende de la base de datos SQL Server, pero viene en el mismo instalador.  El concepto básico de Analysis Services es almacenar cubos de información con datos procesados para rápida y fácil generación de reportes.

Por ejemplo, en Analysis Services se puede generar fácil y rápidamente reportes de ganancias anuales, semestrales sin necesidad de crear o programar código para crear estos reportes. El usuario simplemente puede arrastrar las columnas de datos para armar los reportes deseados.

La gerencia de toda empresa debe tomar decisiones a partir de la información de la compañía. Para eso, se crearon herramientas de reportes basados en Bases de Datos Transaccionales. Sin embargo, los gerentes normalmente no poseen conocimientos técnicos para obtener la información deseada por lo cual requería de gran trabajo extra de los Administradores de bases de datos para proporcionar los reportes e información deseada.

Otro problema complejo, es en bases de datos con millones o billones de datos. Las consultas toman mucho tiempo en ser procesadas.
Analysis Services trata de resolver estos 2 problemas. Analysis Services contiene herramientas fáciles de usar, visuales y contiene cubos de información con resultados precalculados que permiten obtener la información rápida y eficientemente.

Con esta herramienta, es muy fácil para los gerentes generar sus propios reportes sin ayuda de terceros para la toma de decisiones gerenciales.

Fuente:

martes, 14 de junio de 2011

Oportunidad de trabajo en Jalasoft para contadores


Oportunidad de trabajo en Jalasoft para Activos Fijos:

jueves, 9 de junio de 2011

Exportar datos de Excel a SQL Server

comparador excel Wizard de comparación y actualización entre 2 hojas Excel

Esta es una herramienta muy popular que conocemos los expertos en SQL Server que muy pocos seres vivos conocen.
Vamos a utilizar para importar datos el Business Intelligence Development Studio que viene junto con la instalación de SQL Server. El SQL Express edition, no incluye esta herramienta.

Estoy incluyendo un video en youtube para ver cómo crear un proyecto de 0 en Business Intelligence Development Studio. 


Al final del video usted aprenderá a importar datos de Excel a SQL Server. Los dejo con el Video:



Para mayor información visitar a los cursos de Business Intelligence de la fundación Jala:
http://itacademy.fundacion-jala.org/Contactos.aspx

 Av. Melchor Pérez de Olguín esq.
 Wiracocha
 Cochabamba-BOLIVIA
 tel: (591) (4) 4415600

miércoles, 8 de junio de 2011

Paseo en bicicleta de los Jalasoft guys o los jalapeños


Para muchos es lo más normal pasear 50 Km en bicicleta. Pero qué tal si unos nerds que se pasan todo el tiempo creando software tratan de manejar bicicleta ?. He aquí nuestra triste historia….
Todo comenzó un día normal de trabajo. Todos los ingenieros de Jalasoft estábamos felices trabajando, navegando y comiendo.

De repente recibimos un email. Era el día del desafío. Se nos invitó a jugar futbolín, ping pong y por último era un paseo en bicicleta por la ciclovía de Cochabamba.

Si bien me encantan las 3 disciplinas, no manejaba  por la ciclovía desde hace 5 años. Lo malo de la ciclovía es la cantidad de gente maleante por el camino que roba las bicicletas.
Yo debo haber paseado por la ciclovía más de 50 veces, sin embargo, a mi padre en una ocasión, lo empujaron mientras manejaba y se cayó al canal. El ladrón se llevó la bicicleta. Mi padre se fracturó una clavícula y tardó meses en recuperarse. Gracias a Dios ahora está bien. Lamentablemente con semejante experiencia, la ciclovía no fue más usada por la familia.

Era para mí una buena oportunidad de recordar esos tiempos. La ciclovía pasa muy cerca del Cristo de la Concordia ya que se tiene que subir y pasar por el cerro San Pedro, también ofrece una maravillosa vista de la ciudad, un paseo por la laguna Alalay y ofrece un buen contacto con la naturaleza ya que hay varios árboles por el camino.

Otro problema es que al pasar por el cerro, existen sectores en los cuales uno se podría caer al barranco y además existen varios perros callejeros y de lugareños del recorrido.


En una ocasión un perro me persiguió insistentemente por más de 500m. Al final, por tratar de patearlo para que me dejé, perdí el equilibrio y caí de la bici. El perro me dejó de molestar. Aparentemente, sólo estaba jugando. Lo mejor con los perros es detenerse, así no te persiguen ni molestan.

Al final, solo 8 seres humanos de los 600 invitados nos animamos a salir de Caravana:


Los ciclistas

Piovanny*: Programador de mucha fuerza de voluntad, poca resistencia.
Melmer*: El cuatecito de azul con negro. Vino con bicicleta en mal estado. Casi no llega.
Chunli*: Programadora, campeona de futsal. Toda una heroína de la coronilla.
Navor* : El de blanco con rayas rojas. Experto en Alpinismo, bicicleta, timbalero y que antes trabajaba en un programa de cocina llamado el gringo limón.
Diter* : El más alto de todos. No manejaba bici desde los 90s
Maniel*: El cuatecito de negro. Blogueador hecho al paladín. Hecho al que hace deporte.
Mandreas*: La hermosa chica de rojo. Campeona de atletismo en varias disciplinas a nivel nacional. Juega futbol, basket, volley, etc.
Alexander*: Ciclista aficionado, le gusta la robótica. Tiene robots en su casa que le masajean la espalda.
El paseo comenzó bien, eran 50 Km de recorrido. 25 Km dando vuelta a la laguna y 25 Km vuelta.
 
El recorrido
Se partiría del edificio Jalasoft hasta la ciclovía. En mi caso, partí con mi llanta desinflada, la hice inflar en el camino, pero no parchar, porque no había material ni tiempo. Sin embargo no se desinfló más en todo el trayecto. 

Partiendo de Jala

Un problema eran los charquitos medio agrios en los túneles de la ciclovía. Aparentemente varios borrachitos pasan por ahí.
Lamentablemente las bicis estaban en muy mal estado. Constantemente la gente se detenía a reparar la bici con piedras o alguna herramienta. Hay gente que se le caía el pedal, que le pesaba mucho la bici.
Después de varios contratiempos, llegamos a un sector en el cual había un tractor que limpiaba los canales de agua. Tuvimos que pasar cargando nuestras bicis por el borde del cerro, con el peligro de caernos a los barrancos.

En el cerro San Pedro
Barrancos
Ya habíamos llegado hasta la laguna Alalay cuando notamos que faltaba Diter. Luego de esperar un tiempo, lo vimos llegar. Estaba lleno de espinos. Había perdido el control de la bicicleta en el cerro y no había podido evitar llenarse completamente de espinos.
Al borde de la laguna Alalay
  •          Bueno, dijo nuestro líder y maestro Navor…..tenemos que volvernos todos. No te podemos dejar acá.
  •           No, dijo Diter…sigan…yo soy fuerte…sobreviviré y estaré bien. No se preocupen por mí.
  •           De veras ?
  •           Si, todavía tengo sangre suficiente. Cumplan su objetivo sin importar el costo.
  •      Melmer (con lagrimas en los ojos) dijo...Diter no nos iremos sin tí.
  •      Y Diter dijo.. ya con los ojos vidriosos...cuando exista un problema jamás lo olviden, vénzanlo, no     se olviden nunca de mi....sigan siempre al horizonte. Después de la noche más oscura siempre hay nuevamente un amanecer....
Y así siguió el grupo durante toda la laguna. Diter tomó un taxi.
Sólo quedábamos 7. En el camino sucedieron varias cosas. Chunli estaba cansada y Navor le cedió su bici porque era más liviana y más veloz. Melmer se detenía todo el tiempo para golpear con piedra la bici para que no se salga el pedal. Melmer tenía la bici de Piovanny.
La bici de Piovanny estaba para el gato. Al final de dar la vuelta, Piovanny decidió volver. Nos dijo que extrañaba su casa y a su compu.
Alexander dijo que podía continuar, pero se había hecho muy tarde y regresaría en taxi.
Chunli estaba cansada, pero dijo que podía continuar. Para ello Alexander le prestó la bici.

Vover fue complicado, había una parte en subida y yo ya estaba cansado. Tuve problemas con el disco de mi bici. Rozaba con mi freno. Mi linda novia me cambió de bici en el último tramo de vuelta. Navor me dio su refresco Powerade.
Era difícil seguir, sin embargo, habíamos llegado tan lejos que pedalee y avancé. Al final, sólo quedábamos Navor, Chunli, mi linda e inteligente novia, Melmer y yo. Una vez más, lo habíamos logrado.

 

 En la meta, auspiciados por Powerade y Jalasoft
* Los nombres fueron modificados para proteger su identidad. Cualquier parecido con nombres reales es solo una coincidencia.