Aprendizado de máquina - fluxos de trabalho automáticos

Introdução

Para executar e produzir resultados com sucesso, um modelo de aprendizado de máquina deve automatizar alguns fluxos de trabalho padrão. O processo de automatizar esses fluxos de trabalho padrão pode ser feito com a ajuda de Pipelines Scikit-learn. Da perspectiva de um cientista de dados, pipeline é um conceito generalizado, mas muito importante. Basicamente, permite o fluxo de dados de seu formato bruto para algumas informações úteis. O funcionamento dos pipelines pode ser compreendido com a ajuda do seguinte diagrama -

Os blocos de pipelines de ML são os seguintes -

Data ingestion- Como o nome sugere, é o processo de importação dos dados para uso no projeto de ML. Os dados podem ser extraídos em tempo real ou em lotes de um ou vários sistemas. É uma das etapas mais desafiadoras porque a qualidade dos dados pode afetar todo o modelo de ML.

Data Preparation- Depois de importar os dados, precisamos preparar os dados a serem usados ​​em nosso modelo de ML. O pré-processamento de dados é uma das técnicas mais importantes de preparação de dados.

ML Model Training- A próxima etapa é treinar nosso modelo de ML. Temos vários algoritmos de ML, como supervisionado, não supervisionado, reforço para extrair os recursos dos dados e fazer previsões.

Model Evaluation- Em seguida, precisamos avaliar o modelo de ML. No caso do pipeline do AutoML, o modelo de ML pode ser avaliado com a ajuda de vários métodos estatísticos e regras de negócios.

ML Model retraining- No caso do pipeline AutoML, não é necessário que o primeiro modelo seja o melhor. O primeiro modelo é considerado um modelo de linha de base e podemos treiná-lo repetidamente para aumentar a precisão do modelo.

Deployment- Por fim, precisamos implantar o modelo. Esta etapa envolve a aplicação e migração do modelo para operações de negócios para seu uso.

Desafios que acompanham os pipelines de ML

Para criar pipelines de ML, os cientistas de dados enfrentam muitos desafios. Esses desafios se enquadram nas três categorias a seguir -

Qualidade de Dados

O sucesso de qualquer modelo de ML depende muito da qualidade dos dados. Se os dados que estamos fornecendo ao modelo de ML não forem precisos, confiáveis ​​e robustos, terminaremos com uma saída errada ou enganosa.

Confiabilidade de dados

Outro desafio associado aos pipelines de ML é a confiabilidade dos dados que fornecemos ao modelo de ML. Como sabemos, pode haver várias fontes das quais o cientista de dados pode adquirir dados, mas para obter os melhores resultados, deve-se ter certeza de que as fontes de dados são confiáveis ​​e confiáveis.

Acessibilidade de dados

Para obter os melhores resultados dos pipelines de ML, os próprios dados devem estar acessíveis, o que requer consolidação, limpeza e curadoria de dados. Como resultado da propriedade de acessibilidade de dados, os metadados serão atualizados com novas tags.

Modelagem de pipeline de ML e preparação de dados

O vazamento de dados, que acontece do conjunto de dados de treinamento ao conjunto de dados de teste, é uma questão importante para o cientista de dados lidar ao preparar os dados para o modelo de ML. Geralmente, no momento da preparação dos dados, o cientista de dados usa técnicas como padronização ou normalização em todo o conjunto de dados antes de aprender. Mas essas técnicas não podem nos ajudar com o vazamento de dados, porque o conjunto de dados de treinamento teria sido influenciado pela escala dos dados no conjunto de dados de teste.

Usando pipelines de ML, podemos evitar esse vazamento de dados porque os pipelines garantem que a preparação de dados, como a padronização, seja restrita a cada etapa de nosso procedimento de validação cruzada.

Exemplo

A seguir está um exemplo em Python que demonstra o fluxo de trabalho de preparação de dados e avaliação de modelo. Para este propósito, estamos usando o conjunto de dados Pima Indian Diabetes da Sklearn. Em primeiro lugar, criaremos um pipeline que padronizou os dados. Em seguida, um modelo de análise discriminativa linear será criado e, por último, o pipeline será avaliado usando validação cruzada de 10 vezes.

Primeiro, importe os pacotes necessários da seguinte forma -

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

Agora, precisamos carregar o conjunto de dados de diabetes Pima como fizemos nos exemplos anteriores -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

A seguir, criaremos um pipeline com a ajuda do seguinte código -

estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('lda', LinearDiscriminantAnalysis()))
model = Pipeline(estimators)

Por fim, vamos avaliar este pipeline e gerar sua precisão da seguinte forma -

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Resultado

0.7790148448043184

A saída acima é o resumo da precisão da configuração no conjunto de dados.

Modelagem de pipeline de ML e extração de recursos

O vazamento de dados também pode acontecer na etapa de extração de recursos do modelo de ML. É por isso que os procedimentos de extração de recursos também devem ser restritos para impedir o vazamento de dados em nosso conjunto de dados de treinamento. Como no caso da preparação de dados, usando pipelines de ML, também podemos evitar esse vazamento de dados. FeatureUnion, uma ferramenta fornecida por pipelines de ML, pode ser usada para essa finalidade.

Exemplo

A seguir está um exemplo em Python que demonstra extração de recursos e fluxo de trabalho de avaliação de modelo. Para este propósito, estamos usando o conjunto de dados Pima Indian Diabetes da Sklearn.

Primeiro, 3 recursos serão extraídos com PCA (Análise de Componentes Principais). Em seguida, 6 recursos serão extraídos com a Análise Estatística. Após a extração de recursos, o resultado de vários procedimentos de seleção e extração de recursos serão combinados usando

Ferramenta FeatureUnion. Por fim, será criado um modelo de Regressão Logística, e o duto será avaliado por meio de validação cruzada de 10 vezes.

Primeiro, importe os pacotes necessários da seguinte forma -

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

Agora, precisamos carregar o conjunto de dados de diabetes Pima como fizemos nos exemplos anteriores -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Em seguida, a união de recursos será criada da seguinte maneira -

features = []
features.append(('pca', PCA(n_components=3)))
features.append(('select_best', SelectKBest(k=6)))
feature_union = FeatureUnion(features)

Em seguida, o pipeline será criado com a ajuda das seguintes linhas de script -

estimators = []
estimators.append(('feature_union', feature_union))
estimators.append(('logistic', LogisticRegression()))
model = Pipeline(estimators)

Por fim, vamos avaliar este pipeline e gerar sua precisão da seguinte forma -

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Resultado

0.7789811066126855

A saída acima é o resumo da precisão da configuração no conjunto de dados.