TabNet — инструмент, часто рекомендуемый для классификации и задач регрессии в науке о данных. Однако на этом его приложения не заканчиваются. Вы также можете использовать TabNet для процесса, известного как обучение представлению с учителем, который чрезвычайно эффективен для уменьшения размерности или извлечения пространства для встраивания.

Итак, что же все это значит? Проще говоря, обучение с контролируемым представлением — это метод, который сопоставляет данные с целевым пространством. Это облегчает нам анализ и прогнозирование на основе сопоставленных данных. В результате этот метод предлагает улучшенную производительность по сравнению с другими алгоритмами обучения представлению.

Есть два основных способа использовать эту мощь TabNet для обучения представлению:

  1. Обучение без учителя: это метод, при котором модель изучает и выводит закономерности из входных данных без каких-либо конкретных указаний. Это все равно, что дать модели головоломку и позволить ей самой понять, как ее решить.
  2. Обучение с учителем. В отличие от обучения без учителя, в этом методе используются метки или «указания» в обучающих данных. Это все равно, что дать модели головоломку, но с изображением конечного решения.

Неконтролируемое обучение

TabNet также поддерживает обучение без присмотра с использованием формата предварительного обучения. Чтобы это произошло, к процессу TabNet добавляется декодер. Основная задача этого декодера — восстановить входные данные.

Как мы можем измерить эффективность этой реконструкции? Мы используем так называемую потерю среднего квадрата ошибки (MSE). Если наши реконструированные данные точно соответствуют исходным данным, то наша модель работает хорошо. Это дает нам мощный инструмент для анализа и изучения наших данных.

Однако существуют определенные ограничения, когда дело доходит до выявления «скрытого пространства» или скрытых закономерностей в данных с помощью обучения без учителя. Основная проблема заключается в том, что этот подход не отдает приоритет наиболее важным функциям, необходимым для классификации. Вместо этого он часто концентрируется на сложных функциях, которые трудно реконструировать и которые не могут существенно повлиять на процесс классификации.

Мы не совсем уверены, насколько хорошо скрытые шаблоны (или скрытое пространство), обнаруженные с помощью обучения без учителя, будут обрабатывать метаданные. Другими словами, неясно, можно ли эффективно применить обнаруженные закономерности к такого рода данным. Это предполагает, что для эффективного формирования скрытого пространства может потребоваться некоторое руководство.

Обучение представлению под наблюдением

Вот где все становится действительно интересно. Я предлагаю использовать TabNet в качестве инструмента для изучения представлений с помеченными данными. В TabNet есть специальный компонент, который называется преобразователем функций. Этот функциональный преобразователь преобразует или трансформирует данные во встроенное пространство, упрощая их анализ и работу с ними.

Как мне этого добиться? Я использую все результаты Encoder от TabNet. Эти результаты Encoder объединяются и используются в качестве встроенных данных. Чтобы извлечь эти результаты, я удаляю полностью связанный (FC) слой, который используется для классификации.

Процесс использования этого метода прост. Вы обучаете свои данные, как обычно. Однако во время логического вывода вы захотите извлечь все встроенное пространство из кодировщика. Этот метод не только позволяет максимально использовать размеченные данные, но также использует всю мощь трансформационных возможностей TabNet.

class TabNet:
    ...
    # FC layer, output_dim = 1
    final_mapping = Linear(n_d, output_dim, bias=False)
    
    # origin forward for training
    def forward(self, x):
        res = 0
        steps_output, M_loss = self.encoder(x)
    
        res = torch.sum(torch.stack(steps_output, dim=0), dim=0)
        out = self.final_mapping(res)
        return out, M_loss
    
    # get latent space in inference time
    def predict_latent(self, x):
        steps_output, _ = self.encoder(x)
        res = torch.stack(steps_output, dim=0)
        return res

...


def inference_tabnet_latent(X_test: pd.DataFrame,
                            y_test: pd.Series) -> np.ndarray:

   latent = model.predict_latent(X_test.to_numpy())
   return latent

Результат

В своем тематическом исследовании я использовал кредитные данные за период с января по август 2022 года. Данные за период с января по февраль использовались для обучения TabNet. Остальные данные были отложены в качестве тестового набора. После обучения TabNet смогла отобразить данные поезда во встроенное пространство. Затем я спроецировал все тестовые данные на это пространство и запустил процесс классификации.

Давайте поговорим о производительности и уменьшении размеров. Исходные данные содержали 300 параметров. Однако размер встроенного пространства был уменьшен всего до 30 — это десятая часть исходного размера! Несмотря на это значительное снижение размерности, производительность почти не пострадала, сохранив почти 90% производительности в отношении AUC (площадь под кривой) по сравнению с исходными данными.

Я также провел состязательную проверку (AV), метод, используемый для дифференциации одного набора данных от другого. В данном случае он использовался для различения обучающего и тестового наборов. И обучающий набор, и тестовый набор имеют одинаковое покрытие в AV. Прежде чем применить AV к исходным данным, я смог различить обучающие и тестовые наборы с показателем AUC 0,8 с помощью Catboost. Однако после сопоставления этих наборов данных со встроенным пространством показатель AUC упал до 0,56. Это говорит о том, что теперь стало сложнее различать обучающие и тестовые наборы данных.

это означает, что вы можете свести к минимуму влияние дрейфа данных

Вынос? Используя контролируемое обучение представлению в TabNet, вы можете решить проблемы с дрейфом данных, создать более легкую модель и добиться значительного уменьшения размерности, не жертвуя большей частью производительности вашей модели.

Ссылка

https://arxiv.org/pdf/1908.07442.pdf



https://medium.com/@okpo65/paper-review-tabnet-deep-neural-net-for-tabular-a97c43290969