"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Seleção de recursos com o algoritmo IAMB: um mergulho casual no aprendizado de máquina

Seleção de recursos com o algoritmo IAMB: um mergulho casual no aprendizado de máquina

Publicado em 2024-11-18
Navegar:596

Então, aqui está a história: recentemente trabalhei em um trabalho escolar do professor Zhuang envolvendo um algoritmo muito legal chamado Incremental Association Markov Blanket (IAMB). Bem, não tenho formação em ciência de dados ou estatística, então este é um território novo para mim, mas adoro aprender algo novo. O objetivo? Use o IAMB para selecionar recursos em um conjunto de dados e ver como isso afeta o desempenho de um modelo de aprendizado de máquina.

Abordaremos os fundamentos do algoritmo IAMB e o aplicaremos ao Pima Indians Diabetes Dataset dos conjuntos de dados de Jason Brownlee. Este conjunto de dados rastreia dados de saúde de mulheres e inclui se elas têm diabetes ou não. Usaremos o IAMB para descobrir quais recursos (como IMC ou níveis de glicose) são mais importantes para prever o diabetes.

O que é o algoritmo IAMB e por que usá-lo?

O algoritmo IAMB é como um amigo que ajuda você a limpar uma lista de suspeitos de um mistério – é um método de seleção de recursos projetado para escolher apenas as variáveis ​​que realmente importam para prever seu alvo. Nesse caso, o objetivo é saber se alguém tem diabetes.

  • Fase de avanço: Adicione variáveis ​​que estejam fortemente relacionadas ao alvo.
  • Fase inversa: elimine as variáveis ​​que realmente não ajudam, garantindo que apenas as mais cruciais sejam deixadas.

Em termos mais simples, o IAMB nos ajuda a evitar confusão em nosso conjunto de dados, selecionando apenas os recursos mais relevantes. Isso é especialmente útil quando você deseja manter as coisas simples, aumentar o desempenho do modelo e acelerar o tempo de treinamento.

Fonte: Algoritmos para descoberta de manta Markov em grande escala

O que é essa coisa alfa e por que isso importa?

É aqui que entra alfa. Nas estatísticas, alfa (α) é o limite que definimos para decidir o que conta como "estatisticamente significativo". Como parte das instruções dadas pelo professor, usei um alfa de 0,05, o que significa que só quero manter recursos que tenham menos de 5% de chance de serem associados aleatoriamente à variável alvo. Portanto, se o p-valor de um recurso for inferior a 0,05, significa que há uma associação forte e estatisticamente significativa com nosso alvo.

Ao usar esse limite alfa, estamos nos concentrando apenas nas variáveis ​​mais significativas, ignorando aquelas que não passam em nosso teste de “significância”. É como um filtro que mantém os recursos mais relevantes e elimina o ruído.

Colocando a mão na massa: usando IAMB no conjunto de dados de diabetes dos índios Pima

Aqui está a configuração: o conjunto de dados de diabetes dos índios Pima tem recursos de saúde (pressão arterial, idade, níveis de insulina, etc.) e nossa meta, Resultado (se alguém tem diabetes).

Primeiro, carregamos os dados e verificamos:

import pandas as pd
# Load and preview the dataset
url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv'
column_names = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome']
data = pd.read_csv(url, names=column_names)
print(data.head())

Implementando IAMB com Alpha = 0,05

Aqui está nossa versão atualizada do algoritmo IAMB. Estamos usando valores de p para decidir quais recursos manter, portanto, apenas aqueles com valores de p menores que nosso alfa (0,05) são selecionados.

import pingouin as pg
def iamb(target, data, alpha=0.05):
    markov_blanket = set()
    # Forward Phase: Add features with a p-value  alpha
    for feature in list(markov_blanket):
        reduced_mb = markov_blanket - {feature}
        result = pg.partial_corr(data=data, x=feature, y=target, covar=reduced_mb)
        p_value = result.at[0, 'p-val']
        if p_value > alpha:
            markov_blanket.remove(feature)
    return list(markov_blanket)

# Apply the updated IAMB function on the Pima dataset
selected_features = iamb('Outcome', data, alpha=0.05)
print("Selected Features:", selected_features)

Quando executei isso, obtive uma lista refinada de recursos que o IAMB considerou estarem mais intimamente relacionados aos resultados do diabetes. Esta lista ajuda a restringir as variáveis ​​que precisamos para construir nosso modelo.

Selected Features: ['BMI', 'DiabetesPedigreeFunction', 'Pregnancies', 'Glucose']

Testando o impacto dos recursos selecionados pelo IAMB no desempenho do modelo

Assim que tivermos nossos recursos selecionados, o teste real compara o desempenho do modelo com todos os recursos versus recursos selecionados pelo IAMB. Para isso, optei por um modelo simples Gaussian Naive Bayes porque é direto e funciona bem com probabilidades (o que está de acordo com toda a vibração bayesiana).

Aqui está o código para treinar e testar o modelo:

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, f1_score, roc_auc_score

# Split data
X = data.drop('Outcome', axis=1)
y = data['Outcome']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Model with All Features
model_all = GaussianNB()
model_all.fit(X_train, y_train)
y_pred_all = model_all.predict(X_test)

# Model with IAMB-Selected Features
X_train_selected = X_train[selected_features]
X_test_selected = X_test[selected_features]

model_iamb = GaussianNB()
model_iamb.fit(X_train_selected, y_train)
y_pred_iamb = model_iamb.predict(X_test_selected)

# Evaluate models
results = {
    'Model': ['All Features', 'IAMB-Selected Features'],
    'Accuracy': [accuracy_score(y_test, y_pred_all), accuracy_score(y_test, y_pred_iamb)],
    'F1 Score': [f1_score(y_test, y_pred_all, average='weighted'), f1_score(y_test, y_pred_iamb, average='weighted')],
    'AUC-ROC': [roc_auc_score(y_test, y_pred_all), roc_auc_score(y_test, y_pred_iamb)]
}

results_df = pd.DataFrame(results)
display(results_df)

Resultados

Esta é a comparação:

Feature Selection with the IAMB Algorithm: A Casual Dive into Machine Learning

Usar apenas os recursos selecionados pelo IAMB proporcionou um ligeiro aumento na precisão e em outras métricas. Não é um grande salto, mas o fato de estarmos obtendo melhor desempenho com menos recursos é promissor. Além disso, significa que nosso modelo não depende de “ruído” ou dados irrelevantes.

Principais conclusões

  • IAMB é ótimo para seleção de recursos: ajuda a limpar nosso conjunto de dados, concentrando-se apenas no que realmente importa para prever nosso alvo.
  • Menos geralmente é mais: Às vezes, menos recursos nos dão melhores resultados, como vimos aqui com um pequeno aumento na precisão do modelo.
  • Aprender e experimentar é a parte divertida: Mesmo sem uma profunda experiência em ciência de dados, mergulhar em projetos como este abre novas maneiras de entender os dados e o aprendizado de máquina.

Espero que isso forneça uma introdução amigável ao IAMB! Se você estiver curioso, experimente: é uma ferramenta útil na caixa de ferramentas de aprendizado de máquina e você poderá ver algumas melhorias interessantes em seus próprios projetos.

Fonte: Algoritmos para descoberta de manta Markov em grande escala

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/ogambakerubo/feature-selection-with-the-iamb-algorithm-a-casual-dive-into-machine-learning-53a7?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3