Métrica de qualidade em aprendizado de máquina. Métricas em problemas de aprendizado de máquina

Nos elementos dentro de cada lista. A ordem parcial geralmente é especificada especificando uma pontuação para cada elemento (por exemplo, "relevante" ou "não relevante"; mais de duas notas são possíveis). O objetivo do modelo de classificação é aproximar e generalizar da melhor maneira (em certo sentido) o método de classificação no conjunto de treinamento para novos dados.

A aprendizagem de classificação ainda é uma área de pesquisa bastante jovem e de rápido desenvolvimento que surgiu na década de 2000 com o surgimento do interesse no campo da recuperação de informações na aplicação de métodos de aprendizagem de máquina para problemas de classificação.

YouTube universitário

  • 1 / 5

    Durante o treinamento do modelo de classificação e durante sua operação, cada par documento-consulta é traduzido em um vetor numérico de recursos de classificação (também chamados de fatores ou sinais de classificação) caracterizando as propriedades do documento, consulta e sua relação. Esses sinais podem ser divididos em três grupos:

    A seguir estão alguns exemplos de recursos de classificação usados ​​no conjunto de dados LETOR bem conhecido na técnica:

    • Valores das medidas TF, TF-IDF, BM25, e o modelo de linguagem de adequação da solicitação de diversas áreas do documento (título, URL, corpo do texto, texto do link);
    • Comprimentos e somas IDF de zonas de documentos;
    • Classificações de documentos obtidas por várias variantes de algoritmos de classificação de links, como PageRank e HITS.

    Classificação de métricas de qualidade

    Existem várias métricas usadas para avaliar e comparar o desempenho de algoritmos de classificação em uma amostra com avaliadores. Freqüentemente, os parâmetros do modelo de classificação tendem a ser ajustados de forma a maximizar o valor de uma dessas métricas.

    Exemplos de métricas:

    Classificação de algoritmo

    Em seu artigo "Aprendendo a Classificar para Recuperação de Informação" e discursos em conferências temáticas, Tai-Yang Liu da Microsoft Research Asia analisou os métodos existentes para resolver o problema de classificação de ensino e propôs sua classificação em três abordagens, dependendo da representação de entrada usada . funções de dados e penalidade:

    Abordagem pontual

    Notas (editar)

    1. Tie-Yan Liu (2009), Aprendendo a classificar para recuperação de informações, Fundamentos e Tendências em Recuperação de Informação: vol. 3: Nº 3, p. 225-331, ISBN 978-1-60198-244-5, DOI 10.1561 / 1500000016... Slides do discurso de T. Lew na WWW 2009 estão disponíveis.

    Sobre a saída de clientes de uma operadora de telecomunicações.


    Vamos carregar as bibliotecas necessárias e olhar os dados

    import pandas as pd import matplotlib.pyplot as plt de matplotlib.pylab import rc, plot import seaborn as sns de sklearn.preprocessing import Labelmblencoder, OneHotEncoder de sklearn.model_selection import cross_val_score de sklearn.linear_modelression de sklearn.linear_modelression GrainFormalization. de sklearn.metrics import precision_recall_curve, classificação_report from sklearn.model_selection import train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")


    df.head (5)

    Pré-processamento de dados

    # Vamos fazer um mapeamento de colunas binárias # e codificar o estado com uma codificação fictícia (para simplificar, é melhor não fazer isso para modelos de madeira) d = ("Sim": 1, "Não": 0) df ["Plano internacional "] = df [" Plano internacional "]. Map (d) df [" Plano de correio de voz "] = df [" Plano de correio de voz "]. Map (d) df [" Churn "] = df [" Churn "] . Astype ("int64") le = LabelEncoder () df ["State"] = le.fit_transform (df ["State"]) ohe = OneHotEncoder (sparse = False) encoded_state = ohe.fit_transform (df ["State"] . values.reshape (- 1, 1)) tmp = pd.DataFrame (encoded_state, colunas = ["state" + str (i) para i no intervalo (encoded_state.shape)]) df = pd.concat (, axis = 1)

    Exatidão, precisão e recall

    Antes de passar para as próprias métricas, é necessário introduzir um conceito importante para descrever essas métricas em termos de erros de classificação - matriz de confusão(matriz de erro).
    Suponha que temos duas classes e um algoritmo que prevê a pertença de cada objeto a uma das classes, então a matriz de erro de classificação será semelhante a esta:


    Verdadeiro positivo (TP) Falso Positivo (FP)
    Falso negativo (FN) Verdadeiro negativo (TN)

    Aqui está a resposta do algoritmo no objeto e é o verdadeiro rótulo da classe nesse objeto.
    Assim, existem dois tipos de erros de classificação: Falso Negativo (FN) e Falso Positivo (FP).


    Treinamento de algoritmo e construção da matriz de erro

    X = df.drop ("Churn", axis = 1) y = df ["Churn"] # Divida a amostra em trem e teste, todas as métricas serão avaliadas no conjunto de dados de teste X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0,33, random_state = 42) # Treine a regressão logística nativa lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Use a função de construir a matriz de erro do sklearn documentação def plot_confusion_matrix (cm, classes, normalize = False, title = "(! LANG: Matriz de confusão", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matriz de confusão") plt.savefig("conf_matrix.png") plt.show()!}


    Precisão

    Uma métrica intuitiva, óbvia e quase sem uso é a precisão - a porcentagem de respostas corretas do algoritmo:



    Essa métrica é inútil em problemas com classes desiguais e é fácil mostrá-la com um exemplo.


    Digamos que queremos avaliar o desempenho de um filtro de e-mail de spam. Temos 100 e-mails não-spam, 90 dos quais nosso classificador identificou corretamente (verdadeiro negativo = 90, falso positivo = 10) e 10 e-mails de spam, 5 dos quais o classificador também identificou corretamente (verdadeiro positivo = 5, falso negativo = cinco )
    Então, precisão:



    No entanto, se apenas prevermos que todos os e-mails não são spam, obteremos uma precisão maior:



    Ao mesmo tempo, nosso modelo não tem absolutamente nenhum poder preditivo, pois inicialmente queríamos identificar mensagens de spam. Para superar isso, seremos ajudados pela transição de uma métrica comum para todas as classes para indicadores separados da qualidade das classes.

    Precisão, recall e medida F

    Para avaliar o desempenho do algoritmo em cada uma das classes separadamente, apresentamos as métricas de precisão e recall.




    A precisão pode ser interpretada como a proporção de objetos nomeados pelo classificador como positivos e ao mesmo tempo realmente positivos, e a recuperação mostra qual proporção de objetos de uma classe positiva entre todos os objetos de uma classe positiva encontrada pelo algoritmo.



    É a introdução da precisão que não nos permite escrever todos os objetos em uma classe, pois neste caso obtemos um aumento no nível de Falso Positivo. Recall demonstra a capacidade do algoritmo de detectar uma determinada classe em geral, e a precisão demonstra a capacidade de distinguir esta classe de outras classes.


    Como observamos anteriormente, existem dois tipos de erros de classificação: Falso Positivo e Falso Negativo. Nas estatísticas, o primeiro tipo de erro é denominado erro Tipo I e o segundo é denominado erro Tipo II. Em nosso problema de determinação da rotatividade de assinantes, o erro de primeiro tipo será a aceitação de um assinante fiel por um assinante, pois nossa hipótese nula é que nenhum dos assinantes sai, e rejeitamos essa hipótese. Assim, um erro do segundo tipo será o "salto" do assinante de saída e a aceitação errônea da hipótese nula.


    A precisão e a recuperação não dependem, ao contrário da precisão, da proporção das classes e, portanto, são aplicáveis ​​em condições de amostras não balanceadas.
    Freqüentemente, na prática real, a tarefa é encontrar o equilíbrio ideal (para o cliente) entre essas duas métricas. Um exemplo clássico é o problema de determinação da rotatividade de clientes.
    Obviamente, não podemos encontrar de tudo clientes de saída e eles. Mas, tendo identificado a estratégia e o recurso para retenção de clientes, podemos selecionar os limites necessários para precisão e recall. Por exemplo, você pode se concentrar em reter apenas clientes de alto rendimento ou aqueles que têm maior probabilidade de sair porque temos recursos limitados de call center.


    Normalmente, ao otimizar os hiperparâmetros de um algoritmo (por exemplo, no caso de iteração em uma grade GridSearchCV), uma métrica é usada, cuja melhoria esperamos ver na amostra de teste.
    Existem várias maneiras diferentes de combinar precisão e recall em uma medida agregada de qualidade. Medida F (em geral) - precisão média harmônica e recall:



    Neste caso, ele determina o peso da precisão na métrica, e quando esta é a média harmônica (com um fator de 2, de modo que no caso de precisão = 1 e recall = 1 ter)
    A medida F atinge seu máximo quando a completude e a precisão são iguais a um, e está próxima de zero se um dos argumentos estiver próximo de zero.
    Sklearn tem uma função útil _metrics.classification relatório, que retorna recall, precisão e medida F para cada uma das classes, bem como o número de instâncias de cada classe.


    report = classificação_report (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) print (report)
    aula precisão lembrar pontuação f1 Apoio, suporte
    Não agitado 0.88 0.97 0.93 941
    Agitado 0.60 0.25 0.35 159
    média / total 0.84 0.87 0.84 1100

    Deve-se notar aqui que no caso de problemas com classes desequilibradas, que prevalecem na prática real, muitas vezes é necessário recorrer às técnicas de modificação artificial do conjunto de dados para equalizar a proporção das classes. Existem muitos deles, e não vamos tocar neles, você pode olhar alguns métodos e escolher aquele que se adapta à sua tarefa.

    AUC-ROC e AUC-PR

    Ao converter a resposta real do algoritmo (como regra, a probabilidade de pertencer a uma classe, consulte SVM separadamente) em um rótulo binário, devemos escolher algum limite no qual 0 se torna 1. Um limite igual a 0,5 parece natural e próximo , mas nem sempre acaba sendo ótimo, por exemplo, na já mencionada falta de equilíbrio de classes.


    Uma das formas de avaliar o modelo como um todo, sem estar vinculado a um limite específico, é AUC-ROC (ou ROC AUC) - área ( UMA rea você nder C urve) sob a curva de erro ( R eceiver O perecendo C curva característica). Esta curva é uma linha de (0,0) a (1,1) em coordenadas de taxa de positivo verdadeiro (TPR) e taxa de falso positivo (FPR):




    Já conhecemos o TPR, isso é completude, e o FPR mostra a proporção de objetos da classe negativa que o algoritmo previu incorretamente. No caso ideal, quando o classificador não comete erros (FPR = 0, TPR = 1), obtemos a área sob a curva igual a um; caso contrário, quando o classificador produzir probabilidades de classe aleatoriamente, o AUC-ROC tenderá a 0,5, pois o classificador produzirá o mesmo número de TP e FP.
    Cada ponto do gráfico corresponde à escolha de um determinado limite. A área sob a curva, neste caso, mostra a qualidade do algoritmo (quanto mais, melhor), além disso, a inclinação da própria curva é importante - queremos maximizar o TPR minimizando o FPR, o que significa que nossa curva deve idealmente tender a o ponto (0,1).


    Código de desenho de curva ROC

    sns.set (font_scale = 1.5) sns.set_color_codes ("muted") plt.figure (figsize = (10, 8)) fpr, tpr, thresholds = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "Curva ROC") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("Taxa de falsos positivos ") plt.ylabel (" Taxa de Positivo Verdadeiro ") plt.title (" Curva ROC ") plt.savefig (" ROC.png ") plt.show ()



    O critério AUC-ROC é resistente a classes desequilibradas (spoiler: infelizmente, nem tudo é tão inequívoco) e pode ser interpretado como a probabilidade de que um objeto positivo selecionado aleatoriamente seja classificado pelo classificador mais alto (terá uma probabilidade maior de ser positivo ) do que um objeto negativo selecionado aleatoriamente ...


    Considere o seguinte problema: precisamos selecionar 100 documentos relevantes de 1 milhão de documentos. Dominamos dois algoritmos:

    • Algoritmo 1 retorna 100 documentos, 90 dos quais são relevantes. Desse modo,

    • Algoritmo 2 retorna 2.000 documentos, 90 dos quais são relevantes. Desse modo,


    Provavelmente, escolheríamos o primeiro algoritmo que produzisse muito poucos falsos positivos em comparação com seu concorrente. Mas a diferença na taxa de falso positivo entre esses dois algoritmos extremamente pequeno - apenas 0,0019. Isso se deve ao fato de que AUC-ROC mede a proporção de Falso Positivo em relação a Verdadeiro Negativo e, em problemas em que a segunda classe (maior) não é tão importante para nós, pode não fornecer uma imagem totalmente adequada ao comparar algoritmos.


    Para corrigir a situação, vamos retornar à integridade e precisão:

    • Algoritmo 1

    • Algoritmo 2


    Aqui, uma diferença significativa entre os dois algoritmos já é perceptível - 0,855 de precisão!


    Precisão e recall também são usados ​​para construir a curva e, como AUC-ROC, encontrar a área abaixo dela.



    Pode-se notar aqui que em pequenos conjuntos de dados, a área sob a curva PR pode ser excessivamente otimista, porque é calculada usando o método trapezoidal, mas geralmente há dados suficientes em tais tarefas. Para obter detalhes sobre a relação entre AUC-ROC e AUC-PR, consulte aqui.

    Perda Logística

    A função de perda logística se destaca, definida como:



    aqui está a resposta do algoritmo no -ésimo objeto, é o verdadeiro rótulo da classe no -ésimo objeto e o tamanho da amostra.


    Detalhes sobre a interpretação matemática da função de perda logística já foram escritos no quadro do post sobre modelos lineares.
    Essa métrica raramente aparece nos requisitos de negócios, mas frequentemente em tarefas no kaggle.
    Intuitivamente, a minimização de perda de log pode ser pensada como a tarefa de maximizar a precisão penalizando previsões incorretas. No entanto, deve-se notar que a perda de log penaliza extremamente fortemente para a confiança do classificador na resposta errada.


    Vamos considerar um exemplo:


    def logloss_crutch (y_true, y_pred, eps = 1e-15): return - (y_true * np.log (y_pred) + (1 - y_true) * np.log (1 - y_pred)) print ("Logloss com classificação incerta% f "% logloss_crutch (1, 0,5)) >> Logloss com classificação incerta 0,693147 print (" Logloss com classificação confiável e resposta correta% f "% logloss_crutch (1, 0,9)) >> Logloss com classificação confiável e resposta correta 0,105361 print (" Logloss com classificação confiável e resposta errada% f "% logloss_crutch (1, 0.1)) >> Logloss com classificação confiável e resposta errada 2.302585

    Observe como a perda de log cresceu dramaticamente com uma resposta incorreta e uma classificação confiável!
    Consequentemente, um erro em um objeto pode resultar em uma degradação significativa do erro geral da amostra. Esses objetos são frequentemente outliers, que devem ser lembrados para serem filtrados ou considerados separadamente.
    Tudo se encaixa se você desenhar um gráfico de perda de peso:



    Pode-se observar que quanto mais próxima de zero a resposta do algoritmo com verdade fundamental = 1, maior será o valor do erro e mais íngreme será a curva.

    Vamos resumir:

    • No caso de uma classificação multiclasse, você precisa monitorar cuidadosamente as métricas de cada uma das classes e seguir a lógica da decisão tarefas em vez de otimizar a métrica
    • No caso de classes desiguais, é necessário selecionar um equilíbrio de classes para treinamento e uma métrica que reflita corretamente a qualidade da classificação
    • e madrugado pela ajuda com este artigo.

    Este capítulo apresenta métodos populares para avaliar a qualidade do modelo de classificação, que, entre outras coisas, são usados ​​em outros trabalhos neste tópico. Sua descrição e justificativa das métricas usadas para esta avaliação são fornecidas.

    Métricas de avaliação de qualidade

    Precisão total

    Esta métrica é uma das mais simples e ao mesmo tempo universais para avaliar o desempenho de algoritmos de classificação. O valor desse coeficiente é calculado como a proporção de objetos classificados corretamente em relação ao número total de objetos na amostra. Essa métrica é popular devido à sua simplicidade e capacidade de se estender a qualquer número de classes. A principal desvantagem dessa métrica é que ela atribui o mesmo peso a todos os documentos, o que pode ser incorreto no caso de um forte deslocamento dos documentos do conjunto de treinamento para uma ou mais classes. Essa métrica pode ter um valor alto, mas o classificador dentro da mesma classe pode apresentar qualidade de trabalho extremamente baixa. Ao mesmo tempo, a métrica não sinaliza isso de forma alguma.

    Precisão, integridade e medida F

    Métricas como precisão e recall foram, pela primeira vez, amplamente utilizadas na avaliação do desempenho de sistemas que resolvem problemas de recuperação de informações. A precisão do sistema dentro de uma classe é a proporção de objetos que realmente pertencem a uma determinada classe em relação a todos os objetos atribuídos pelo sistema a essa classe. A integridade é expressa como a proporção de objetos encontrados pelo classificador pertencentes a uma classe em relação a todos os objetos dessa classe. A Tabela 4 é uma tabela de contingência de uma classe separada, onde TP (verdadeiro positivo) é uma decisão verdadeiramente positiva, TN (verdadeiro negativo) é uma decisão verdadeira negativa, FP (falso positivo) é uma decisão falso positiva e FN (falso negativo ) é falsa. -decisão negativa.

    Tabela 1 - Tabela de contingência de uma classe de objetos

    Assim, a precisão e integridade são calculadas como:

    A medida F combina informações sobre a precisão e integridade do algoritmo avaliado. É calculado como a média harmônica dos indicadores de precisão e integridade:

    Devido ao fato de que a medida F é calculada separadamente para cada classe, é conveniente utilizá-la para pesquisar e analisar erros específicos do algoritmo, para avaliar uma classificação com várias classes. Além disso, no caso de um grande número de classes, é necessária uma característica que agregue a completude e a precisão para todas as classes e caracterize o comportamento geral do sistema. Neste trabalho, os seguintes valores agregados são usados ​​para este propósito: macro precisão, que é calculada como a média aritmética da precisão para todas as classes, macro recall, que é calculada como a média aritmética da completude para todas as classes, e macro F-measure (Macro F-score), que é a média harmônica entre eles.

    Validação cruzada

    A validação cruzada é um dos métodos mais comuns para conduzir testes completos e avaliar o desempenho de vários algoritmos de aprendizado de máquina. Para uma amostra independente, este método permite obter uma estimativa não enviesada da probabilidade de erro, em contraste com o erro médio da amostra treinada, que pode ser uma estimativa enviesada da probabilidade de erro devido ao overfitting do algoritmo. Outra vantagem deste procedimento é a capacidade de obter uma estimativa da probabilidade de um erro do algoritmo, na ausência de uma amostra de controle especialmente projetada para teste.

    Vamos supor que seja um conjunto de descrições de recursos de objetos nos quais uma amostra finita de casos de uso é especificada, onde é um conjunto finito de classes. É fornecido um mapeamento que atribui um algoritmo a uma seleção arbitrária de casos de uso. Em seguida, a qualidade do algoritmo para uma amostra arbitrária de precedentes é estimada usando o funcional de qualidade:

    onde é alguma função não negativa que retorna o valor do erro do algoritmo com o rótulo de classe correto.

    Olá, Habr!

    Em tarefas de aprendizado de máquina, as métricas são usadas para avaliar a qualidade dos modelos e comparar vários algoritmos, e sua seleção e análise são uma parte indispensável do trabalho de um datasatanist.

    Neste artigo, veremos alguns critérios de qualidade em problemas de classificação, discutiremos o que é importante ao escolher uma métrica e o que pode dar errado.

    Métricas em problemas de classificação

    Para demonstrar recursos úteis sklearn e uma representação visual de métricas, usaremos nosso conjunto de dados sobre a rotatividade de clientes de uma operadora de telecomunicações, que conhecemos no primeiro artigo do curso.

    Vamos carregar as bibliotecas necessárias e olhar os dados

    Importar pandas como pd import matplotlib.pyplot como plt de matplotlib.pylab import rc, plot import seaborn as sns de sklearn.preprocessing import Labelmblencoder, OneHotEncoder de sklearn.model_selection importar cross_val_score de sklearn.linear_modlearnion importinforming.linear de sklearn.metrics import precision_recall_curve, classificação_report from sklearn.model_selection import train_test_split df = pd.read_csv ("../../ data / telecom_churn.csv")

    Df.head (5)

    Pré-processamento de dados

    # Vamos fazer um mapeamento de colunas binárias # e codificar o estado com uma codificação fictícia (para simplificar, é melhor não fazer isso para modelos de madeira) d = ("Sim": 1, "Não": 0) df ["Plano internacional "] = df [" Plano internacional "]. Map (d) df [" Plano de correio de voz "] = df [" Plano de correio de voz "]. Map (d) df [" Churn "] = df [" Churn "] . Astype ("int64") le = LabelEncoder () df ["State"] = le.fit_transform (df ["State"]) ohe = OneHotEncoder (sparse = False) encoded_state = ohe.fit_transform (df ["State"] . values.reshape (- 1, 1)) tmp = pd.DataFrame (encoded_state, columns = ["state" + str (i) para i no intervalo (encoded_state.shape)]) df = pd.concat (, axis = 1)

    Exatidão, precisão e recall

    Antes de passar para as próprias métricas, é necessário introduzir um conceito importante para descrever essas métricas em termos de erros de classificação - matriz de confusão(matriz de erro).
    Suponha que temos duas classes e um algoritmo que prevê a pertença de cada objeto a uma das classes, então a matriz de erro de classificação será semelhante a esta:

    Verdadeiro positivo (TP) Falso Positivo (FP)
    Falso negativo (FN) Verdadeiro negativo (TN)

    esta é a resposta do algoritmo no objeto, e

    O verdadeiro rótulo de classe neste objeto.
    Assim, existem dois tipos de erros de classificação: Falso Negativo (FN) e Falso Positivo (FP).

    Treinamento de algoritmo e construção da matriz de erro

    X = df.drop ("Churn", axis = 1) y = df ["Churn"] # Divida a amostra em trem e teste, todas as métricas serão avaliadas no conjunto de dados de teste X_train, X_test, y_train, y_test = train_test_split ( X, y, stratify = y, test_size = 0,33, random_state = 42) # Treine a regressão logística nativa lr = LogisticRegression (random_state = 42) lr.fit (X_train, y_train) # Use a função para construir a matriz de erro do sklearn documentação def plot_confusion_matrix (cm, classes, normalize = False, title = "(! LANG: Matriz de confusão", cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ plt.imshow(cm, interpolation="nearest", cmap=cmap) plt.title(title) plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=45) plt.yticks(tick_marks, classes) if normalize: cm = cm.astype("float") / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print("Confusion matrix, without normalization") print(cm) thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape), range(cm.shape)): plt.text(j, i, cm, horizontalalignment="center", color="white" if cm > thresh else "black") plt.tight_layout() plt.ylabel("True label") plt.xlabel("Predicted label") font = {"size" : 15} plt.rc("font", **font) cnf_matrix = confusion_matrix(y_test, lr.predict(X_test)) plt.figure(figsize=(10, 8)) plot_confusion_matrix(cnf_matrix, classes=["Non-churned", "Churned"], title="Matriz de confusão") plt.savefig("conf_matrix.png") plt.show()!}

    Precisão

    Uma métrica intuitiva, óbvia e quase sem uso é a precisão - a porcentagem de respostas corretas do algoritmo:

    Essa métrica é inútil em problemas com classes desiguais e é fácil mostrá-la com um exemplo.

    Digamos que queremos avaliar o desempenho de um filtro de e-mail de spam. Temos 100 e-mails não-spam, 90 dos quais nosso classificador identificou corretamente (Verdadeiro negativo = 90, Falso positivo = 10) e 10 e-mails de spam, 5 dos quais o classificador também identificou corretamente (Verdadeiro positivo = 5, Falso negativo = 5) .
    Então, precisão:

    No entanto, se apenas prevermos que todos os e-mails não são spam, obteremos uma precisão maior:

    Ao mesmo tempo, nosso modelo não tem nenhum poder preditivo, já que originalmente queríamos identificar mensagens de spam. Para superar isso, seremos ajudados pela transição de uma métrica comum para todas as classes para indicadores separados da qualidade das classes.

    Precisão, recall e medida F

    Para avaliar o desempenho do algoritmo em cada uma das classes separadamente, apresentamos as métricas de precisão e recall.

    A precisão pode ser interpretada como a proporção de objetos nomeados pelo classificador como positivos e ao mesmo tempo realmente positivos, e a recuperação mostra qual proporção de objetos de uma classe positiva entre todos os objetos de uma classe positiva encontrada pelo algoritmo.

    É a introdução da precisão que não nos permite escrever todos os objetos em uma classe, pois neste caso obtemos um aumento no nível de Falso Positivo. Recall demonstra a capacidade do algoritmo de detectar uma determinada classe em geral, e a precisão demonstra a capacidade de distinguir esta classe de outras classes.

    Como observamos anteriormente, existem dois tipos de erros de classificação: Falso Positivo e Falso Negativo. Nas estatísticas, o primeiro tipo de erro é denominado erro Tipo I e o segundo é denominado erro Tipo II. Em nosso problema de determinação da rotatividade de assinantes, o erro de primeiro tipo será a aceitação de um assinante fiel por um que sai, pois nossa hipótese nula é que nenhum dos assinantes está saindo, e rejeitamos essa hipótese. Conseqüentemente, um erro de segundo tipo será o "salto" do assinante de saída e a aceitação errônea da hipótese nula.

    A precisão e a recuperação não dependem, ao contrário da precisão, da proporção das classes e, portanto, são aplicáveis ​​em condições de amostras não balanceadas.
    Freqüentemente, na prática real, a tarefa é encontrar o equilíbrio ideal (para o cliente) entre essas duas métricas. Um exemplo clássico é o problema de determinação da rotatividade de clientes.
    Obviamente, não podemos encontrar de tudo clientes de saída e eles. Mas, tendo identificado a estratégia e o recurso para retenção de clientes, podemos selecionar a precisão necessária e os limites de recall. Por exemplo, você pode se concentrar em reter apenas clientes de alto rendimento ou aqueles que são mais propensos a relatar, uma vez que somos limitados pelos recursos do call center.

    Normalmente, ao otimizar os hiperparâmetros de um algoritmo (por exemplo, no caso de iteração em uma grade GridSearchCV), uma métrica é usada, cuja melhoria esperamos ver na amostra de teste.
    Existem várias maneiras diferentes de combinar precisão e recall em uma medida agregada de qualidade. Medida F (em geral

    ) - precisão média harmônica e recall:

    neste caso, determina o peso da precisão na métrica e para

    esta é a média harmônica (com um multiplicador de 2, de modo que, no caso de precisão = 1 e recall = 1, temos

    )
    A medida F atinge seu máximo quando a completude e a precisão são iguais a um e está perto de zero se um dos argumentos é próximo a zero.
    Sklearn tem uma função útil _metrics.classification relatório retornando recall, precisão e medida F para cada uma das classes, bem como o número de instâncias de cada classe.

    Relatório = classificação_report (y_test, lr.predict (X_test), target_names = ["Non-churned", "Churned"]) print (report)

    aula precisão lembrar pontuação f1 Apoio, suporte
    Não agitado 0.88 0.97 0.93 941
    Agitado 0.60 0.25 0.35 159
    média / total 0.84 0.87 0.84 1100

    Deve-se notar aqui que no caso de problemas com classes desequilibradas, que prevalecem na prática real, muitas vezes é necessário recorrer às técnicas de modificação artificial do conjunto de dados para equalizar a proporção das classes. Existem muitos deles e não vamos tocar neles, você pode olhar alguns dos métodos e escolher o que melhor se adapta à sua tarefa.

    AUC-ROC e AUC-PR

    Ao converter a resposta real do algoritmo (como regra, a probabilidade de pertencer a uma classe, consulte SVM separadamente) em um rótulo binário, devemos escolher algum limite no qual 0 se torna 1. Um limite igual a 0,5 parece natural e próximo , mas nem sempre acaba sendo ótimo, por exemplo, na já mencionada falta de equilíbrio de classes.

    Uma das formas de avaliar o modelo como um todo, sem estar vinculado a um limite específico, é AUC-ROC (ou ROC AUC) - área ( UMA rea você nder C urve) sob a curva de erro ( R eceiver O perecendo C curva característica). Esta curva é uma linha de (0,0) a (1,1) em coordenadas de taxa de positivo verdadeiro (TPR) e taxa de falso positivo (FPR):

    Já conhecemos o TPR, isso é completude, e o FPR mostra a proporção de objetos da classe negativa que o algoritmo previu incorretamente. Idealmente, quando o classificador não comete erros (FPR = 0, TPR = 1), obteremos a área sob a curva igual a um, caso contrário, quando o classificador produzir aleatoriamente as probabilidades da classe, AUC-ROC tenderá a 0,5, uma vez que o classificador emitirá a mesma quantidade de TP e FP.
    Cada ponto do gráfico corresponde à escolha de um determinado limite. A área sob a curva, neste caso, mostra a qualidade do algoritmo (quanto mais, melhor), além disso, a inclinação da própria curva é importante - queremos maximizar o TPR minimizando o FPR, o que significa que nossa curva deve idealmente tender a o ponto (0,1).

    Código de desenho de curva ROC

    Sns.set (font_scale = 1.5) sns.set_color_codes ("muted") plt.figure (figsize = (10, 8)) fpr, tpr, thresholds = roc_curve (y_test, lr.predict_proba (X_test) [:, 1], pos_label = 1) lw = 2 plt.plot (fpr, tpr, lw = lw, label = "Curva ROC") plt.plot (,) plt.xlim () plt.ylim () plt.xlabel ("Taxa de falsos positivos ") plt.ylabel (" Taxa de Positivo Verdadeiro ") plt.title (" Curva ROC ") plt.savefig (" ROC.png ") plt.show ()

    O critério AUC-ROC é resistente a classes desequilibradas (spoiler: infelizmente, mas nem tudo é tão inequívoco) e pode ser interpretado como a probabilidade de que um objeto positivo selecionado aleatoriamente seja classificado pelo classificador mais alto (terá uma probabilidade maior de ser positivo) do que um objeto negativo selecionado aleatoriamente.

    Considere o seguinte problema: precisamos selecionar 100 documentos relevantes de 1 milhão de documentos. Dominamos dois algoritmos:

    • Algoritmo 1 retorna 100 documentos, 90 dos quais são relevantes. Desse modo,
    • Algoritmo 2 retorna 2.000 documentos, 90 dos quais são relevantes. Desse modo,

    Provavelmente, escolheríamos o primeiro algoritmo que produzisse muito poucos falsos positivos em comparação com seu concorrente. Mas a diferença na taxa de falso positivo entre esses dois algoritmos extremamente pequeno - apenas 0,0019. Isso se deve ao fato de que AUC-ROC mede a proporção de Falso Positivo em relação a Verdadeiro Negativo e, em problemas em que a segunda classe (maior) não é tão importante para nós, pode não fornecer uma imagem totalmente adequada ao comparar algoritmos.

    Para corrigir a situação, vamos retornar à integridade e precisão:

    • Algoritmo 1
    • Algoritmo 2

    Aqui, uma diferença significativa entre os dois algoritmos já é perceptível - 0,855 de precisão!

    Precisão e recall também são usados ​​para construir a curva e, como AUC-ROC, encontrar a área abaixo dela.

    Pode-se notar aqui que em pequenos conjuntos de dados, a área sob a curva PR pode ser excessivamente otimista, porque é calculada usando o método trapezoidal, mas geralmente há dados suficientes em tais tarefas. Para obter detalhes sobre a relação entre AUC-ROC e AUC-PR, consulte aqui.

    Perda Logística

    A função de perda logística se destaca, definida como:

    esta é a resposta do algoritmo para

    Objeto Ohm,

    rótulo de verdadeira classe em

    Objeto Ohm, e

    tamanho da amostra.

    Detalhes sobre a interpretação matemática da função de perda logística já foram escritos no quadro do post sobre modelos lineares.
    Essa métrica raramente aparece nos requisitos de negócios, mas frequentemente em tarefas no kaggle.
    Intuitivamente, a minimização de perda de log pode ser pensada como a tarefa de maximizar a precisão penalizando previsões erradas. No entanto, deve-se notar que a perda de log penaliza extremamente fortemente para a confiança do classificador na resposta errada.

    Vamos considerar um exemplo:

    Def logloss_crutch (y_true, y_pred, eps = 1e-15): return - (y_true * np.log (y_pred) + (1 - y_true) * np.log (1 - y_pred)) print ("Logloss com classificação incerta% f "% logloss_crutch (1, 0,5)) >> Logloss com classificação incerta 0,693147 print (" Logloss com classificação confiável e resposta correta% f "% logloss_crutch (1, 0,9)) >> Logloss com classificação confiável e resposta correta 0,105361 print (" Logloss com classificação confiável e resposta errada% f "% logloss_crutch (1, 0.1)) >> Logloss com classificação confiável e resposta errada 2.302585

    Observe como a perda de log cresceu dramaticamente com uma resposta incorreta e uma classificação confiável!
    Consequentemente, um erro em um objeto pode resultar em uma degradação significativa do erro geral da amostra. Esses objetos são frequentemente outliers, que devem ser lembrados para serem filtrados ou considerados separadamente.
    Tudo se encaixa se você desenhar um gráfico de perda de peso:

    Pode-se observar que quanto mais próxima de zero a resposta do algoritmo com verdade fundamental = 1, maior será o valor do erro e mais íngreme será a curva.

    Resumindo:

    • No caso de uma classificação multiclasse, você precisa monitorar cuidadosamente as métricas de cada uma das classes e seguir a lógica da decisão tarefas em vez de otimizar a métrica
    • No caso de classes desiguais, é necessário selecionar um equilíbrio de classes para treinamento e uma métrica que reflita corretamente a qualidade da classificação
    • A escolha da métrica deve ser feita com foco na área de assunto, pré-processamento dos dados e, possivelmente, segmentação (como no caso da divisão em clientes ricos e pobres)

    Links Úteis

    1. Curso de Evgeny Sokolov: Seminário sobre a escolha de modelos (há informações sobre as métricas de problemas de regressão)
    2. Problemas no AUC-ROC de A.G. Dyakonova
    3. Você pode ler mais sobre outras métricas no kaggle. Um link para a competição onde foi usado foi adicionado à descrição de cada métrica
    4. Apresentação de Bogdan Melnik, também conhecido como ld86, sobre treinamento em amostras não balanceadas

    UDC 519.816

    S. V. SEMENIKHIN L. A. DENISOVA

    Universidade Técnica Estadual de Omsk

    MÉTODO DE APRENDIZAGEM DA MÁQUINA DE GAMA

    COM BASE EM UM ALGORITMO GENÉTICO MODIFICADO PARA A MÉTRICA YRSO

    São considerados o problema de classificação de documentos na página de resultados da pesquisa de informações e as questões de aprendizado de máquina de classificação. Uma abordagem é proposta para otimizar a função de classificação usando a métrica de qualidade NOCO baseada em um algoritmo genético modificado. Foi realizada a pesquisa dos algoritmos desenvolvidos (em coleções de teste LETO ^ e foi demonstrada sua eficácia para aprendizado de máquina de classificação.

    Palavras-chave: recuperação de informação, classificação de aprendizado de máquina, relevância, otimização, algoritmos genéticos.

    1. Introdução. Em sistemas modernos de recuperação de informações (ISS), a quantidade de dados operados pelo sistema é tão grande que a principal tarefa é classificar os documentos relevantes em resposta à consulta de pesquisa do usuário. Nesta fase do desenvolvimento do ISS, a classificação do aprendizado de máquina (ML) é de grande interesse. As abordagens existentes ao BC, baseadas em métodos numéricos (em particular, métodos gradientes) ou em cálculos analíticos, têm uma série de desvantagens que afetam significativamente a qualidade da recuperação da informação e o tempo necessário para classificar os documentos relevantes.

    No início da pesquisa, foram consideradas as abordagens de lista para classificação de aprendizado de máquina, a maioria das quais utilizando o método gradiente descendente. Nos trabalhos considerados, o ML é reduzido à otimização de métricas de qualidade de pesquisa (SEQ), porém, apenas métricas representadas por funções contínuas são utilizadas. Essa limitação geralmente leva ao fato de que, como resultado da otimização, a função de classificação tem pontuações mais baixas para muitos indicadores aceitos importantes (DCG, nDCG, Classificação média recíproca graduada, etc.), que são funções discretas. O artigo propõe o uso de algoritmos genéticos (AG) no ensino de classificação para minimizar a função de perda de Huber usando avaliações de especialistas de relevância como valores de referência. Uma abordagem de ML baseada na otimização de métricas discretas de qualidade de recuperação de informação também foi proposta.

    2. Declaração do problema de classificação do aprendizado de máquina. Na maioria dos sistemas modernos de recuperação de informação, a função de classificação é construída com base em n funções de classificação simples (PRF) e pode ser escrita como:

    onde SRF¡ é a ¡ésima função de classificação simples para o documento d e a consulta q, WCi é o coeficiente de peso da ¡ésima função de classificação simples, n é o número de PRFs no sistema de classificação.

    No curso de aprendizado de máquina para classificação, um conjunto de documentos de pesquisa B e consultas O da coleção de teste LBTOY foi usado. Para todas as solicitações de deO, um par é formado com cada documento deD. Para cada par, o IRS determina os valores de relevância que são usados ​​para classificar os resultados da pesquisa. Para avaliar a qualidade da classificação, o sistema requer valores de relevância de referência E para cada par documento-consulta (^, e). Para esses fins, são utilizadas avaliações de especialistas de relevância.

    Para a realização do estudo, foi utilizado um ISS, no qual a classificação é feita com base em N = 5 funções de classificação simples SRFi (WC) l г = 1, N, que formam um critério de otimalidade vetorial:

    onde WCå (WC) é o vetor de parâmetros variáveis; (ШС), (ЯБ) são os espaços de parâmetros e critérios de vetor, respectivamente.

    A aplicação de algoritmos genéticos para classificação de ML torna possível maximizar métricas de qualidade discretas, como nDCG. A métrica nDCG para classificar documentos no mecanismo de pesquisa é determinada de acordo com a expressão:

    DCG @ n = X 2 ---

    RF (q, d) = X WC. ■ SRF., I = 1 1 1

    onde nota (p) é a pontuação de relevância média atribuída por especialistas ao documento localizado na posição p na lista de resultados, nota; 1 / log2 (2 + p) - coeficiente dependendo da posição do documento (os primeiros documentos têm mais peso).

    Em seguida, a versão normalizada do NDCG será escrita como

    N000 @ n = RSD @ n / g,

    onde r é o fator de normalização, que é igual ao valor máximo possível 0С [email protegido] n para uma determinada consulta (ou seja, igual ao OOO da classificação ideal).

    Assim, a fim de otimizar (maximizar) a métrica do OSS, a função objetivo (YM) será escrita da seguinte forma

    3. Métricas de qualidade de classificação dos resultados da pesquisa. Ao classificar documentos nos resultados da pesquisa, as métricas de qualidade atuam como critérios. Da lista de métricas geralmente aceitas para avaliar a qualidade do ISS, três principais foram selecionadas que avaliam a precisão, relevância e integridade da recuperação de informações.

    1. O critério para a precisão da recuperação de informações

    onde a é o número de documentos relevantes encontrados, b é o número de documentos confundidos com relevantes.

    2. O critério Bpref, que avalia a relevância da recuperação da informação, é usado para processar um trabalho com R documentos relevantes e é calculado pela fórmula

    Bpref = - ^ (1 - Não Re ¡Antes (r) / R). (4)

    Aqui, r denota um documento relevante conhecido e NonRelBefore (r) - o número de documentos irrelevantes conhecidos com classificação superior a r (apenas o primeiro R dos documentos irrelevantes estimados da execução são considerados no cálculo).

    3. Critério de integridade dos resultados da pesquisa

    r = a / (a ​​+ c),

    onde a é o número de documentos relevantes encontrados, c é o número de documentos relevantes não encontrados.

    4. Coletas de teste. Em um problema de aprendizado de máquina, a classificação requer um conjunto de documentos e consultas com pontuações de relevância correspondentes determinadas por especialistas. Esses dados são usados ​​para aprendizado de máquina da função de classificação, bem como para avaliação de qualidade.

    classificação dos resultados da pesquisa pelo sistema. No processo de ML, as coleções de teste são usadas como um conjunto de treinamento e, portanto, têm um impacto significativo nos resultados. Uma coleção de teste de documentos e solicitações LETOR foi usada para a pesquisa. Esta coleção é usada para pesquisas de recuperação de informações pela Microsoft Research. Tabela 1 mostra as características das coleções de teste LETOR.

    5. Algoritmo genético modificado. Para usar algoritmos genéticos em aprendizado de máquina para classificação, o problema deve ser formulado de forma que a solução seja codificada como um vetor (genótipo), onde cada gene pode ser um bit, um número ou outro objeto. Nesse caso, o genótipo é representado por um vetor de fatores de ponderação para os fatores de classificação correspondentes. A condição para interromper a execução do algoritmo genético é encontrar a solução ótima, o esgotamento do número de gerações ou o tempo alocado para a evolução.

    Deve-se notar que os AGs são mais eficazes na busca pela região do extremo global, entretanto, eles podem trabalhar lentamente quando é necessário encontrar um mínimo local nesta região. A forma proposta para evitar essa desvantagem é criar um algoritmo genético modificado (MGA), que mudará para um algoritmo de otimização local (alta velocidade) após encontrar a região ótima global usando o AG básico. O MGA proposto é um método híbrido baseado no GA clássico e no método de Nelder - Mead (algoritmo simplex). O método Nelder - Mead, um algoritmo de otimização não linear freqüentemente usado, é um método numérico para encontrar o mínimo de uma função objetivo em um espaço multidimensional. O algoritmo híbrido MGA proposto neste trabalho muda para o método Nelder - Mead após as condições para a interrupção do AG serem satisfeitas. Um diagrama de blocos do algoritmo MGA é mostrado na Fig. 1.

    Ao realizar a pesquisa, uma limitação do número de cálculos da função objetivo (Nrf = 16.000) foi aceita na busca pela região extrema global e a condição de mudar para um algoritmo de otimização local baseado no método Nelder - Mead (após o algoritmo genético básico executou 75% das operações Nrf).

    6. Resultados. Como resultado da pesquisa realizada usando o algoritmo de aprendizado de máquina

    tabela 1

    Número de documentos e consultas em coleções de teste

    Nome da coleção de teste Nome do subsistema Número de solicitações Número de documentos

    LETOR 4.0 MQ2007 1692 69623

    LETOR 4.0 MQ2008 784 15211

    LETOR 3.0 OHSUMED 106 16140

    LETOR 3.0 Gov03td 50 49058

    LETOR 3.0 Gov03np 150 148657

    LETOR 3.0 Gov03hp 150 147606

    LETOR 3.0 Gov04td 75 74146

    LETOR 3.0 Gov04np 75 73834

    LETOR 3.0 Gov04hp 75 74409

    Arroz. 1. Diagrama de blocos do algoritmo MVL híbrido baseado em algoritmos genéticos e o método Nelder-Mead

    Para classificar LTR-MGA, um vetor de pesos WC * para a função de classificação é obtido. Além disso, com base nos dados da coleta de teste LETOYA, a qualidade do ranking foi avaliada, para a qual as métricas de qualidade foram calculadas. Métrica discreta de qualidade de classificação [email protegido] avalia a qualidade dos primeiros n documentos da resposta do sistema. As métricas geralmente aceitas para avaliar a qualidade da classificação são [email protegido], [email protegido] e [email protegido] No entanto, para uma consideração mais detalhada das mudanças na métrica dependendo dos valores [email protegido] para todos n de 1 a 10. Para comparar a eficiência do algoritmo desenvolvido com soluções existentes, uma análise comparativa foi realizada usando os algoritmos de classificação fornecidos nas coleções LETOIA 3.0. Os resultados da execução dos algoritmos para as coleções de teste TB2003 e TB2004 para a métrica NDCG são mostrados na Fig. 2. Os resultados mostram que o algoritmo LTR-MGA supera os algoritmos de teste, com os valores mais altos sendo

    são para [email protegido](no nível do primeiro documento). A superioridade do algoritmo LTR-MGA se deve ao fato de que, ao contrário das funções de classificação de teste consideradas nos experimentos, na abordagem proposta para otimizar a função de classificação, é a métrica NDCG que é utilizada como função objetivo.

    Para avaliar a qualidade da classificação ao usar o algoritmo LTR-MGA proposto, foram calculados os valores das métricas de qualidade para classificar os documentos nos resultados da pesquisa (Fig. 3). A comparação dos resultados da classificação (Tabela 2) usando a função de classificação básica, o algoritmo LTR-GA básico e o algoritmo LTR-MGA modificado indica a vantagem do último.

    Além disso, o estudo estimou o tempo necessário para a classificação do MO. Isso é necessário para confirmar que o método LTR-MGA proposto é superior neste indicador à abordagem baseada no uso de

    Arroz. 2. Comparação de algoritmos de aprendizado de máquina para classificação

    pela métrica NDCG para coleções de teste: à esquerda - o conjunto de dados Gov03td, à direita - o conjunto de dados Gov04td

    Arroz. 3. Avaliação das métricas de qualidade de classificação para a fórmula de classificação básica e algoritmos de aprendizagem LTR-GA e LTR-MGA

    Classificação de métricas de qualidade para diferentes algoritmos de aprendizado de máquina de classificação

    mesa 2

    Classificação da métrica de qualidade Função básica de classificação LTR-GA LTR-MGA Aumentando o valor da métrica,%

    Precisão 0,201 0,251 0,267 26,81

    [email protegido](primeiros 5 documentos) 0,149 0,31 0,339 90,47

    [email protegido](primeiros 10 documentos) 0,265 0,342 0,362 29,14

    Bpref 0,303 0,316 0,446 51,49

    Completude 0,524 0,542 0,732 39,03

    * Os melhores valores para a métrica correspondente são destacados em cinza

    algoritmo genético onnogo (LTA-OL). Os resultados da comparação do tempo gasto na execução dos algoritmos LTY-OL e LTY-MOL são mostrados na tabela. 3

    7. Conclusão. Assim, os estudos realizados mostraram que, ao utilizar a abordagem proposta, os valores das métricas de ranking consideradas no ISS aumentam (em média 19,55% em relação ao algoritmo LTS-OL). Isso confirma que o LITA-MOL funciona corretamente e melhora significativamente a função de classificação, ou seja, resolve com sucesso o problema de otimização. Usando um algoritmo modificado

    Devido à aplicação do método de otimização local e às restrições introduzidas no número de cálculos da função objetivo, o tempo de aprendizado de máquina diminuiu (em média 17,71% em comparação com o uso do algoritmo genético tradicional LCHAOL).

    O algoritmo de aprendizado de máquina desenvolvido para classificar LTL-MOL pode ser usado no ISS que usa um modelo de classificação baseado em uma combinação de funções de classificação simples. No entanto, algumas limitações na aplicação da abordagem proposta devem ser levadas em consideração. Baseado

    Estimar o tempo de execução da classificação do aprendizado de máquina dependendo do tamanho da amostra de treinamento

    Tabela 3

    Tamanho da coleção de documentos de texto

    Tempo de execução LTR-GA

    Tempo de execução LTR-MGA

    Redução do tempo de execução,%

    Valor médio

    * Os melhores valores para o tamanho da coleção de teste correspondente são destacados em cinza

    dos resultados obtidos, revelou-se que após o MO, o maior aumento é observado na métrica de qualidade do ranking, cujo valor foi tomado como função objetivo. Ao mesmo tempo, outras métricas podem não ter uma melhora significativa e, em alguns casos, até piorar seus valores. Como uma das abordagens possíveis para eliminar esta deficiência, propõe-se resolver o problema de otimização como um multicritério: melhorar uniformemente várias das principais métricas de classificação dos resultados da pesquisa, em vez de otimizar uma. Além disso, em estudos posteriores, pretende-se desenvolver uma metodologia para a construção de uma função objetivo baseada na convolução linear das principais métricas de qualidade do ranking para melhorar o processo de recuperação da informação.

    Lista bibliográfica

    1. Tie-Yan Liu. Learning to Rank for Information Retrieval // Journal Foundations and Trends in Information Retrieval. Vol. 3, número 3. Março de 2009. P. 225-331.

    2. Christopher J. C. Burges, Tal Shaked, Erin Renshaw. Learning to Rank using Gradient Descent // Proceeding ICML "05 Anais da 22ª conferência internacional sobre aprendizado de máquina. 2005. P. 89-96.

    3. Semenikhin, S. V. Investigação de abordagens de aprendizado de máquina para classificação de documentos por um sistema de pesquisa baseado em algoritmos genéticos / S. V. Semenikhin // Young Russia: advanced technologies in industry. - 2013. - Nº 2. - P. 82 - 85.

    4. Otimização multicritério baseada em algoritmos genéticos na síntese de sistemas de controle: monografia. / L. A. Denisova. - Omsk: Editora da OmSTU, 2014.-- 170 p. - ISBN 978-5-8149-1822-2.

    5. Denisova, L. A. Automação de síntese paramétrica do sistema de controle usando um algoritmo genético / L. A. Denisova, V. A. Meshcheryakov // Automation in industry. - 2012. - Nº 7. - P. 34 - 38.

    6. Huber, Peter J. Robust Estimation of a Location Parameter // Annals of Statistics. - 1964. - No. 53. - P. 73-101.

    7. Semenikhin, S. V. Automação de recuperação de informação baseada em otimização multicritério e algoritmos genéticos / S. V. Semenikhin, L. A. Denisova // Dinâmica de sistemas, mecanismos e máquinas. - 2014. - No. 3. - P. 224 - 227.

    8. Tie-Yan Liu, Jun Xu, Tao Qin, Wenying Xiong e Hang Li. LETOR: Benchmark Dataset for Research on Learning to Rank for Information Retrieval // SIGIR 2007 Workshop on Learning to Rank for Information Retrieval. - 2007 .-- S. 3-10.

    9. Ageev, MS Official metrics of RMIP "2004 / MS Ageev, IE Kuralenok // II Seminário russo sobre avaliação de métodos de recuperação de informação (ROMIP 2004), Pushchino, 2004: tr .; Ed. S. Nekrestyanova. - St. Petersburgo: Instituto de Pesquisa de Química, Universidade Estadual de São Petersburgo - P. 142-150.

    10. J. A. Nelder, R. Mead, A simplex method for function minimization, The Computer Journal 7 (1965). 308-313.

    Svyatoslav Vitalievich SEMENIKHIN, aluno de pós-graduação do Departamento de Sistemas Automatizados de Processamento e Controle da Informação. Endereço correspondente: [email protegido] DENISOVA Lyudmila Albertovna, Doutora em Ciências Técnicas, Professora Associada do Departamento de Sistemas Automatizados de Processamento e Controle da Informação. Endereço correspondente: [email protegido]