How to Enable or Disable Sample Submission in Windows Defender
Update: Stop getting error messages and slow down your system with our optimization tool. Get it now at this link
When Windows 10 detects a new threat on your device, it automatically sends the problem file to Microsoft. This allows the company to analyze the threat and develop new antivirus definitions that can be used to identify it in the future.
While this sample sharing helps improve the overall security of the Windows ecosystem, it can make you uncomfortable. Although Windows asks you if a sample “probably” contains personal information, you may prefer to disable sample sharing altogether.
Use the Group Policy Editor/Registry Editor
Windows 10 Home does not support the Group Policy Editor. If you use this operating system, use the registry editor for this task.
November 2021 Update:
Using the Settings App
To enable or disable the Windows Defender for Windows 10 PC automatic template example, please follow the instructions below
1) Press the window key on the keyboard or click on the Windows logo in the lower left corner. (Click Start).
2) You will see the settings icon (it is highlighted in red), click on it.
3) The Settings window opens.
4) Click Update and Security, then the Update and Security window opens.
5) On the left side, you will see Windows Defender, then click Windows Defender
6) In the Windows Defender settings window, you will see the automatic sample transmission, it is set to ON by default, to disable it, click the ON and OFF buttons.
OR
7) Expand the system tray and click the Windows Defender icon to launch Windows Defender.
8) Click Settings in the upper right corner.
9) In the Windows Defender settings window, you will see the automatic sample transmission, it is set to ON by default, to disable it, click the ON and OFF buttons.
Have you disabled the Cloud-delivered Protection and Automatic Sample Submission?
We hope this guide has helped you better understand these protections included in Windows 10 and Windows Defender Antivirus. Before you close the guide, please tell us if you have decided to disable cloud protection and automatic sample delivery, or if you have left them enabled. Comment below and discuss with us.
Conclusion
Even if you disable it, other users will continue to submit their samples and overall, the service is constantly improving and continues to identify threats!
CCNA, Web Developer, PC Troubleshooter
I am a computer enthusiast and a practicing IT Professional. I have years of experience behind me in computer programming, hardware troubleshooting and repair. I specialise in Web Development and Database Design. I also have a CCNA certification for Network Design and Troubleshooting.
Участвуем в соревновании по Data Science. Первый опыт
Давно я не писал никаких статей и, вот думаю, пришло время написать о там, как мне пригодились знания по data science, полученные по ходу обучения небезывестной специализации от Яндекса и МФТИ «Машинное обучение и анализ данных». Правда, справедливости ради надо отметить, что знания до конца не получены — специализация не завершена 🙂 Однако, решать простенькие реальные бизнесовые задачи уже можно. Или нужно? На этот вопрос будет ответ, буквально через пару абзацев.
Итак, сегодня в этой статье я расскажу уважаемому читателю о своем первом опыте участия в открытом соревновании. Хотелось бы сразу отметить, что моей целью соревнования было не получение каких-либо призовых мест. Единственное желание было попробовать свои силы в реальном мире 🙂 Да, в добавок так вышло, что тематика соревнования практически никак не пересекалась с материалом из пройденных курсов. Это добавило некоторые сложности, но с этим соревнование стало еще интереснее и ценнее опыт вынесенный оттуда.
По сложившейся традиции, обозначу кому может быть интересна статья. Во-первых, если Вы уже прошли первые два курса указанной выше специализации, и хотите попробовать свои силы на практических задачах, но стесняетесь и переживаете, что может не получиться и Вас засмеют и т.д. После прочтения статьи, такие опасения, надеюсь, развеятся. Во-вторых, возможно, Вы решаете схожую задачу и совсем не знаете с чего зайти. А здесь готовенький простенький, как говорят настоящие датасайнтисты, бэйзлайн 🙂
Здесь следовало бы уже изложить план исследования, но мы немного отвлечемся и попробуем ответить на вопрос из первого абзаца — нужно ли новичку в датасайнсе пробовать свои силы в подобных соревнованиях. Мнения на этот счет расходятся. Лично мое мнение — нужно! Объясню почему. Причин много, все перечислять не буду, укажу наиболее важные. Во-первых, подобные соревнования помогают закрепить теоретические знания на практике. Во-вторых, на моей практике, почти всегда, опыт, полученный в условиях приближенных к боевым, очень сильно мотивирует на дальнейшие подвиги. В-третьих, и это самое главное — во время соревнований у Вас появляется возможность пообщаться с другими участниками в специальных чатах, можно даже не общаться, можно просто почитать, о чем пишут люди и это а) частенько наводит на интересные мысли о том, какие еще изменения провести в исследовании и б) придает уверенность в подтверждении своих собственных идей, особенно, если они высказываются в чате. К этим плюсам нужно подходить с определенной предусмотрительностью, чтобы не возникло ощущения всезнания…
Теперь немного о том, как я решился на участие. О соревновании я узнал буквально за несколько дней до его начала. Первая мысль «если бы я знал о соревновании месяц назад, то подготовился бы, по изучал бы какие-нибудь дополнительные материалы, которые могли бы пригодиться для проведения исследования, а так, без подготовки могу не уложиться в сроки. », вторая мысль «собственно, что может не получиться, если целью является не приз, а участие, тем более, что участники в 95% случаях говорят на русском языке, плюс есть специальные чаты для обсуждения, будут какие-то вебинары от организаторов. В конце концов, можно будет вживую увидеть настоящих датасайнтистов всех мастей и размеров. ». Как вы догадались, вторая мысль победила, и не зря — буквально несколько дней плотной работы и я получил ценнейший опыт пусть и простенькой, но вполне себе бизнесовой задачи. Поэтому, если Вы на пути покорения вершин науки о данных и видите намечающееся соревнование, да на родном языке, с поддержкой в чатах и, у Вас есть свободное время — не задумывайтесь надолго — пробуйте и да прибудет с Вами сила! На мажорной ноте мы переходим к задаче и плану исследования.
Сопоставление названий
Задача
При поиске новых клиентов СИБУРу приходится обрабатывать информацию о миллионах новых компаний из различных источников. Названия компаний при этом могут иметь разное написание, содержать сокращения или ошибки, быть аффилированными с компаниями, уже известными СИБУРу.
Для более эффективной обработки информации о потенциальных клиентах, СИБУРу необходимо знать, связаны ли два названия (т.е. принадлежат одной компании или аффилированным компаниям).
В этом случае СИБУР сможет использовать уже известную информацию о самой компании или об аффилированных компаниях, не дублировать обращения в компанию или не тратить время на нерелевантные компании или дочерние компании конкурентов.
Тренировочная выборка содержит пары названий из разных источников (в том числе, пользовательских) и разметку.
Разметка получена частично вручную, частично — алгоритмически. Кроме того, разметка может содержать ошибки. Вам предстоит построить бинарную модель, предсказывающую, являются ли два названия связанными. Метрика, используемая в данной задаче — F1.
В этой задаче можно и даже нужно пользоваться открытыми источниками данных для обогащения датасета или поиска дополнительной важной для определения аффилированных компаний информации.
Дополнительная информация о задаче
Аффилированными компаниями считаются компании, принадлежащие одному холдингу или группе компаний. Например, все компании из списка: Сибур Нефтехим, ООО Сибур, Sibur Digital, СИБУР ИТ, Sibur international GMBH являются вариациями названий аффилированных компаний, а компания “Сибирь International GMBH” не является.
Названия компаний могут писаться на разных языках: тренировочная и тестовая выборки содержат названия компаний на русском, английском и китайском языках.
В названиях могут присутствовать сокращения, опечатки и дополнительная информация о компании, например, названия стран и провинций.
Публичная (50%) и приватная (50%) части тестового множества не пересекаются.
Правила использования внешних источников
Безвозмездность Источник должен быть бесплатен для всех. Например, нельзя пользоваться данными, к которым у вас есть корпоративный доступ.
Верифицируемость У организаторов должна быть возможность воспроизвести ваш способ сбора данных за 1 день для выборки в 1 000 000 уникальных компаний.
На практике количество проверяемых компаний намного больше данных в рамках соревнования (миллионы компаний). К тому же, одним и тем же способом сбора данных могут пользоваться сразу несколько участников и в случае строгих лимитов мы не сможем верифицировать решение.
Публичность Источник должен быть заявлен в чате до 24:00 6 декабря 2020 с хэштегом #внешниеданные и одобрен организаторами.
Добросовестность Способ, который вы используете при работе с источником, и происхождение данных не должны нарушать законы РФ и правила, которые установлены оператором источника.
Если, например, автоматический парсинг какого-либо сайта запрещен владельцами сайта, то вы можете пользоваться им только вручную.
Источник должен допускать коммерческое использование.
Если для использования источника нужно зарегистрироваться, но в остальном противоречий правилам нет, то его можно использовать.
Один участник может заявить не более 10 источников информации.
Использование API поисковых систем, к сожалению, противоречит пункту 2.
Правила относительно строгих замен, ручной разметки и данных, собранных вручную, в т.ч. с использованием crowdsource
Все “ручные” данные должны быть собраны участниками команды без использования crowdsource платформ и аналогичных методов. Вряд ли мы сможем это проверить, но давайте играть честно:)
Замены общего характера можно использовать без ограничений, если при необходимости вы можете объяснить их происхождение.
Это касается legel entities, стран, городов и т.д. Например, исключение слова Industries из всех названий допустима.
Замена значимых элементов названия компании возможна только на основании внешних данных. Ручная замена не разрешается.
Нельзя использовать строгие правила сравнения названий, использующие значимые элементы. Например, нельзя проверять вхождение подстроки “Сибур” в каждый элемент пары и на основании этого вычислять целевую переменную.
Все данные, использованные при решении задачи, должны опираться только на обучающую выборку и данные, полученные из разрешенных внешних источников. Использовать данные, полученные при анализе тестовой выборки, нельзя.
В случае, если вы используете собственноручно собранные словари, вам нужно описать воспроизводимую логику их составления.
Использование open source
Вы можете пользоваться любыми open source инструментами, выпущенными под разрешительными лицензиями. Если инструмент явным образом включает в себя словари замены или аналогичные данные — о нем нужно сообщить в чате соревнования или в чате задачи в соответствии с правилами для внешних источников. В противном случае сообщать о таком инструменте не нужно.
Если Вы сомневаетесь в том, можно ли использовать какой-то конкретный источник – просто спросите в чате. Возможно, нам придется в будущем расширить этот список, если будет найден какой-то очевидно нечестный по отношении к другим участникам способ, который, тем не менее, соответствует этим правилам.
Данные
train.csv — тренировочное множество
test.csv — тестовое множество
sample_submission.csv — пример решения в правильном формате
Naming baseline.ipynb — код базовое решение
baseline_submission.csv — базовое решение
Обратите внимание, организаторы конкурса позаботились о подрастающем поколении и выложили базовое решение задачи, которое дает качество по f1 около 0.1. Я первый раз участвую в соревнованиях и первый раз такое вижу 🙂
Итак, ознакомившись с самой задачей и требованиями по ее решению, перейдем к плану решения.
План решения задачи
Настройка технических инструментов
Загрузим библиотеки
Напишем вспомогательные функции
Предобработка данных
Загрузим данные
Посмотрим на данные и сделаем копии
Переведем все символы из текста в нижний регистр
Удалим названия стран
Удалим знаки и спецсимволы
Удалим цифры
Удалим… первый список стоп-слов. Вручную!
Проведем транслитерацию русского текста в латиницу
Запустим автоматическое составление списка топ 50 самых часто встречающихся слов & Drop it smart. Первый ЧИТ
Генерация и анализ фич
Посчитаем дистанцию Левенштейна
Посчитаем нормированную дистанцию Левенштейна
Визуализируем фичи
Сопоставим слова в тексте для каждой пары и сгенерим большую кучу признаков
Сопоставим слова из текста со словами из названий топ 50 холдинговых брендов нефтехимической, строительной отраслей. Получим вторую большую кучу признаков. Второй ЧИТ
Готовим данные для подачи в модель
Настройка и обучение модели
Итоги соревнования
Источники информации
Теперь, когда мы ознакомились с планом проведения исследования, перейдем к его реализации.
Настройка технических инструментов
Загрузка библиотек
Собственно здесь все просто, для начала установим недостающие библиотеки
Напишем вспомогательные функции
Хорошим тоном считается вместо копи паста большого куска кода указывать функцию в одну строчку. Мы так и будем делать, почти всегда.
Утверждать, что качество кода в функциях отлиное не буду. Местами его точно следует оптимизировать, но в целях быстрого исследования, достаточно будет только точности расчетов.
Итак, первая функция переводит текст в нижний регистр
Следующие четыре функции помогают визуализировать пространство исследуемых признаков и их способность разделять объекты по целевым меткам — 0 или 1.
Пятая функция предназначена для формирования таблицы угадываний и ошибок алгоритма, более известной как таблица сопряжения.
Иными словами, после формирования вектора прогнозов, нам потребуется сопоставить прогноз с целевыми метками. Результатом такого сопоставления должна получиться таблица сопряжения для каждой пары компаний из обучающей выборки. В таблице сопряжения для каждой пары будет определен результат соответствия прогноза к классу из обучающей выборки. Классификация соответствия принята такой: ‘True positive’, ‘False positive’, ‘True negative’ или ‘False negative’. Эти данные очень важны для анализа работы алгоритма и принятия решений по доработке модели и признакового пространства.
Шестая функция предназначена для формирования матрицы сопряжения. Не путайте с таблицей сопряжения. Хотя одно следует из другого. Вы сами все увидите дальше
Седьмая функция предназначена для визуализации отчета о работе алгоритма, который включает в себя матрицу сопряжения, значения метрик precision, recall, f1
С помощью восьмой и девятой функции проведем анализ на полезность признаков для используемой модели из Light GBM с точки зрения значения коэффициента ‘Information gain’ для каждого исследуемого признака
Десятая функция нужна для формирования массива количества совпадающих слов для каждой пары компаний.
Эту функцию также можно использовать для формирования массива НЕ совпадающих слов.
Одинадцатая функция проводит транслитерацию русского текста в латиницу
Тринадцатая и четырнадцатая функции нужны для просмотра и формирования таблицы дистанции Левенштейна и других важных показателей.
Что это вообще за таблица, какие в ней метрики и как она формируется? Давайте рассмотрим пошагово формирование таблицы:
Предобработка данных
Из моего небольшого опыта именно предобработка данных в широком смысле этого выражения занимает большее время. Пойдем по порядку.
Загрузим данные
Здесь все очень просто. Загрузим данные и заменим название столбца с целевой меткой «is_duplicate» на «target». Это делается для удобства использования функций — некоторые из них были написаны в рамках более ранних исследований и они используют название столбца с целевой меткой как «target».
Посмотрим на данные
Данные загрузили. Давайте посмотрим сколько всего объектов и насколько они сбалансированны.
Таблица №1 «Баланс меток»
Объектов не мало — почти 500 тысяч и они вообще никак не сбалансированы. То есть из почти 500 тысяч объектов, всего менее 4 тысяч — имеют целевую метку 1 (менее 1%)
Давайте посмотрим на саму таблицу. Посмотрим на первые пять объектов с разметкой 0 и первые пять объектов с разметкой 1.
Таблица №2 «Первые 5 объектов класса 0», таблица №3 «Первые 5 объектов класса 1»
Сразу напрашиваются некоторые простые шаги: привести текст к одному регистру, убрать всякие стоп-слова, типа ‘ltd’, удалить страны и заодно названия географических объектов.
Собственно, примерно так в этой задаче может проходить решение — делаешь какую-нибудь предобработку, убеждаешься в том, что она работает как надо, запускаешь модель, смотришь качество и анализируешь выборочно объекты, на которых модель ошибается. Именно так я и проводил исследование. Но в самой статье дано итоговое решение и качество работы алгоритма после каждой предобработки не разбирается, в конце статьи мы проведем итоговый разбор. Иначе статья была бы неописуемых размеров 🙂
Сделаем копии
Если честно, то не знаю зачем я это делаю, но почему-то всегда это делаю. Сделаю и в этот раз
Переведем все символы из текста в нижний регистр
Удалим названия стран
Надо отметить, что организаторы конкурса — большие молодцы! Вместе с заданием они дали ноутбук с очень простым baseline, в котором был предоставлен, в том числе и нижеприведенный код.
Удалим знаки и спецсимволы
Удалим цифры
Удаление цифр из текста прямо в лоб, в первой попытке сильно испортило качество модели. Код я здесь приведу, но по факту он не использовался.
Также обратите внимание, что до этого момента мы проводили преобразование прямо в столбцах, которые нам были даны. Давайте теперь будем создавать новые столбцы для каждой предобработки. Столбцов получится больше, зато если где-то на каком-то этапе предобработки произойдет сбой — ничего страшного, делать все с самого начала не нужно, ведь у нас будут столбы с каждого этапа предобработки.
Удалим… первый список стоп-слов. Вручную!
Теперь предлагается определить и удалить стоп-слова из списка слов в названиях компаний.
Список мы составили на основании ручного просмотра обучающей выборки. По логике, такой список нужно составлять автоматически, используя следующие подходы:
Давайте выборочно проверим, что наши стоп слова были действительно удалены из текста
Таблица №4 «Выборочная проверка работы кода по удалению стоп-слов»
Вроде все работает. Удалены все стоп-слова, которые отделены пробелом. То, что мы и хотели. Двигаемся дальше.
Проведем транслитерацию русского текста в латиницу
Я использую для этого свою самописную функцию и библиотеку cyrtranslit. Вроде работает. Проверял вручную.
Давайте посмотрим на пару с id 353150. В ней второй столбец («name_2») имеет слово «мишлен», после предобработки слово уже пишется так «mishlen» (см. столбец «name_2_transliterated»). Не совсем правильно, но явно лучше.
Таблица №5 «Выборочная проверка кода по транслитерации»
Запустим автоматическое составление списка топ 50 самых часто встречающихся слов & Drop it smart. Первый ЧИТ
Немного мудреный заголовок. Давайте по порядку разберем, что мы тут будем делать.
Во-первых, мы объединим текст из первого и второго столбца в один массив и посчитаем для каждого уникального слова, количество раз, которое оно встречалось.
Во-вторых, выберем топ 50 таких слов. И казалось бы можно их удалить, но нет. В этих словах могут быть названия холдингов (‘total’, ‘knauf’, ‘shell’. ), а это очень важная информация и ее нельзя потерять, так как далее мы будем ее использовать. Поэтому мы пойдем на читерский (запрещенный) прием. Для начала, на основании внимательного, выборочного изучения обучающей выборки, составим список названий часто встречающихся холдингов. Список будет не полный, иначе это было бы совсем не честно 🙂 Хотя, так как мы не гонимся за призовым местом, то почему бы и нет. Затем мы сравним массив топ 50 часто встречающихся слов со списком названий холдингов и выкинем из списка слова, которые совпадают с названиями холдингов.
Теперь второй список стоп-слов готов. Можно удалять слова из текста.
Но перед тем, хотелось бы вставить небольшую ремарочку касательно читерского списка названий холдингов. То, что мы составили на основании наблюдений список из названий холдингов сильно упростило нам жизнь. Но на самом деле, мы могли составить такой список другим способом. Например, можно взять рейтинги крупнейших компаний в нефтехимической, строительной, автомобильной и других отраслях, объединить их и взять оттуда названия холдингов. Но в целях нашего исследования, мы ограничимся простым подходом. Такой подход запрещен в рамках соревнования! Более того, организаторы соревнований, работы кандидатов на призовые места проверяют на предмет запрещенных приемов. Будьте внимательны!
На этом мы закончили с предобработкой данных. Начнем генерировать новые фичи и визуально их оценивать на способность разделять объекты на 0 или 1.
Генерация и анализ фич
Посчитаем дистанцию Левенштейна
Воспользуемся библиотекой strsimpy и в каждой паре (после всех предобработок) посчитаем дистанцию Левенштейна от названия компании из первого столбца до названия компании во втором столбце.
Посчитаем нормализованную дистанцию Левенштейна
Все то же самое, что и выше, только считать мы будем нормированную дистанцию.
Посчитали, а теперь визуализируем
Визуализируем фичи
Посмотрим на распределение признака ‘levenstein’
Графики №1 «Гистограмма и ящик с усами для оценки значимости признака»

На первый взгляд, метрика может размечать данные. Очевидно не очень хорошо, но использовать ее можно.
Посмотрим на распределение признака ‘norm_levenstein’
Графики №2 «Гистограмма и ящик с усами для оценки значимости признака»

Уже лучше. А теперь, давайте посмотрим на то, как две вместе взятые фичи будут разделять пространство на объекты 0 и 1.
График №3 «Диаграмма рассеяния» 
Очень даже неплохая разметка получается. Значит не зря мы столько предобрабатывали данные 🙂
Всем же понятно, что по горизонтали — значения метрики «levenstein», а по вертикали — значения метрики «norm_levenstein», а зелененькие и черненькие точки это объекты 0 и 1. Двигаемся дальше.
Сопоставим слова в тексте для каждой пары и сгенерим большую кучу признаков
Ниже мы проведем сравнение слов в названиях компаний. Создадим следующие признаки:
Визуализируем некоторые признаки.
Графики №4 «Гистограмма и ящик с усами для оценки значимости признака»

График №5 «Диаграмма рассеяния»

Какая никакая, а разметка. Обратим внимание на то, что очень много компаний с целевой меткой 1 имеют ноль дублей в тексте и также очень много компаний, имеющих дубли в названиях в среднем более 12 слов относятся к компаниям с целевой меткой 0.
Давайте взглянем на табличные данные, подготовим запрос по первому случаю: дублей в названии компаний ноль, а компании одинаковые.
Очевидно, есть системная ошибка в нашей обработке. Мы не учли, что слова могут писаться не только с ошибками, но и просто слитно или наоборот раздельно там, где этого не требуется. Например, пара №9764. В первом столбце ‘bitmat’ во втором ‘bit mat’ и вот уже это не дубль, а компания та одинаковая. Или другой пример, пара №482600 ‘bridgestoneshenyang’ и ‘bridgestone’.
Что можно было бы сделать. Первое, что мне пришло в голову — сопоставлять не напрямую в лоб, а с помощью метрики Левенштейна. Но и здесь нас подстерегает засада: расстояние между ‘bridgestoneshenyang’ и ‘bridgestone’ будет не маленьким. Возможно на помощь придет лемматизация, но опять-таки сходу не ясно как можно лемматизировать названия компаний. Или можно использовать коэффициент Тамимото, но оставим этот момент для более опытных товарищей и двигаемся дальше.
Сопоставим слова из текста со словами из названий топ 50 холдинговых брендов нефтехимической, строительной и других отраслей. Получим вторую большую кучу признаков. Второй ЧИТ
На самом деле здесь целых два нарушения правил участия соревнования:
С первым способом вроде все должно быть понятно, а вот ко второму подходу требуются пояснения.
Итак, определим дистанцию Левенштейна от каждого слова в каждой строчке первого столбца с названием компании до каждого слова из списка топ нефтехимических компаний (и не только).
В случае, если отношение дистанции Левенштейна к длине слова менее или равно 0.4, то мы определяем отношение дистанции Левенштейна до выбранного слова из списка топ компаний к каждому слову из второго столбца — названия второй компании.
Если и второй коэффициент (отношение дистанции к длине слова из списка топ компаний) оказывается ниже или равен 0.4, то мы фиксируем следующие значения в таблицу:
Хотелось бы еще раз обратить внимание, на то, что предложенный способ генерации фич, достаточно ресурсоемкий и в случае получения списка из внешнего источника потребуется изменение в коде по составлению метрик.
Посмотрим на полезность признаков сквозь призму графиков

Очень хорошо.
Готовим данные для подачи в модель
У нас получилась большая таблица и далеко не все данные для анализа нам нужны. Посмотрим на названия столбцов таблицы.
Выберем те столбцы, которые будем анализировать.
Зафиксируем seed для воспроизводимости результата.
Перед тем, как окончательно обучить модель на всех доступных данных и отправить решение на проверку имеет смысл протестировать модель. Для этого разобьем обучающую выборку на условно обучающую и условно тестовую. Померим на ней качество и если нас оно устраивает, то будем отправлять решение на конкурс.
Настройка и обучение модели
В качестве модели будем использовать решающее дерево из библиотеки Light GBM.
Сильно накручивать параметры не имеет смысла. Смотрим код.
Модель настроили и обучили. Теперь давайте посмотрим на результаты.
Обратите внимание на то, что мы в качестве оценки модели используем метрику качества f1. Значит, имеет смысл регулировать уровень вероятности отнесения объекта к классу 1 или 0. Мы выбрали уровень 0.99, то есть при вероятности равной и выше 0.99 объект будет отнесен к классу 1, ниже 0.99 — к классу 0. Это важный момент — можно существенно поправить скор таким не хитрым простым трюком.
Качество вроде бы не плохое. На условно тестовой выборке алгоритм допустил ошибки при определении 222 объектов класса 0 и на 90 объектах, относящихся к классу 0 ошибся и отнес их к классу 1 (см.Matrix confusion on test(cv) data).
Давайте посмотрим какие признаки были наиболее важными, а какие нет.

Заметим, что для оценки значимости признаков мы использовали параметр ‘gain’, а не ‘split’. Это важно, так как в очень упрощенном варианте, первый параметр означает вклад признака в уменьшении энтропии, а второй указывает на то, сколько раз признак использовался для разметки пространства.
На первый взгляд, признак, который мы делали очень долго «levenstein_dist_w1_top_w_min» оказался совсем не информативным — его вклад равен 0. Но это только на первый взгляд. Он просто почти полностью дублируется по смыслу с признаком «duplicate_name_company». Если удалить «duplicate_name_company» и оставить «levenstein_dist_w1_top_w_min», то второй признак займет место первого и качество не поменяется. Проверено!
Вообще такая табличка — удобная штука особенно когда у тебя сотни признаков и модель с кучей прибамбасов и итераций 5000. Можно пачками удалять признаки и смотреть как растет от этого не хитрого действия качество. В нашем случае, удаление признаков не отразится на качестве.
Давайте посмотрим на таблицу сопряжения. В первую очередь посмотрим на объекты «False Positive», то есть те, которые наш алгоритм определил как одинаковые и отнес их к классу 1, а на самом деле они относятся к классу 0.
Да уж. Здесь и человек то сходу не определит 0 или 1. Например, пара №146825 «mitsubishi corp» и «mitsubishi corp l». Глаза говорят что это одно и тоже, а выборка говорит, что разные компании. Кому верить?
Скажем так, что сходу можно было выжать — мы выжали. Остальную работу оставим опытным товарищам 🙂
Давайте загрузим данные на сайт организатора и узнаем оценку качества работы.
Итоги соревнования
Итак, наш скор с учетом запрещенного приема: 0.5999 Без него, F1 составляет 0.4324.
Резюмируем полученный опыт.
Во-первых, мы получили воспроизводимый код и достаточно адекватную структуру файла. Из-за малого опыта я в свое время набил очень много шишек именно из-за того, что оформлял работы наспех, лишь бы получить какой-либо более-менее приятный скор. В итоге файл получался таким, что через неделю его уже было страшно открывать — настолько ничего не понятно. Поэтому, мой посыл — пишите сразу код и делайте файл читаемым, так чтобы через год можно было вернуться к данным, посмотреть для начала на структуру, понять какие шаги были предприняты и потом, чтобы каждый шаг по отдельности можно было легко разобрать. Конечно, если Вы новичок, то рассчитывать, что с первой попытки все будет получаться не стоит — код будет ломаться, будут дописываться костыли. Однако, если периодически, в процессе исследования, переписывать код заново, то на 5-7 раз переписывания Вы сами удивитесь тому, насколько код стал чище и возможно даже найдете ошибки и улучшите скор. Не забывайте про функции, очень облегчает читаемость файла.
Во-вторых, после каждой обработки данных, проверяйте, все ли прошло как задумано. Для этого надо уметь фильтровать таблицы в pandas. В этой работе много фильтрации, пользуйтесь на здоровье 🙂
В-третьих, всегда, прямо-таки всегда, в задачах классификации, формируйте и таблицу и матрицу сопряжения. По таблице Вы легко найдете на каких объектах ошибается алгоритм. Для начала старайтесь подмечать те ошибки, которые называют системными. Их исправление дает больший результат, чем исправление частных случаев. По матрице ошибок Вы увидите где больше ошибается алгоритм: на классе 0 или 1. Здесь Вы и будете копать в поисках ошибок. Например, я заметил, что мое дерево хорошо определяет классы 1, но допускает много ошибок на классе 0, то есть дерево часто «говорит», что этот объект класса 1, тогда как на самом деле он 0. Я предположил, что это может быть связано с уровнем вероятности отнесения объекта к классу 0 или 1. У меня уровень был зафиксирован на 0.9. Увеличение уровня вероятности отнесения объекта к классу 1 до 0.99, сделало отбор объектов класса 1 жестче и вуаля — наш скор дал существенный прирост.
Еще раз отмечу, что целью участия в соревновании у меня было не занятие призового места, а получение опыта. Учитывая, что до начала соревнования я понятия не имел как работать с текстами в машинном обучении, а в итоге за несколько дней получилась простая, но все же рабочая модель, то можно сказать цель достигнута. Также и для любого начинающего в data science, я считаю наиболее важным получение опыта, а не приз. Вернее опыт — это и есть приз. Поэтому не бойтесь участия в соревнованиях, дерзайте!
На момент публикации статьи, соревнование еще не закончено. По результатам завершения соревнования в комментарии к статье я напишу о максимальном честном скоре, о подходах и фичах, которые улучшают качество модели.
А Вы — уважаемый читатель, если располагаете идеями о том, как увеличить скор уже сейчас, пишите в комментах. Сделаете доброе дело 🙂















