Как научиться спамить
Как правильно спамить по ВК!
Перейти к содержимому
- Главная
- Свежие темы
- Спросить
- Поиск
- Правила
- Новости zismo
- Магазин
- Рефералы
- Еще
- Быстрый переход
- Войти
- Регистрация
- Форум ZiSMO.biz
Что такое спам-электронная почта: определение, советы
Спам-электронная почта, также известная как спам, - это электронное письмо, отправленное без явного согласия получателя. Спам-сообщения обычно представляют собой попытку продать сомнительные товары или являются откровенно лживыми. Это темная сторона электронного маркетинга. С 1990-х годов спам-электронная почта становится все более продвинутым явлением с точки зрения охвата и технических решений для обхода ограничений.
Какова цель спама?
Основная идея спама - получение прибыли.Массовая рассылка электронной почты дешевле и проще по сравнению с обычной почтой. Ежедневно по всему миру отправляется около 250 миллиардов писем, 45% из них - спам. Несмотря на то, что коэффициент конверсии невелик - по данным TechRadar, один ответ на 12 500 000 спамерских писем - все же стоит потраченных на него спамеров.
В большинстве случаев спамеры маскируют нежелательные электронные письма под маской рекламных акций, предлагающих что-то от «идеального диетического препарата» до «100% рабочего средства для мужского здоровья». Помимо рекламы, к наиболее популярным типам спама относятся материалы для взрослых и электронные письма, обещающие финансовую независимость с помощью простых инструкций.
Согласно Регистру известных спамерских операций (ROKSO), большая часть спам-активности в мире исходит от примерно сотни так называемых «спам-банд», действующих в основном из США, России и Китая.
Почему я получаю спам?
- Ваш адрес электронной почты был раскрыт во время утечки данных
- Ваша электронная почта была собрана специализированным инструментом
- Ваш адрес электронной почты был украден из чьего-то списка контактов
- Ваш адрес электронной почты был сгенерирован случайным образом
- Нечестная компания продала вашу электронную почту
- Ваш адрес электронной почты был раскрыт во время утечки данных. Это основная причина распространения спама по электронной почте, которое случается даже с такими крупными организациями, как Adobe, LinkedIn, Last.FM. Это угроза безопасности, поскольку в ней могут быть имена, пароли и адреса электронной почты. Спамеры используют эти данные для незаконной деятельности, зная, что большинство электронных писем являются активными.
- Ваша электронная почта была обработана специализированным инструментом. Если вы когда-либо публиковали свой адрес электронной почты в Интернете, спамеры могут украсть его, используя инструменты для сканирования Интернета на наличие символа @, который в основном используется в начале домена электронной почты - например, bob_behappy @ mail.com.
- Ваш адрес электронной почты был украден из чьего-то списка контактов. Если спамеры узнают адрес электронной почты и пароль вашего друга, они сканируют список контактов, чтобы получить новые адреса и рассылать еще больше спама.
- Ваш адрес электронной почты был создан случайным образом. Киберпреступники комбинируют общие имена пользователей с популярными доменными именами, такими как @ gmail.com или @ yahoo.com. Они рассылают спам на все сгенерированные адреса электронной почты, и если письмо было доставлено и открыто, это означает, что адрес электронной почты настоящий.
- Нечестная компания продала вашу электронную почту. Некоторые грязные игроки на рынке электронной почты продают свои списки рассылки спамерам.
Спам против фишинга
Фишинг - это продвинутый тип спама. Воры маскируются под известные бренды с отличной репутацией, чтобы получить конфиденциальные данные, такие как имена пользователей, пароли, кредитные карты, банковский счет и т. Д. Они обычно пугают или возбуждают пользователей, приводя их на поддельный веб-сайт, где обманывают людей за свои деньги. .
Между тем, спам - это массовая копия, рассылаемая сразу множеству людей, в основном в попытке продать сомнительные продукты, такие как революционные средства защиты, схемы быстрого обогащения и т. Д. Он не такой изощренный, как фишинг, и не требует богатая техническая подготовка.
Как мне остановить спам в электронной почте?
- Пометить подозрительные письма как спам
- Никогда не публикуйте свой адрес электронной почты на веб-сайтах
- Не открывать спам-письма
- Не сообщать адрес электронной почты неизвестным компаниям
- Настроить фильтры ESP
Хотя поставщики услуг электронной почты, такие как Gmail, Outlook, Yahoo и т. Д.вооружены спам-фильтрами для обеспечения вашей безопасности, этого может быть недостаточно, поэтому вот что вы можете сделать, чтобы уменьшить спам:
- Пометить подозрительные письма как спам. Таким образом, вы избегаете взаимодействия с опасными сообщениями электронной почты. В то же время вы сообщаете фильтрам спама, что электронные письма, подобные тому, который вы пометили как спам, являются нежелательными. Дальнейшие электронные письма от этого отправителя автоматически попадут в вашу папку для спама.
- Никогда не публикуйте свой адрес электронной почты на веб-сайтах. Найти адреса электронной почты в Интернете несложно. Просто введите «gmail.com» в Google. может хватить, чтобы найти тысячи адресов.
- Не открывать спам-письма. Когда вы открываете письмо со спамом, чего делать не следует, спамеры понимают, что адрес действителен. Ожидайте больше спама в своем почтовом ящике.
- Не сообщайте адрес электронной почты неизвестным компаниям. Делиться вашими данными с незнакомцами - плохая идея, поскольку самое меньшее, что они могут сделать, - это продать свой список рассылки спамерам.
- Настроить фильтры ESP. Создайте фильтры, чтобы блокировать сообщения, содержащие определенные слова или фразы, ограничивать размер входящих сообщений, блокировать определенные адреса домена или электронные письма с вложениями. Вот как это сделать в Gmail.
Существуют ли законы о спаме?
Отношение к спаму в разных странах разное. Давайте посмотрим на самые популярные законы о борьбе со спамом по странам:
Что закон требует от законных отправителей электронной почты? Закон CAN-SPAM, например, требует, чтобы компании использовали подписку для добавления пользователей, добавляли видимый и рабочий механизм отказа в каждом электронном письме, использовали строки темы, относящиеся к содержанию внутри электронного письма, и показывали законный физический адрес компания отправителя.
Несмотря на существующие законы о борьбе со спамом, Соединенные Штаты занимают первое место по количеству операций со спамом. По данным Statista, более 30% спама приходит из США или Китая.
Как предотвратить пометку моих писем как спам?
- Позаботьтесь о репутации отправителя
- Используйте надлежащие инструменты аутентификации
- Проверять электронную почту на спам
- Работа над высоким открытием
- Сделайте релевантный контент
- Зарегистрированные пользователи
- Используйте надежную рассылку электронной почты
Если вы рассылаете массовые рассылки для продвижения своего бизнеса, ящик для спама - худшее место для вашей электронной почты.Следуйте этим рекомендациям, чтобы держаться подальше от спам-фильтров:
- Позаботьтесь о репутации отправителя. Репутация отправителя - это оценка, присваиваемая отправителю на основе качества почтовых кампаний, их частоты, объема и взаимодействия с пользователем. Избегайте отправки слишком большого количества писем или слишком часто, потому что это подает негативный сигнал фильтрам ESP, и ваши будущие письма будут считаться спамом.
- Используйте подходящие инструменты аутентификации. Убедитесь, что служба массовой рассылки, которую вы используете, правильно проходит аутентификацию с проверками DKIM и SPF.SendPulse предоставляет пользователям надежный SMTP-сервер, гарантирующий, что ваши электронные письма попадут в почтовый ящик подписчиков.
- Проверять электронную почту на спам. Используйте средства проверки спама в электронной почте - инструменты, которые позволяют прогнозировать реакцию наиболее популярных ESP на вашу электронную почту, получать отзывы о ней и вносить изменения перед отправкой.
- Работа над высоким открытием. Тема письма в основном формирует процент открытий, поэтому сделайте ее интересной, интригующей и, что еще важнее, релевантной содержанию электронного письма.Электронные кампании с высоким процентом открытий указывают на то, что подписчикам нравятся ваши письма, что обеспечивает отличную доставляемость писем.
- Делайте релевантный контент. Отправляйте актуальные информационные бюллетени и рекламные акции с помощью персонализации и сегментации. Разделите свою аудиторию на группы, у которых есть что-то общее, например возраст, пол, местоположение, и сделайте свои электронные письма более ценными.
- Пользователи, включившие подписку. Закон требует отправлять электронную почту только тем пользователям, которые добровольно предоставили вам свои адреса электронной почты.Используйте метод двойной подписки, чтобы убедиться, что подписчики заинтересованы в людях, которые с меньшей вероятностью отметят ваше письмо как спам.
- Воспользуйтесь надежной службой массовой рассылки электронной почты. Обычно при массовой рассылке электронных писем с ваших серверов вы должны заботиться об управлении инфраструктурой и репутацией вашего сервера. Поставщик услуг массовой рассылки электронной почты берет на себя эту черновую работу. SendPulse точно знает!
Если вы хотите быть отправителем электронной почты с высокой репутацией, прочтите эту статью в блоге и узнайте, как предотвратить попадание в спам.
Последнее обновление: 2020-03-31
Рейтинг пользователей: 4 / 5 (7)
.Как создать простой классификатор машинного обучения для обнаружения спама

В этом руководстве мы начнем с описания проблемы, а затем перейдем к простому решению ее с помощью техники машинного обучения, называемой наивным байесовским классификатором . Это руководство требует некоторого опыта программирования и статистики, но не требует предварительного опыта машинного обучения.
Обнаружение спама
Вы работаете инженером-программистом в компании, которая предоставляет услуги электронной почты миллионам людей.В последнее время спам стал серьезной проблемой, из-за которой ваши клиенты уходили. Ваш текущий спам-фильтр отфильтровывает только те письма, которые ранее были помечены вашими клиентами как спам. Однако спамеры стали более умными, и чтобы ваши клиенты не уходили, вам дается задание предсказать, является ли электронное письмо спамом.
Данные для обучения и тестирования
Чтобы создать алгоритм для этого, вам необходимо научить вашу программу, как выглядит спам-электронное письмо (и как выглядят не-спам-сообщения).К счастью, у вас есть все предыдущие электронные письма, отмеченные вашими клиентами как спам. Вам также нужен способ проверить точность вашего спам-фильтра. Одна из идей - протестировать его на тех же данных, которые вы использовали для обучения. Однако это может привести к серьезной проблеме в ML, называемой переобучением , что означает, что ваша модель слишком смещена в сторону обучающих данных и может не работать так же хорошо с элементами вне этого обучающего набора. Один из распространенных способов избежать этого - разделить помеченные данные 70/30 для обучения / тестирования.Это гарантирует, что вы будете тестировать данные, отличные от данных, на которых вы тренировались. Важно отметить, что в наборах данных необходимо сочетание как спам-данных, так и данных, не относящихся к спаму, а не только спам-данных. Вы действительно хотите, чтобы ваши обучающие данные были максимально похожи на реальные данные электронной почты, я связал хороший набор данных внизу этого сообщения.
Теорема Байеса
Теорема Байеса математически выражается как:
https://en.wikipedia.org/wiki/Bayes'_theoremПо сути, это дает нам трюк для вычисления условных вероятностей в ситуациях, когда это невозможно. чтобы напрямую измерить их.Например, если вы хотите рассчитать вероятность заболевания раком, учитывая его возраст, вместо того, чтобы проводить общенациональное исследование, вы можете просто взять существующие статистические данные о возрастном распределении и раке и включить их в теорему Байеса. Не волнуйтесь, если теория статистики сбивает с толку, она станет более понятной, когда она переведена в код. Однако я рекомендую вернуться назад и попытаться понять это позже, поскольку непонимание теоремы Байеса является корнем многих логических ошибок.
Наивный байесовский классификатор
Для нашей задачи мы можем установить A равным вероятности того, что письмо является спамом, а B - его содержимым. Если P (A | B)> P ( ¬ A | B), то мы можем классифицировать письмо как спам, в противном случае - нет. Обратите внимание: поскольку теорема Байеса приводит к делителю P (B) в обоих случаях, мы можем удалить его из уравнения для нашего сравнения. Это оставляет: P (A) * P (B | A)> P ( ¬ A) * P (B | ¬ A). Вычисление P (A) и P ( ¬ A) тривиально, это просто процент вашего обучающего набора, который является спамом по сравнению с не спамом:
# выполняется один раз на обучающих данных def поезд: всего = 0 numSpam = 0 для электронной почты в trainData: если электронная почта.label == СПАМ: numSpam + = 1 всего + = 1 pA = numSpam / (float) total pNotA = (total - numSpam) / (float) total
Более сложная часть - это вычисление P (B | A) и P (B | ¬ A). Чтобы вычислить их, мы будем использовать мешок слов модели . Это довольно простая модель, которая рассматривает фрагмент текста как набор отдельных слов, не обращая внимания на их порядок. Для каждого слова мы вычисляем процент его появления в спам-письмах, а также в электронных письмах, не относящихся к спаму.Мы называем эту вероятность P (B_i | A_x). Конкретный пример: чтобы вычислить P (бесплатно | спам), мы посчитаем, сколько раз слово бесплатно встречается во всех спам-сообщениях вместе взятых, и разделим это на общее количество слов во всех спам-сообщениях вместе взятых. Поскольку это статические значения, мы можем рассчитать их на этапе обучения.
# выполняется один раз для данных обучения def поезд: всего = 0 numSpam = 0 для электронной почты в trainData: если email.label == СПАМ: numSpam + = 1 всего + = 1 processEmail (электронная почта.body, email.label) pA = numSpam / (float) total pNotA = (total - numSpam) / (float) total
# подсчитывает слова в определенном письме def processEmail (тело, метка): слово в теле: если label == СПАМ: trainPositive [слово] = trainPositive.get (слово, 0) + 1 PositiveTotal + = 1 еще: trainNegative [слово] = trainNegative.get (слово, 0) + 1 negativeTotal + = 1
# дает условную вероятность p (B_i | A_x) def conditionalWord (слово, спам): если спам: return trainPositive [слово] / (float) positiveTotal return trainNegative [word] / (float) negativeTotal
Чтобы получить P (B | A_x) для всего электронного письма, мы просто берем произведение значения P (B_i | A_x) для каждого слова i в электронном письме.Обратите внимание, что это делается во время классификации, а не во время первоначального обучения.
# дает условную вероятность p (B | A_x) def conditionalEmail (тело, спам): результат = 1.0 слово в теле: результат * = conditionalWord (слово, спам) return conditionalEmail
Наконец-то у нас есть все компоненты, необходимые для того, чтобы собрать все воедино. Последний кусок, который нам нужен, - это классификатор, который вызывается для каждого электронного письма и использует наши предыдущие функции для их классификации.
# классифицирует новое письмо как спам или не как спам def classify (электронная почта): isSpam = pA * conditionalEmail (электронная почта, True) # P (A | B) notSpam = pNotA * conditionalEmail (электронная почта; False) # P ( ¬ A | B) return isSpam> notSpam
Поздравляем! Вы успешно написали наивный байесовский классификатор с нуля!
Однако есть некоторые изменения, которые необходимо внести, чтобы он работал оптимально и без ошибок:
Сглаживание Лапласа:
Одна вещь, которую мы не упомянули, - что произойдет, если в электронном письме появится слово классифицируемый вами не входил в ваш тренировочный набор.Чтобы справиться с этим случаем, нам нужно добавить коэффициент сглаживания. Это лучше всего иллюстрируется в модифицированном коде ниже, где добавлен коэффициент сглаживания альфа:
# дает условную вероятность p (B_i | A_x) со сглаживанием def conditionalWord (слово, спам): если спам: return (trainPositive.get (word, 0) + alpha) / (float) (positiveTotal + alpha * numWords) return (trainNegative.get (word, 0) + alpha) / (float) (negativeTotal + alpha * numWords)
Log-Space
Наша текущая реализация в значительной степени полагается на умножение с плавающей запятой.Чтобы избежать всех потенциальных проблем с умножением очень маленьких чисел, обычно логарифмируют уравнение, чтобы преобразовать все умножения в сложение. Я не реализовал это в моем примере кода, но на практике это настоятельно рекомендуется.
TF-IDF
В целом, модель набора слов для классификации текста довольно наивна и может быть улучшена чем-то другим, например TF-IDF.
N-граммы
Еще одно улучшение, которое мы могли бы сделать, - это не просто подсчет отдельных слов.N-граммы - это метод, в котором каждый рассматривает наборы из N последовательных слов и использует их для вычисления вероятностей. Это имеет смысл, потому что на английском языке 1 грамм «хорошо» означает нечто иное, чем 2-граммовое «не хорошо».
Обратите внимание, что пример кода написан для оптимального обучения, а не для производительности. Есть несколько очевидных, тривиальных изменений, которые могут значительно улучшить его производительность.
Пример набора данных: https://spamassassin.apache.org/publiccorpus/
Если вам понравилась эта статья, порекомендуйте ее и подпишитесь на автора, чтобы помочь другим увидеть ее!
Связанные
Теги
Подпишитесь, чтобы получать ежедневные обзоры главных технических новостей!
.Как разработать систему фильтрации спама с алгоритмом машинного обучения | Автор: Си Хуай Ган
Изучите, составьте график и визуализируйте свои данные
В моей повседневной работе в Visa в качестве разработчика программного обеспечения электронная почта является одним из очень важных инструментов для общения. Для эффективного общения одна из важных функций - фильтрация спама.
Так как же на самом деле работает система фильтрации спама? Можем ли мы создать что-то подобное с нуля?
Основная цель этих двух частей статьи - показать, как можно создать систему фильтрации спама с нуля.
Краткое изложение этой статьи представлено ниже:
- EDA (исследовательский анализ данных)
- Предварительная обработка данных
- Извлечение признаков
- Оценка и показатели
- Улучшение с помощью внедрения + нейронная сеть (часть 2)
- Сравнение Алгоритм машинного обучения и глубокое обучение (часть 2)
Приступим!
Исследовательский анализ данных - очень важный процесс науки о данных. Это помогает специалисту по обработке данных понять имеющиеся данные и связать их с бизнес-контекстом.
Инструменты с открытым исходным кодом, которые я буду использовать для визуализации и анализа данных, - это Word Cloud.
Word Cloud - это инструмент визуализации данных, используемый для представления текстовых данных. Размер текстов на изображении представляет частоту или важность слов в обучающих данных.
Действия, которые необходимо предпринять в этом разделе:
- Получить данные электронной почты
- Изучить и проанализировать данные
- Визуализировать данные обучения с помощью облака слов и столбчатой диаграммы
Получить данные о спаме
Данные важны ингредиенты, прежде чем мы сможем разработать какой-либо значимый алгоритм.Знание, где взять ваши данные, может быть очень полезным инструментом, особенно если вы только новичок.
Ниже приведены несколько известных репозиториев, где вы можете легко получить тысячи типов данных за бесплатно:
- UC Irvine Machine Learning Repository
- Kaggle datasets
- AWS datasets
Для этого набора данных о рассылке спама по электронной почте , он распространяется Spam Assassin, вы можете щелкнуть эту ссылку, чтобы перейти к набору данных. Есть несколько категорий данных, вы можете прочитать файл readme .html , чтобы получить дополнительную справочную информацию о данных.
Короче говоря, в этом репозитории присутствуют два типа данных: ham (без спама) и spam data. Кроме того, в любительских данных есть простые и сложные, что означает, что есть некоторые данные, не относящиеся к спаму, которые очень похожи на данные спама. Это может затруднить принятие решения нашей системой.
Если вы используете Linux или Mac, просто сделайте это в терминале, wget - это просто команда, которая поможет вам загрузить файл по адресу:
wget https: // spamassassin.apache.org/old/publiccorpus/20030228_easy_ham.tar.bz2wget https://spamassassin.apache.org/old/publiccorpus/20030228_easy_ham_2.tar.bz2wget https://spamassassin.apache.org/old/publiccorpus/20030228_spam bz2wget https://spamassassin.apache.org/old/publiccorpus/20050311_spam_2.tar.bz2wget https://spamassassin.apache.org/old/publiccorpus/20030228_hard_ham.tar.bz2
Давайте запустим код и посмотрим, что это за контент. внутри всех этих писем!
Изучите и проанализируйте данные
Давайте посмотрим на содержание сообщения электронной почты и получим общее представление о данных
Ham
Это похоже на обычный ответ по электронной почте другому человеку, который несложно классифицировать как ветчина:
Это немного запутанное решение, но может быть полезно -Если у вас есть внутренний zip-привод (не уверен насчет внешнего) и
, который вы BIOS поддерживает, используя zip в качестве дисковода для гибких дисков, вы можете использовать
загрузочный zip-диск со всеми соответствующими утилитами dos.
Hard Ham (электронная почта для радиолюбителей, которая сложнее)
Hard Ham действительно труднее отличить от данных спама, поскольку они содержат некоторые ключевые слова, такие как ограниченный по времени заказ, специальное предложение «Снова в школу» , это сделать это очень подозрительно!
Здравствуйте, друзья!Надеемся, у вас была приятная неделя. На прошлой неделе были викторины следующие вопросы:
Что общего у этих трех фильмов: «Одно сумасшедшее лето», «Шепот в темноте», «Моби Дик»? = 20
Ответ: Остров Нантакет
Поздравления нашим победителям:
Кейтлин О. .из Нью-Бедфорда, Массачусетс
Бриджид М. из Марблхед, Массачусетс
Специальное предложение "Снова в школу"!
В течение ограниченного времени закажите нашу корзину закусок "Снова в школу" и получите скидку =
20% И БЕСПЛАТНУЮ ДОСТАВКУ!
Спам
Одно из данных обучения спаму действительно похоже на одно из тех писем с рекламой спама в нашей папке нежелательной почты:
ВАЖНАЯ ИНФОРМАЦИЯ:Новые доменные имена наконец доступны для широкой публики по сниженным ценам.Теперь вы можете зарегистрировать одно из замечательных новых доменных имен .BIZ или .INFO, а также оригинальные имена .COM и .NET всего за 14,95 доллара США. Эти совершенно новые доменные расширения были недавно одобрены ICANN и имеют те же права, что и исходные доменные имена .COM и .NET. Самым большим преимуществом является то, что доменные имена .BIZ и .INFO в настоящее время более доступны. то есть будет намного проще зарегистрировать привлекательное и легко запоминающееся доменное имя по той же цене. Посетите: http: //www.affordable-domains.com сегодня для получения дополнительной информации.
Wordcloud
Wordcloud - это полезный инструмент визуализации, позволяющий приблизительно оценить наиболее часто встречающиеся слова в имеющихся данных.
Визуализация сообщений со спамомВизуализация сообщений без спамаИз этой визуализации вы можете заметить кое-что интересное в спаме. Многие из них содержат большое количество «спамерских» слов, таких как: бесплатно, деньги, продукт и т. Д. Такая осведомленность может помочь нам принять лучшее решение, когда дело доходит до разработки системы обнаружения спама.
Важно отметить, что облако слов отображает только частоту слов, не обязательно важность слов. Следовательно, необходимо выполнить некоторую очистку данных, такую как удаление стоп-слов, знаков препинания и т. Д. Из данных перед их визуализацией.
Визуализация модели N-грамм
Другой метод визуализации - использование гистограммы и отображение частоты наиболее часто встречающихся слов. N-грамм означает, сколько слов вы рассматриваете как одну единицу, когда вычисляете частоту слов.
В этой статье я показал на примере 1 грамм и 2 грамма. Вы определенно можете поэкспериментировать, попробовав более крупную модель n-грамма.
Визуализация гистограммы 1-граммовой модели Визуализация гистограммы 2-граммовой моделиВажно разделить ваш набор данных на обучающий набор и тестовый набор , чтобы вы могли оценить производительность своей модели с помощью набора тестов перед развертыванием в производственной среде.
Одна важная вещь, на которую следует обратить внимание при выполнении разбиения на обучающий тест, - убедиться, что распределение данных между обучающим набором и тестовым набором одинаково.
В данном контексте это означает, что процент спам-сообщений в обучающем наборе и тестовом наборе должен быть одинаковым.
Целевое количество для обучающих данных Распределение обучающих данных Целевое число для тестовых данных Распределение тестовых данныхРаспределение между данными поездов и тестовыми данными очень похоже, оно составляет около 20–21%, так что мы готовы приступить к обработке наших данных!
Очистка текста
Очистка текста - очень важный шаг в машинном обучении, поскольку ваши данные могут содержать много шума и нежелательных символов, таких как знаки препинания, пробелы, числа, гиперссылки и т. Д.
Некоторые стандартные процедуры, которые обычно используются людьми:
- преобразование всех букв в нижний / верхний регистр
- удаление чисел
- удаление знаков препинания
- удаление пробелов
- удаление гиперссылки
- удаление стоп-слов, таких как a, примерно вверху, внизу, делаем , и список продолжается ...
- Word Stemming
- Лемматизация слов
Двумя приемами, которые могут показаться чуждыми большинству людей, являются основание слов и лемматизация слов .Обе эти техники пытаются сократить слова до самой простой формы, но делают это разными подходами.
- Выделение корней слов. Алгоритмы выделения слов работают путем удаления конца или начала слов с использованием списка общих префиксов и суффиксов, которые можно найти в этом языке. Примеры составления слов для английских слов приведены ниже:
- Лемматизация слов - Лемматизация использует словарь определенного языка и пытается преобразовать слова обратно в их базовую форму.Он попытается учесть значение глаголов и conv e вернет его к наиболее подходящей базовой форме.
Реализация этих двух алгоритмов может быть сложной и требует много размышлений и проектирования для работы с различными крайними случаями.
К счастью, библиотека NLTK предоставила реализацию этих двух алгоритмов, так что мы можем использовать ее прямо из библиотеки!
Импортируйте библиотеку и начните проектировать некоторые функции, которые помогут нам понять основы работы этих двух алгоритмов.
# Просто импортируйте их и используйте из nltk.stem import PorterStemmer
из nltk.stem import WordNetLemmatizerstemmer = PorterStemmer ()
lemmatizer = WordNetLemmatizer () dirty_text = "Он учился в доме вчера, к сожалению, вентилятор сломался" def word_stemmer (слова):
stem_words = [stemmer.stem (o) вместо o в словах]
return "" .join (stem_words) def word_lemmatizer (words):
lemma_words = [lemmatizer.lemmatize (o) вместо o в словах]
return "" .join (lemma_words)
Результат работы словаря очень очевиден, некоторые окончания слов были обрезаны
clean_text = word_stemmer (dirty_text.split (""))
clean_text # Вывод
'Он вчера учился в доме, к сожалению, сломался вентилятор'
Лемматизация преобразовала исследования -> исследования, разрывы -> break
clean_text = word_lemmatizer (dirty_text.split (""))
clean_text # Output
'Я вчера учился дома, к сожалению, сломался вентилятор'
Наш алгоритм всегда ожидает, что входные данные будут целыми числами / числами с плавающей запятой, поэтому нам нужно иметь некоторый слой извлечения признаков в средний, чтобы преобразовать слова в целые числа / числа с плавающей запятой.
Есть несколько способов сделать это, и сегодня я собираюсь представить:
- CountVectorizer
- TfidfVectorizer
- Вложение слов
CountVectorizer
Сначала нам нужно ввести все обучающие данные в CountVectorizer и CountVectorizer будет вести словарь каждого слова и его соответствующего идентификатора, и этот идентификатор будет относиться к количеству слов в этом слове во всем обучающем наборе.
Например, предложение типа «Я люблю есть яблоко и пить яблочный сок»
от sklearn.feature_extraction.text import CountVectorizer # список текстовых документовtext = ["Я люблю есть яблоко и пить яблочный сок"] # создать transformvectorizer = CountVectorizer () # токенизировать и создать словарь словаря .fit (text) # summarizeprint (vectorizer.vocabulary _) # encode documentvector = vectorizer.transform (text) # суммировать закодированный vectorprint (vector.shape) print (type (vector)) print (vector.toarray ()) # Вывод # Число, следующее за словом, является индексом слова
{ 'like': 5, 'to': 6, 'eat': 3, 'apple': 1, 'and': 0, 'drink': 2, 'juice': 4} # Индекс относится к позиции массив количества слов ниже
# "Я люблю есть яблоко и пить яблочный сок" -> [1 2 1 1 1 1 1] # яблоко с индексом 1 соответствует количеству слов 2 в массиве
TfidfVectorizer
Подсчет слов - это хорошо, но можем ли мы сделать лучше? Одна проблема с простым подсчетом слов заключается в том, что некоторые слова, такие как «the», «и», будут встречаться много раз, и на самом деле они не добавляют слишком много значимой информации.
Еще одна популярная альтернатива - TfidfVectorizer. Помимо подсчета количества слов в каждом слове, словах, которые часто встречаются в нескольких документах или предложениях, векторизатор пытается их уменьшить.
Для получения дополнительной информации о CountVectorizer и TfidfVectorizer, пожалуйста, прочтите эту замечательную статью, в которой я также получил наибольшее понимание.
Встраивание слов
В Интернете есть много замечательных статей, в которых объясняются детали встраивания слов и алгоритм их создания.Итак, я пропущу большинство из них и попытаюсь дать вам общее представление о том, что это такое.
Встраивание слова пытается преобразовать слово в векторизованный формат, и этот вектор представляет положение этого слова в пространстве более высокой размерности.
Для слов, которые имеют похожее значение, косинусное расстояние этих двух векторов слов будет короче, и они будут ближе друг к другу.
Фактически, эти слова являются векторами, так что вы даже можете выполнять над ними математические операции! Конечным результатом этой операции будет другой вектор, который отображается в слово.Неожиданно эти операции дают потрясающий результат!
Пример 1: Король-Мужчина + Женщина = Королева
Пример 2: Мадрид-Испания + Франция = Париж
Пример 3: Ходьба-Плавание + Плавание = Ходьба
Проще говоря, встраивание слов - очень мощное представление слов и одним из хорошо известных методов создания этого вложения является Word2Vec.
Ух! После преобразования всех предложений в некоторую форму векторов самое интересное в наших статьях → Реализация алгоритма !
TfidfVectorizer + Наивный байесовский алгоритм
Первый подход, который я выбрал, заключался в использовании TfidfVectorizer в качестве инструмента извлечения признаков и наивного байесовского алгоритма для прогнозирования.Наивный Байесовский алгоритм - это простой и вероятностный традиционный алгоритм машинного обучения.
Он был очень популярен даже в прошлом для решения таких задач, как обнаружение спама. Подробности наивного байесовского алгоритма можно найти в этой статье Devi Soni , которая представляет собой краткое и ясное объяснение теории наивного байесовского алгоритма.
Использование библиотеки Naive Bayes, предоставляемой библиотекой sklearn , избавляет нас от многих хлопот при реализации этого алгоритма самостоятельно. Мы можем легко сделать это с помощью нескольких строк кода
из sklearn.naive_bayes import GaussianNBclf.fit (x_train_features.toarray (), y_train) # Вывод результата - точность прогноза
# Точность: 0,995
clf.score (x_train_features.toarray (), y_train) # Точность: 0,932
clf. Score (x_test_features.toarray (), y_test)
Мы достигаем точности 93,2%. Но точность - это не только метрики для оценки производительности алгоритма. Давайте попробуем другие показатели оценки, и это может помочь нам полностью понять, насколько хорошо работает эта модель.
Недостатки точности
Когда дело доходит до оценки производительности модели науки о данных, иногда точность может быть не лучшим показателем.
Некоторые проблемы, которые мы решаем в реальной жизни, могут иметь очень несбалансированный класс, и использование точности может не дать нам достаточно уверенности, чтобы понять производительность алгоритма.
В проблеме рассылки спама по электронной почте, которую мы пытаемся решить, данные спама составляют примерно 20% наших данных. Если наш алгоритм предсказывает, что вся электронная почта не является спамом, точность достигает 80%.
И для некоторой проблемы, которая имеет только 1% положительных данных, прогнозирование всей выборки как отрицательной даст им точность 99%, но мы все знаем, что такая модель бесполезна в сценарии реальной жизни.
Precision & Recall
Precision & Recall - это общие метрики оценки, которые люди используют при оценке несбалансированной классовой модели классификации.
Давайте попробуем понять, на какие вопросы Precision & Recall пытается ответить,
Precision : Какая доля положительных идентификаций была на самом деле правильной?
Вспомните : Какая фактическая доля реальных положительных результатов была определена правильно?
Итак, точность оценивает, когда модель предсказывает что-то положительное, насколько она точна.С другой стороны, отзыв оценивает, насколько хорошо модель находит все положительные образцы.
Математическое уравнение для точности и повторения соответствует
TP: True Positive
FP: False Positive
TN: True Negative
FN: False Negative
Матрица замешательства
Матрица замешательства очень хорошая способ понять результаты, такие как истинно положительные, ложноположительные, истинно отрицательные и т. д.
Документация Sklearn предоставила пример кода того, как построить красивую матрицу путаницы для визуализации вашего результата.Вы можете проверить это здесь или найти код в записной книжке, которой я делюсь в конце статей.
Матрица неточностей результатаТочность: 87,82%
Отзыв: 81.01%
Эта модель отзывается довольно редко, возможно, она недостаточно хорошо справляется с обнаружением спама. Что мы можем сделать лучше этого?
В этой статье я показал вам все необходимые шаги, необходимые для разработки алгоритма обнаружения спама. Просто краткое резюме:
- Изучите и поймите свои данные
- Визуализируйте данные под рукой, чтобы лучше понять - Wordcloud, N-граммовая гистограмма
- Очистка текста - Вытяжка слов и лемматизация слов
- Извлечение функций - Векторизатор счетчика , Tfidf Vectorizer, Word Embedding
- Алгоритм - Наивный Байес
- Оценка и метрики - Точность, точность, отзыв
На этом завершается первая часть демонстрации разработки алгоритма обнаружения спама.
Это часть 2 этой статьи! Я собираюсь продемонстрировать, как вы можете улучшить производительность с точки зрения точности, точности и отзывчивости модели, используя вложения слов , модели глубокого обучения и . Читайте статью здесь если интересно!
Вы можете клонировать ноутбук из Github или запустить его напрямую из Colab. Оставляйте любые вопросы в разделе комментариев ниже или задавайте мне вопросы в LinkedIn! Спасибо за чтение 😀
.Как создать детектор спама - машинное обучение Python
Вы можете получить доступ к полному курсу здесь: Создание класса детектора спама AI с текстовым AI
Расшифровка стенограммы, часть 1
Привет всем, меня зовут Мохит Дешпанде, и в этом курсе мы создадим ИИ, который сможет определять, является ли входящее письмо спамом или нет.
Итак, вы можете увидеть в некоторых оценках, которые мы собираемся получить, создавая этот ИИ, с точностью 99, 98% при определении того, является ли электронное письмо спамом или нет. И просто чтобы немного повозиться с этим, я попытался, вы знаете, я попытался отправить ИИ электронное письмо, которое я просто сфабриковал. Вот текст письма, и вы можете видеть, что оно правильно определено, что это письмо является спамом, и мы будем создавать этот ИИ. Так что мы многому научимся.
В частности, мы должны рассмотреть классификацию текста и то, как, вы знаете, мы собираемся обсудить некоторые проблемы классификации текста, и мы собираемся обсудить одну группу алгоритмов под названием Наивный Байес, которые будут полезны для наших проблема.И затем мы также собираемся обсудить этот термин «частота» и «обратная частота документов», потому что они предоставляют нам некоторые улучшения, которые мы можем использовать, чтобы помочь выявить точность нашего ИИ, и мы будем рассматривать в частности один набор данных, называемый набор данных Enron, к которому я собираюсь, как бы немного рассказать в курсе.
Это общедоступный набор данных. Вы можете скачать его, я предоставлю его в исходном коде, вы можете его скачать. И мы будем использовать это, чтобы сообщить нашему ИИ, что такое спам, а что нет.
Итак, мы делаем видеокурсы с 2012 года, и мы очень рады видеть вас на борту. Онлайн-курс - отличный способ научиться новым навыкам, многие из которых я беру сам. Курсы ZENVA состоят в основном из видеоуроков, которые вы можете просматривать и пересматривать в удобном для вас темпе столько раз, сколько захотите. У нас также есть загружаемый исходный код и файлы проекта, которые содержат все, что мы создаем на уроке. Настоятельно рекомендуется, чтобы вы писали код вместе со мной, по моему опыту, это лучший способ чему-то научиться.
И, наконец, мы увидели, что студенты, которые извлекают максимальную пользу из этих онлайн-курсов, - это те же студенты, которые составляют план и придерживаются его, конечно, в зависимости от вашей доступности и стиля обучения. И помните, что эти видео вы можете смотреть и пересматривать столько раз, сколько захотите, так что это действительно дает вам больше гибкости, чтобы вы могли адаптироваться к тому, как вы учитесь. В ZENVA мы обучили программированию и разработке игр более 200000 студентов, с 2012 года прошли более 50 курсов. (Сейчас более 350 000)
Некоторые из этих студентов использовали навыки, полученные на этих курсах, для продвижения своей карьеры. , создать компанию или опубликовать собственные приложения и игры.Еще раз спасибо за то, что присоединились, и я с нетерпением жду возможности увидеть все крутые вещи, которые вы собираетесь создавать. А теперь, без лишних слов, приступим.
Выписка 2
Всем привет. В этом видео я просто хочу познакомить вас с проблемой классификации текста. Я просто хочу дать этот краткий обзор того, что это такое, и немного о каком-то конкретном предмете, и мы рассмотрим пример, а затем мы перейдем к тому, как мы действительно можем выполнить такую классификацию.
Проблема с этой классификацией текста, иногда ее еще называют классификацией документов. Итак, классификация документов. Проблема с классификацией документов заключается в том, что для входящего документа в нем есть текст. Мы хотим иметь возможность помещать их в одну или, в некоторых случаях, в разные корзины. Например, если бы мне дали какой-то документ, возможно, я хочу знать, является ли это счет-фактурой. Вот возможная корзина, в которую он может попасть. А может, это квитанция. Итак, вот еще одна возможная корзина, в которую он может попасть, и так далее, и так далее.
Просто глядя на текст документа, я хочу иметь возможность сказать, что это за документ, и, как вы, вероятно, догадались, это требует контролируемого обучения, но это немного сложнее, чем то, что мы видели раньше, потому что вместо того, чтобы просто имея эти X и O на этой красивой двухмерной плоскости, мы имеем дело с текстовыми данными, и компьютеры действительно хороши в обработке числовых данных, но с текстовыми данными они не так хороши.
Люди, с другой стороны, мы можем просматривать текстовые данные, и это нормально.Просмотр больших объемов числовых данных для людей может быть утомительным и подверженным ошибкам. Но что касается компьютеров, им это нравится. Итак, чуть позже мы обсудим, как мы можем брать текстовые данные, нам нужно взять текстовые данные и преобразовать их в какое-то числовое представление, чтобы мы могли работать с ними, используя алгоритмы обучения. Мы должны иметь возможность работать с ним, как только числовые данные, потому что алгоритмы обучения работают с числовыми данными. И поэтому нам нужно найти способ преобразовать слова в числовое представление, чтобы мы могли работать с ними немного лучше.
Вот, в частности, хороший пример, который используется для классификации текста: предположим, у меня есть электронное письмо, и я в основном хочу классифицировать его как спам или не спам, также называемый ветчиной. Но если мне прислали электронное письмо, я хочу определить, спам это или нет, и многие почтовые службы уже имеют встроенные средства для этого. Например, как Gmail или Outlook, продукция Microsoft, у всех этих компаний уже есть способы, которые по новому входному электронному письму определяют, является ли он спамом или нет. Это хороший пример для использования, потому что он достаточно прост и состоит только из двух категорий.На самом деле это всего лишь бинарная проблема, независимо от того, спам это или нет.
Итак, это немного легче для понимания, чем, возможно, этот лучший пример… у вас есть документ или вы хотите поместить его в разные классы, потому что он может принадлежать более чем к одному из этих классов. Я могу получить квитанцию, которая также является счетом, или я могу смешивать и объединять эти вещи, но с чем-то вроде классификации электронной почты, например, фильтрацией спама, это либо спам, либо не спам. Комбинации нет.
Напомним, что мы хотим взглянуть на текст электронного письма, слова в нем, потому что некоторые слова больше указывают на то, что электронное письмо… является спамом, чем другие.И поэтому мы хотим взглянуть на текст этого электронного письма, включая часто информацию, и мы хотим создать и сконструировать ИИ, который по новому электронному сообщению может определять, является ли это спам или нет, а затем направлять его либо в ваш почтовый ящик, либо в ваш папка для спама. Как я упоминал ранее, контролируемое обучение - отличный способ выполнить эту задачу. Я собираюсь привести нашему ИИ множество примеров, помеченных примерами сообщений, которые являются спамом, и сообщений, которые не являются спамом, и затем он должен быть в состоянии узнать, какие слова или какие другие характеристики имеют спам-сообщения, а затем применить их к новый входной документ.
Как я уже упоминал, для этого у нас должно быть числовое представление, но предположим, что оно у нас есть прямо сейчас. Предположим, он уже там. Мы разберемся с этим чуть позже. Я также хочу упомянуть, что классификация текста используется не только для фильтрации спама.
На самом деле приложений очень много. Фильтрация спама - лишь одна из них. Но есть также анализ настроений. Итак, анализ настроений, который дается тексту документа, или, на самом деле, он очень широко используется в социальных сетях, учитывая твит или сообщение в Facebook, или что-то в этом роде, я хочу иметь возможность определить настроение создателя .Я хочу знать, сердится ли отправитель, расстроен или что-то в этом роде. И есть определенные слова и фразы, которые используются в этом смысле, и мы можем попытаться предсказать, например, настроение отправителя. Это особенно популярно в социальных сетях, поэтому вы можете добывать множество данных из социальных сетей. Там было много работы, а затем попытайтесь провести анализ настроений.
Еще он используется для классификации книг. Классификация книг, и я имею в виду, что если у книги есть название или что-то в этом роде, мы, например, хотим иметь возможность определить, к какому жанру она принадлежит.Учитывая некоторую информацию о книге, такую как название, автор или что-то в этом роде, мы хотим иметь возможность сказать, что это за жанр, и это очень полезно, потому что тогда вам не нужно иметь ручных людей, которые должны принимать эти решения. сами, потому что это может быть утомительно или, может быть, у них есть более важные дела. Это то, что мы можем передать алгоритму машинного обучения спискам из предыдущих неточностей. Дайте ему книгу, вы можете сказать, к какому это жанру, например, или даже классифицировать его еще дальше.
Еще одна вещь, о которой я хочу упомянуть, еще одно популярное использование этого - удобочитаемость. Читаемость. А с удобочитаемостью это больше похоже на отрывок текста, я хочу определить такие вещи, как какой уровень чтения или уровень понимания вам нужен, чтобы понять этот отрывок или, точнее, учитывая некоторые слова в этом отрывке, каково ожидаемое чтение уровень, например. Итак, вы можете заметить, что если у вас начальная или начальная школа чтения, слова могут состоять всего из одного или двух слогов, а структура предложения довольно проста, но когда вы, например, перейдете к более научному письму или письму в аспирантуре , то вы замечаете, что есть более длинные слова.
Есть слова посложнее. Может быть, структура предложения другая. Структура разная, посложнее. Оценка читабельности, мы можем посмотреть текст. Мы можем посмотреть на слова, структуру предложения, чтобы получить доступ к отрывку и определить, какой уровень понимания прочитанного будет присвоен этому отрывку текста. Так что на этом я и остановлюсь.
Итак, чтобы повторить, классификация текста или классификация документа - это проблема ввода некоторого текста, я хочу присвоить ему какой-то ярлык.Я могу присвоить ярлыки, такие как счет-фактура, квитанция, медицинская карта и так далее. Или пример, на который приятно смотреть, - это фильтрация электронной почты, и для нее предоставляется электронное письмо, я просто хочу, чтобы он говорил, является ли это спам или нет, и я могу использовать слова внутри электронного письма, чтобы помочь мне сделать это определение. Я упомянул, что существует множество различных приложений классификации текста. Я упомянул анализ настроений в социальных сетях, классификацию книг, чтобы пометить книги, какие жанры и удобочитаемость, чтобы определить, на каком уровне мы можем пометить отрывок, например, от начальной, начальной школы до науки, колледжа, аспирантуры.И это классификация текста.
Расшифровка стенограммы 3
Привет всем, меня зовут Мохит Дешпанде, и в этом видео я просто хочу представить этот алгоритм, который мы можем использовать под названием Наивный Байес, и мы собираемся обсудить его в следующем несколько видео.
В этом конкретном видео я запишу и объясню фактическое уравнение, которое мы используем, и мы рассмотрим, как мы можем сделать конкретный пример, и посмотрим, как наивный байесовский метод работает там. А потом у меня есть еще кое-что, просто подведение итогов, чтобы обсудить Наивного Байеса.Итак, как мы уже упоминали с текстовыми данными, у нас должно быть какое-то числовое представление для них, и мы хотим узнать некоторую информацию о том, будем ли мы использовать обнаружение спама, например, для этой последовательности. Поскольку это хороший пример, уравнение оказалось довольно простым и понятным. Это довольно интуитивно понятно.
Итак, мы будем придерживаться концепции фильтрации спама или обнаружения спама. Итак, фильтрация спама или обнаружение. Итак, с наивным байесовским методом и с фильтрацией спама логично предположить, что спам-сообщения, как правило, содержат больше слов, имеют другое распределение слов, чем сообщения, которые не являются спамом.Под этим я подразумеваю, например, один из примеров, на который мы рассмотрим, это слово «бесплатно» или что-то в этом роде, верно.
Таким образом, слово «бесплатно», вероятно, будет чаще использоваться в спам-сообщениях, рекламирующих как «бесплатные деньги» или «бесплатно что-то или другое». Например, слово «бесплатно» больше ассоциируется со спам-сообщениями, чем с любительскими или не спам-сообщениями. И поэтому мы можем использовать это, мы можем обозначить эти вероятности, и поэтому мы можем использовать это, чтобы лучше оценить данное входное изображение или заданный входной текст, я бы сказал, учитывая входной текст.Мы можем определить, является ли это спамом, по словам в этом письме. Итак, я хочу записать уравнение.
Итак, наивный Байес сосредотачивается на теории вероятностей во многих областях, называемой теоремой Байеса. Итак, позвольте мне это записать. Я сначала запишу это, а потом собираюсь обсудить это интуитивно. Сначала это может показаться немного пугающим, но каждая часть интуитивно понятна, и вы это увидите. Таким образом, вероятность того, что сообщение является спамом, если известно, что в нем есть какое-то слово W, равна вероятности нахождения того же слова W в спам-сообщении, умноженной на вероятность того, что у нас действительно есть спам-сообщение. разделены на то же самое здесь.Вероятность нахождения этого слова в спам-сообщении, умноженная на вероятность того, что сообщение изначально является спамом, плюс вероятность нахождения этого слова в том, что не является спамом.
А этот символ, кстати, как раз и означает «нет». Увеличивает вероятность того, что сообщение не является спамом. Так что это кажется большим и утомительным, но я просто хочу, чтобы мы частично это рассмотрели. Итак, я должен упомянуть, что эти P, кстати, означают «вероятность», и вы можете интуитивно думать о вероятности как о шансах или шансах, например, если я бросаю кубик, если я бросаю шестигранный кубик, то что вероятность того, что он выпадет на пятерку? Ну, это только один из шести, потому что у меня есть один исход, который я хочу, - приземление с пятью сторонами вверх, и есть шесть возможных результатов.
Итак, интуитивно понятно, что это тоже то, что в вероятностях, вот результат, а затем все возможные результаты. И вы можете интуитивно думать об этом как о вероятности, но это то, что означают только буквы P, вероятность. Могу увидеть заглавную P или P, заглавную P или строчную R. Я просто напишу это так.
Итак, эта полоса означает «данный». Под данным я подразумеваю, что это условная вероятность, потому что она зависит от того, какое слово мы здесь знаем.Так или иначе, я просто хочу пройти через это интуитивно. Поначалу это кажется немного пугающим, но давайте с этим справимся. Итак, этот первый член здесь, это то, что мы хотим найти. Мы хотим знать, какова вероятность того, что это сообщение, которое мы получили, является спамом, учитывая, что в нем есть какое-то слово W. Может, мне стоит установить это правило. Так что это спам. Это ветчина или не спам. И тогда W - это просто слово, любое слово. Итак, так, позвольте мне вернуться сюда.
Итак, это вероятность того, что их входящее сообщение является спамом, учитывая, что в нем есть какое-то слово.И это равно вероятности того, что мы находим это слово в спам-сообщении, умноженной на вероятность, эта вероятность, S, означает, какова вероятность того, что это сообщение даже является спамом.
Итак, у нас может быть общая статистика, чтобы вы знали, какой процент входящей электронной почты, какой процент электронной почты, которую вы получаете, является спамом, теперь по сравнению с любительским. Таким образом, это вероятность того, что любое входящее письмо, с которого вы начнете, является спамом или нет. И это если это не спам. Так что, вероятно, что произойдет, мы также посмотрим, что происходит на практике, так это то, что на самом деле это довольно много.Вероятно, вы получите больше спама, чем любительских сообщений. Итак, ожидайте, что это будет похоже на единицу.
Так или иначе, это вероятность того, что мы найдем слово в этом спам-сообщении. И это похоже на то, что я упомянул со словом «бесплатно». Мы ожидаем, что слово «бесплатный» будет найдено, оно с большей вероятностью найдет это слово в спам-сообщении, чем в любительском. И вот на что смотрит это максимальное количество, каковы шансы найти слово W в спам-сообщении.Затем мы делим эту сумму на все возможные результаты. Возможный результат - это слово находится в спаме и, вероятно, в спаме.
Но тогда есть также меньшая вероятность того, что это слово есть, вы также хотите знать, каковы шансы найти это слово в сообщении, которое не является спамом? Итак, вы бы посмотрели на слово и увидели, с большей вероятностью оно попадет в спам-сообщение или с большей вероятностью попадет в не спам-сообщение? Таким образом, мы можем определить, какой из этих двух результатов имеет более высокую вероятность.Итак, вероятность того, что эта выходная вероятность состоит в том, что если мы обнаружим, что это скорее спам-сообщение, то мы присвоим ему статус спам-сообщения. Итак, вот как мы можем принять решение.
И я, мы собираемся рассмотреть пример, более конкретный пример этого. Но интуитивно это все равно, что сказать, что вероятность спам-сообщения с некоторым заданным словом - это вероятность, прежде всего, что у нас есть спам-сообщение для начала, умноженная на вероятность того, что это слово находится в спам-сообщении, деленная на вероятность что мы действительно встречаем это слово в первую очередь.И это то, что он пытается сказать.
Итак, это слово с учетом того, что оно находится в спаме, а затем умноженная на вероятность спама плюс слово не находится в спаме. Так что на самом деле есть только два результата, верно? Либо это слово есть в спаме, либо его нет в спаме. Вот что это пытается объяснить. И мы постараемся определить вероятность того, что это спам. Так что это высокий. Что это значит? Это означает, что вероятность того, что это входящее письмо является спамом, учитывая это слово, означает, что это письмо, вероятно, является спамом.Так что я остановлюсь здесь, потому что не хочу усложнять это дальше. На самом деле мы рассмотрим этот пример в следующем видео. Но я собираюсь остановиться здесь и просто объяснить это еще раз.
Итак, Наивный Байес сосредотачивается вокруг этого принципа теоремы Байеса, и интуитивно я могу сказать, что это говорит о том, что мы хотим найти, так это вероятность того, что любое входящее письмо является спамом, при условии, что в нем есть какое-то слово. Мы говорим, что это логичное предположение, потому что существует много, вы знаете, мы смотрим на содержание электронного письма, чтобы определить, спам оно или нет.Итак, мы хотим сказать, какова вероятность обнаружения, что вы знаете, обнаружение, является ли это спам-сообщением, при условии, что в нем есть слово, конкретное слово W. И это равняется вероятности появления этого слова в спам-сообщениях, умноженной на общую вероятность того, что мы вообще получим спам-сообщения.
И эта нижняя часть, как я уже сказал, разделяет это на две части, где, как вы знаете, это W в спаме, это W в спаме или нет, сообщениях.
Итак, это как бы две вещи, результаты, которые мы можем получить для W.Это также обычно называют нашими доказательствами. В принципе, вы знаете, вот что мы и пытаемся. Таким образом, мы можем найти все эти числа на основе наших данных. Мы можем просмотреть каждое слово во всех наших электронных письмах в наших обучающих данных и увидеть, знаете ли, какова вероятность того, что оно находится в спам-сообщении? О, эй, я много раз встречал это слово во всех этих спам-сообщениях, а потом я могу вычислить эти вероятности. Так что все это я могу вычислить на основе своего набора данных. А затем, учитывая новое входное изображение или новый входной текст, я бы сказал, я могу определить и вычислить эту вероятность.А если он слишком высокий, то я знаю, что это спам.
Итак, я остановлюсь здесь, а в следующем видео я на самом деле приведу более конкретный пример, чтобы мы могли лучше понять это.
Выписка 4
Всем привет. Меня зовут Мохит Дешпанде, и в этом видео я хочу рассмотреть более конкретный пример применения этого наивного байесовского подхода к проверке наличия спама.
Итак, я хочу заменить их конкретными значениями, чтобы мы могли видеть.Мы пытаемся сформулировать ценности, что ж, будет очевидно, что мы увидим, что это хороший подход и что он работает. Итак, давайте рассмотрим пример. Итак, я дам вам некоторые из этих чисел. Итак, сначала я дам вам вероятность того, что у нас есть сообщение, и это спам. Итак, это то, что вы можете, опять же, вы можете вычислить из своего набора данных, но я просто использую общую статистику.
Таким образом, были проведены подобные исследования и попытки найти это значение, и было показано, что около 86% сообщений, которые вы получаете, являются спамом.И поэтому логически, если 86% сообщений, которые вы получаете, являются спамом, это означает, что остальные 14% должны быть сообщениями, которые не являются спамом. Таким образом, я могу написать, что вероятность того, что это не спам, тогда составляет 0,14, и это логически следует из того, что это сообщение является либо спамом, либо не спамом. Теперь предположим, что слово, на которое мы смотрим, - это слово, свободный. И теперь нам все еще нужны некоторые значения, нам все еще не хватает некоторых значений. Итак, у нас есть что-то вроде здесь, здесь и здесь.
Итак, мы опустили три значения, нам все еще нужны три. И нам действительно, действительно нужно просто еще два, потому что эти двое здесь одинаковы.Собственно и здесь эти двое совпадают. Итак, давайте предположим, что мы смотрим на слово «бесплатно», потому что, как я уже упоминал, я обычно использую слово «бесплатно», а обычные электронные письма, которые вы получаете, электронные письма Хэм, обычно не имеют слово, но они могли. Так что давайте сделаем это по-настоящему очевидным. Предположим, что вероятность того, что мы найдем слово «бесплатно» в спам-сообщении, действительно высока, например 0,96.
Итак, это означает, что вероятность того, что мы найдем слово «свободный» в спам-сообщении, составляет 96%.Это означает, что при условии, что сообщение является спамом, если мы знаем, что это сообщение является спамом, то у нас есть шанс, что слово «бесплатно» появится в спам-сообщениях в 96% случаев. Мы хотим выяснить, было ли это новое сообщение, которое мы получили, спамом, но с учетом того, что в нем есть слово «бесплатно».
Итак, просто глядя на этот номер, вы, вероятно, уже думаете, что это, вероятно, будет спам-сообщением, потому что, например, в нашем наборе данных это очень высокая вероятность.Но давайте предположим, что найти сообщение, найти бесплатное в сообщении, не являющемся спамом, составляет примерно 0,02. Итак, во-вторых, в очень редких случаях, в 2% случаев, мы находим слово «бесплатно» в том, что не является спамом.
И важно отметить, что эти две вещи не связаны. Так что вы не можете делать то же самое, что делали здесь. Вы не можете быть такими, ну да ладно. Если это бесплатно в спам-сообщении, то почему бы мне здесь не указать 0,04, поскольку 0,04 - это на самом деле вероятность не найти бесплатного в спам-сообщении, то это будет 0.04, так что эти две вещи никак не связаны. Итак, теперь у нас действительно достаточно значений, чтобы подключить это и найти ответ.
Так что просто как бы с места в карьер, вы, вероятно, можете, я постараюсь сделать это очевидным, но вы, вероятно, можете сказать, что это сообщение не будет спамом, потому что вероятность того, что вы найдете слово, бесплатно, в спам-сообщении составляет 96%, поэтому слово "бесплатно" является довольно хорошим индикатором, нахождение слова "бесплатно" - довольно хорошим индикатором того, что ваше сообщение является спамом, поэтому давайте на самом деле проведем вычисление и найдем эту вероятность, и мы ожидаем, что она быть действительно высоким.Итак, давайте подставим значения.
Итак, сначала я хочу определить вероятность того, что сообщение является спамом, учитывая, что в нем есть слово «бесплатно». Что ж, это равно вероятности нахождения слова «бесплатно» в спам-сообщениях, умноженной на общую вероятность того, что любой данный ввод является спамом. Иногда вероятность того, что я нахожу это слово, то же самое здесь, плюс вероятность, когда я нахожу слово «бесплатно» в сообщении, которое не является спамом, умножается на вероятность того, что это не спам.
Итак, я могу вставить сюда значения. Таким образом, вероятность того, что оно бесплатное, с учетом того, что оно, вероятно, обнаружит слово «бесплатно» в спам-сообщении, составляет 0,96, что в 0,96 раза больше вероятности того, что у меня действительно есть спам-сообщение, 0,86, разделенное на такое же количество. Более или менее, что эти два варианта одинаковы, потому что это один из возможных исходов, и это должны быть общие результаты, плюс вероятность того, что я найду слово «свободный» в сообщении для радиолюбителей, составляла всего 0,02, а затем вероятность фактического обнаружения, получения сообщение, которое не является спамом, равно 0.14.
Итак, когда я вычисляю все это, я получаю 0,9966, и поэтому у нас не может быть этого значения, мы знаем из нашего набора данных или откуда бы вы ни нашли эти значения, мы знаем, что это входное электронное письмо почти, почти уверен, что это входящее электронное письмо является спам-сообщением, и мы просто сделали это, зная только эти четыре значения. И эти ценности на самом деле мы узнали из нашего набора данных. Учитывая наш набор входных данных, они помечены как примеры спама и радиолюбителей.
Итак, мы можем вычислить эту вероятность.Таким образом, мы можем узнать, какова вероятность получения спам-сообщения на основе нашего набора данных. Точно так же мы это тоже знаем. И затем мы можем найти эту вероятность в нашем слове или в случае этих слов, и на самом деле проблема с этим подходом, которую я собираюсь рассмотреть в следующем видео, заключается в том, что это не просто, мы просто действительно не смотрим на один слово, на самом деле, мы не смотрим на все слова в нашем электронном письме, и я собираюсь рассказать о том, почему это называется Наивным Байесовским в следующем видео из-за этого предположения, которое мы делаем.
Но да, поэтому мы можем видеть, что на самом деле это довольно хороший способ определить, является ли электронное письмо спамом или нет, посмотрев, какова вероятность того, что я найду, какова вероятность, что я найду это слово или любое слово в спам-сообщении, или какова вероятность того, что я найду его в сообщении, которое не является спамом, а затем вычислю эту вероятность, и поэтому предположим, что у меня есть это, мы должны освободить, у меня было что-то вроде, Я не знаю, как отчет или, ну как отчет или исследование или что-то в этом роде.
Теперь то, что, вероятно, произойдет, так это то, что вероятность того, что я найду слово, исследование, например, в спам-сообщении, вероятно, будет довольно низкой или будет ниже, чем если бы я посмотрел на него. Вероятность найти слово, исследование, в сообщении для радиолюбителей или в сообщении, которое не является спамом, или, например, при просмотре моего университетского аккаунта. Итак, исходя из этого, тогда произойдет то, что эта вероятность будет довольно низкой, вероятно, найдется слово, вероятность того, что это сообщение является спамом, учитывая, например, что в нем есть слово, исследование.Эта вероятность может быть низкой, и если она низкая, то я могу сделать вывод, что это сообщение не является спамом.
И эти две вещи, как найти это, и есть вероятность, что это не спам, учитывая, что в нем есть слово, бесплатно, между прочим, действительно связаны между собой, потому что, если вероятность того, что я есть сообщение, если это спам-сообщение, учитывая, что в нем есть слово, бесплатно, это 0,9966, тогда вероятность того, что это не спам или это Хэм, будет равна 0,0044, и поэтому это очень низкая вероятность.И поэтому я хочу выбрать, какой из них дает мне наибольшую вероятность. В этом случае гораздо более вероятно, что это входящее электронное письмо является спамом, а не ветчиной, и поэтому я могу перенести его в свою папку для спама.
И я должен упомянуть, что алгоритмы и методы, которые используют компании или являются частной собственностью, и они, вероятно, намного сложнее, чем этот, но этот подход на самом деле не так уж плох. Так что это вроде как, это определенно легче понять, чем некоторые из более продвинутых техник, так что мы просто будем смотреть, мы будем смотреть на это, и поэтому я собираюсь остановиться прямо здесь, просто сделаю краткий обзор. .Итак, мы фактически провели вычисление с использованием наивной техники Байеса, чтобы определить, было ли сообщение спамом, учитывая, что в нем есть слово «бесплатно».
И я как бы дал вам здесь некоторые цифры, и хотя вероятность получения любого сообщения, которое является спамом, довольно высока, и, следовательно, вероятность того, что вы получите сообщение, которое является Ham, довольно мала, а затем он ищет набор данных и скажу, основываясь на моем опыте, видел ли я слово, бесплатно, в спам-сообщениях или сообщениях радиолюбителя, и поэтому, основываясь на этом, я могу, я знаю, спам это или нет, потому что тогда я просто смотрю на Сколько раз я видел это в спам-сообщениях по сравнению с сообщениями Ham, и я вычислил эту вероятность, и мы обнаружили, что это сообщение почти, почти на 100% положительно, что это сообщение почти на 100% вероятно, что это сообщение является спамом.Вот как мы можем произвести вычисление наивного Байеса.
Все эти вещи - вещи, которые мы можем изучить, или алгоритмы, которые могут автоматически вычислить за нас. Проблема в том, что мы смотрим только на одно слово, а хотим смотреть на электронные письма или последовательность слов. Итак, мы хотим иметь возможность рассматривать последовательность слов. Я расскажу, как это сделать, в следующем видео.
Хотите продолжить? Ознакомьтесь с полным курсом «Создание искусственного интеллекта для обнаружения спама с классификацией текста».Вы также можете проверить нашу полную мини-степень по машинному обучению для получения дополнительных навыков разработки Python.
.