introduzione
Me encontré con esta virtud estratégica de Sun Tzu recientemente:
Cosa ha a che fare questo con un blog di data science?? Esta es la esencia de cómo se ganan competiciones y hackatones. Llegas a la competencia mejor preparado que los competidores, ejecutas rápidamente, aprendes e iteras para sacar lo mejor de ti.
La settimana scorsa, publicamos “Manera perfecta de construir un modelo predictivo en menos de 10 minutos usando R”. Cualquiera puede adivinar un seguimiento rápido de este post. Dado el auge de Python en los últimos años y su simplicidad, tiene sentido tener este kit de herramientas listo para los Pythonistas en el mundo de la ciencia de datos. Seguiré una estructura semejante a la del post anterior con mis aportes adicionales en diferentes etapas de la construcción del modelo. Estos dos posts le ayudarán a construir su primer modelo predictivo más rápido y con mejor potencia. La mayoría de los mejores científicos de datos y Kagglers construyen su primer modelo eficaz rápidamente y lo envían. Esto no solo les ayuda a tener una ventaja en la tabla de líderes, sino que además les proporciona una solución de referencia para superar.
Ripartizione della procedura di modellazione predittiva
Siempre me concentro en invertir tiempo de calidad durante la etapa inicial de la construcción del modelo, como la generación de hipótesis / sesiones de lluvia de ideas / discusión (S) o la comprensión del dominio. Todas estas actividades me ayudan a relacionarme con el problema, lo que eventualmente me lleva a diseñar soluciones comerciales más poderosas. Hay buenas razones por las que debería dedicar este tiempo al principio:
- Tienes tiempo suficiente para invertir y estás fresco (tiene impacto)
- No está sesgado con otros puntos de datos o pensamientos (siempre sugiero que genere hipótesis antes de profundizar en los datos)
- En una etapa posterior, tendría prisa por completar el proyecto y no podría dedicar tiempo de calidad.
Esta etapa necesitará un tiempo de calidad, por lo que no estoy mencionando la línea de tiempo aquí, le recomendaría que la haga como una práctica estándar. Le ayudará a construir mejores modelos predictivos y dará como consecuencia una menor iteración del trabajo en etapas posteriores. Veamos las etapas restantes en la primera compilación del modelo con líneas de tiempo:
- Analisi descrittiva dei dati: 50% tempo metereologico
- Elaborazione dati (Valore perso e correzione dei valori anomali): 40% tempo metereologico
- Modellazione dei dati: 4% tempo metereologico
- Stima delle prestazioni: 6% tempo metereologico
PD: esta es la división del tiempo dedicado solo a la primera construcción del modelo
Repasemos el procedimiento paso a paso (con estimaciones del tiempo invertido en cada paso):
Palcoscenico 1: Analisi descrittiva / Esplorazione dei dati:
En mis primeros días como científico de datos, la exploración de datos solía llevarme mucho tiempo. Col tempo, he automatizado muchas operaciones con los datos. Dado que la preparación de datos ocupa el 50% del trabajo en la construcción de un primer modelo, los beneficios de la automatización son obvios. Puede consultar los “7 pasos de la exploración de datos” para ver las operaciones más comunes de exploración de datos.
Tavish ya ha mencionado en su post que con las herramientas avanzadas de aprendizaje automático en carrera, el tiempo necesario para realizar esta tarea se ha reducido significativamente. Dado que este es nuestro primer modelo de referencia, eliminamos cualquier tipo de ingeniería de funciones. Perché, Il tempo necessario per eseguire un'analisi descrittiva è limitato alla conoscenza dei valori mancanti e delle grandi caratteristiche direttamente visibili. Nella mia metodologia, Bisogno 2 minuti Per completare questo passaggio (Supuesto, 100.000 observaciones en el conjunto de datos).
Las operaciones que realizo para mi primer modelo incluyen:
- Identificar características de identificación, entrada y destino
- Identificar características categóricas y numéricas
- Identificar columnas con valores perdidos
Palcoscenico 2: Elaborazione dati (tratamiento de valores perdidos):
Hay varias alternativas para afrontarlo. Para nuestro primer modelo, nos centraremos en las técnicas inteligentes y rápidas para construir su primer modelo efectivo (estas ya fueron discutidas por Tavish en su post, estoy agregando algunos métodos)
- Crear indicadores ficticios para los valores faltantes: Funziona, a veces los valores faltantes en sí contienen una buena cantidad de información.
- Imputar el valor faltante con media / medianoLa mediana è una misura statistica che rappresenta il valore centrale di un insieme di dati ordinati. Per calcolarlo, I dati sono organizzati dal più basso al più alto e viene identificato il numero al centro. Se c'è un numero pari di osservazioni, I due valori fondamentali sono mediati. Questo indicatore è particolarmente utile nelle distribuzioni asimmetriche, poiché non è influenzato da valori estremi.... / cualquier otro método más sencillo: la imputación de la media y la mediana funciona bien, la mayoría de las personas prefieren imputar con el valor medio, pero en caso de distribución sesgada, le sugiero que elija la mediana. Otros métodos inteligentes están imputando valores por medio de casos similares y la imputación mediana usando otras características relevantes o construyendo un modelo. Come esempio: en el desafío de supervivencia del Titanic, puede imputar los valores faltantes de Edad usando el saludo del nombre de los pasajeros como “Sr.”, “Señorita”, “Sra.”, “Maestro” e altri, y esto ha demostrado un buen impacto en el rendimiento del modelo. .
- Imputar el valor faltante de la variabileIn statistica e matematica, un "variabile" è un simbolo che rappresenta un valore che può cambiare o variare. Esistono diversi tipi di variabili, e qualitativo, che descrivono caratteristiche non numeriche, e quantitativo, che rappresentano quantità numeriche. Le variabili sono fondamentali negli esperimenti e negli studi, poiché consentono l'analisi delle relazioni e dei modelli tra elementi diversi, facilitare la comprensione di fenomeni complessi.... categórica: cree un nuevo nivel para imputar la variable categórica de modo que todo el valor faltante se codifique como un valor único, Dillo “New_Cat” o puede mirar la combinación de frecuencias e imputar el valor faltante con el valor que dispone de una frecuencia más alta.
Con metodi così semplici di elaborazione dei dati, può ridurre il tempo di elaborazione dei dati per 3-4 minuti.
Palcoscenico 3. Modellazione dei dati:
Recomiendo utilizar cualquiera de las técnicas de GBM / Foresta casuale, dependiendo del problema comercial. Estas dos técnicas son extremadamente efectivas para crear una solución de referencia. He visto que los científicos de datos usan estos dos métodos a menudo como su primer modelo y, in alcuni casi, además actúa como modelo final. Questa operazione richiederà la massima quantità di tempo (~ 4-5 minuti).
Palcoscenico 4. Stima delle prestazioni:
Existen varios métodos para validar el rendimiento de su modelo, le sugiero que divida el conjunto de datos de su tren en Train y valide (idealmente 70:30) y cree un modelo basado en el 70% del conjunto de datos del tren. Ora, realice una validación cruzada usando el 30% del conjunto de datos validados y evalúe el rendimiento usando la métrica de evaluación. Questo in conclusione prende 1-2 minuti Esecuzione e documento.
La intención de este post no es ganar la competencia, ma per determinare un punto di riferimento per noi stessi. Veamos los códigos de Python para realizar los pasos anteriores y construir su primer modelo con mayor impacto.
Iniziamo a metterlo in pratica
Supuse que primero ha realizado toda la generación de hipótesis y es bueno con la ciencia de datos básica usando Python. Estoy ilustrando esto con un ejemplo de desafío de ciencia de datos. Veamos la estructura:
passo 1 : Importe las bibliotecas imprescindibles y lea el conjunto de datos de prueba y addestramentoLa formazione è un processo sistematico volto a migliorare le competenze, conoscenze o abilità fisiche. Viene applicato in vari ambiti, come lo sport, Formazione e sviluppo professionale. Un programma di allenamento efficace include la pianificazione degli obiettivi, Pratica regolare e valutazione dei progressi. L'adattamento alle esigenze individuali e la motivazione sono fattori chiave per ottenere risultati di successo e sostenibili in qualsiasi disciplina..... Adjunte ambos.
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
import random
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
train=pd.read_csv(«C:/Users/DataPeaker/Desktop/challenge/Train.csv') test=pd.read_csv(«C:/Users/DataPeaker/Desktop/challenge/Test.csv') treno['Type']='Train' #Create a flag for Train and Test Data set test['Type']='Test' fullData = pd.concat([treno,test],asse=0) #Combined both Train and Test Data set
passo 2: El paso 2 del marco no es necesario en Python. Pasamos al siguiente paso.
passo 3: Visualizzare i nomi delle colonne / Riepilogo del set di dati
fullData.columns # This will show all the column names fullData.head(10) # Show first 10 records of dataframe fullData.describe() #You can look at summary of numerical fields by using describe() funzione
passo 4: Identificar las a) Variables de identificación b) Variables objetivo c) Variables categóricas d) Variables numéricas e) Otras variables
ID_col = ['REF_NO'] target_col = ["Account.Status"] cat_cols = ['figli','age_band','status','occupation','occupation_partner','home_status','family_income','self_employed', 'self_employed_partner','year_last_moved','TVarea','post_code','post_area','Genere',«regione»] num_cols= list(set(elenco(fullData.columns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col)) other_col=['Type'] #Test and Train Data set identifier
passo 5 : Identifique las variables con valores perdidos y cree una bandera para esas
fullData.isnull().qualunque()#Will return the feature with True or False,True means have missing value else False num_cat_cols = num_cols+cat_cols # Combined numerical and Categorical variables #Create a new variable for each variable having missing value with VariableName_NA # and flag missing value with 1 and other with 0 for var in num_cat_cols: if fullData[dove].è zero().qualunque()==True: fullData[var+'_NA']=fullData[dove].è zero()*1
passo 6 : Imputare i valori persi
#Impute numerical missing values with mean fullData[num_cols] = fullData[num_cols].riempire(fullData[num_cols].Significare(),inplace=Vero)
#Impute categorical missing values with -9999 fullData[cat_cols] = fullData[cat_cols].riempire(valore = -9999)
passo 7 : Cree codificadores de etiquetas para variables categóricas y divida el conjunto de datos para entrenar y probar, divida aún más el conjunto de datos del tren para entrenar y validar
#create label encoders for categorical features for var in cat_cols: number = LabelEncoder() fullData[dove] = number.fit_transform(fullData[dove].come tipo('str')) #Target variable is also a categorical so convert it fullData["Account.Status"] = number.fit_transform(fullData["Account.Status"].come tipo('str')) train=fullData[fullData['Type']=='Train'] test=fullData[fullData['Type']=='Test'] treno['is_train'] = np.random.uniform(0, 1, len(treno)) <= .75 Treno, Validate = train[treno['is_train']==True], treno[treno['is_train']==False]
passo 8 : Pase las variables imputadas y ficticias (indicadores de valores perdidos) al procedimiento de modelado. Estoy usando un bosque aleatorio para predecir la clase.
features=list(set(elenco(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))
x_train = Train[elenco(caratteristiche)].values y_train = Train["Account.Status"].values x_validate = Validate[elenco(caratteristiche)].values y_validate = Validate["Account.Status"].values x_test=test[elenco(caratteristiche)].valori
random.seed(100) rf = RandomForestClassifier(n_estimators=1000) rf.fit(x_treno, y_train)
passo 9 : Compruebe el rendimiento y haga predicciones
status = rf.predict_proba(x_validate) fpr, Tpr, _ = roc_curve(y_validate, status[:,1]) roc_auc = auc(fpr, Tpr) print roc_auc final_status = rf.predict_proba(x_test) test["Account.Status"]=final_status[:,1] test.to_csv(«C:/Users/DataPeaker/Desktop/model_output.csv',colonne=['REF_NO','Account.Status'])
E invia!!
Note finali
Auspicabilmente, este post le permitirá comenzar a crear su propio código de puntuación de 10 minuti. La mayoría de los maestros de Kaggle y los mejores científicos de nuestra hackatones Tenga estos códigos listos y dispare su primer envío antes de realizar un análisis detallado. Una volta che hanno una stima del benchmark, Iniziano a improvvisare di più. Condividi i tuoi codici completi nella casella dei commenti qui sotto.
Questo post è stato utile?? Condividi le tue opinioni / pensieri nella sezione commenti qui sotto.