Каталог данных SQL - это инструмент Redgate для выявления и классификации конфиденциальных данных. Наш инструмент обеспечивает комплексную фильтрацию и автоматизированную систему правил. Он зависит от расположения столбца (экземпляр, база данных, схема и таблица) и информации (имя и тип данных).

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

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

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

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

Для обучения такой модели обычно требуются Python, TensorFlow и много кода. Поскольку нашим продуктом является .NET, интегрироваться с Python непросто. К счастью, ML.NET пришел на помощь, и мы, наконец, можем обучать и использовать модели ML в .NET, не полагаясь на Python.

Обучение модели с помощью ML.NET несложно. Все, что вам нужно, это набор данных и Visual Studio. Есть хороший мастер для загрузки набора данных, определения того, какой столбец является меткой для прогнозирования, а какие столбцы являются данными и функциями, а затем позвольте ему скопировать. Метка в нашем случае - это тип информации, а данные - это примеры для каждого из типов, которые мы хотим предсказать. В этом примере мы сами не определяли никаких функций, вместо этого полагаясь на особенности AutoML по умолчанию, такие как появление каждого символа, преобразование текста в векторы или определение частоты употребления терминов.

Затем AutoML начнет обучение с использованием нескольких алгоритмов и вернет алгоритм с максимальной точностью. Он также будет создавать модели ввода и вывода, код для создания экземпляра механизма прогнозирования и код, используемый для обучения модели, вместе с самой моделью, упакованной в zip-файл.

Это можно легко интегрировать в существующие проекты C #. Что мы и сделали. На изображении ниже вы можете увидеть очень ранний прототип определения типа информации, содержащейся в столбце, с использованием предварительно обученной модели машинного обучения.

Итак, почему мы еще не выпустили это? Говорят, что модель машинного обучения так же хороша, как и данные, на которых она обучается. ML.NET абстрагирует всю сложность выбора алгоритма, кодирования и обучения модели. Но вы по-прежнему несете ответственность за создание (или поиск) набора данных, который подходит для вашего варианта использования.

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

Мы очень довольны результатами и уверены, что сможем использовать машинное обучение, чтобы принести большую пользу гениально простым способом.