Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1288 сообщений
Cообщения с меткой

email - Самое интересное в блогах

Следующие 30  »
SoftLabirint

ContaCam 5.0.7 Portable (RUS/ENG) » SoftLabirint.Ru: Скачать бесплатно и без регистрации - Самые Популярные Новости Интернета

Среда, 11 Мая 2016 г. 13:42 (ссылка)
softlabirint.ru/soft/multim...useng.html


ContaCam 5.0.7 Portable (RUS/ENG)

ContaCam - программное обеспечение для видеонаблюдения, очень легкая для системных ресурсов, не содержит ненужных наворотов. Программа быстрая, легкая и достаточно универсальная, чтобы удовлетворить все ваши потребности в безопасности, в то же время очень удобна и может работать даже на самых умеренных системах.



1. Простые три шага:

- Решите какой режим вы хотите использовать (наблюдение для обеспечения безопасности, снимки веб-камеры или ручная запись / снимки)

- Введите понятные имена камер, выберите обнаружение действий и зоны определения для детектора движения.

- Настройте, где и как долго хранить файлы на вашем жестком диске.

2. Взгляните на настройки помощника скриншотов. Для экспертов существуют десятки дополнительных параметров конфигурации, проверьте параметры скриншотов.



Особенности

- Поддержка всех версий Windows от Windows XP SP2 до Windows 10

- Программа является бесплатной и доступна на пяти языках: болгарский, английский, немецкий, итальянский, русский (все отдельные версии)

- Видеонаблюдение CCTV с детектором движения и 24 часовой цифровой записью видео (DVR)

- Зафиксированные программой события сразу же демонстрируются в веб интерфейсе данного приложения в виде миниатюр анимационного характера.

- При обнаружение действия движения, можно задать способы опоаещения такие как: FTP загрузка, отправка электронной почты (поддержка SSL / TLS или STARTTLS) с вложенным файлом или запустить внешнюю программу

- Прямое (живое) наблюдение веб-камерами с функцией отслеживания всей истории скрытого видеонаблюдения.

- Ручная запись и снимки ( даже захват видео в играх, запись кино...)

- Встроенный веб-сервер с защитой паролем

- Поддержка веб-камер, WDM и DV устройств и сетевых IP камер

- Неограниченное, параллельной установки, количество камер

- Может быть запущена в качестве службы Windows

- Хранение записи аудио в течение 24 часов с момента обнаружения движения (поддержка IP-камер без звука)

- Имеет все возможности FreeVimager для редактирования снимков и рекомпрессии AVI файлов



Список изменений версии 5.0.7 (May 9th 2016)



- Email alert when device unplugged or not reachable

- Faster and more reliable FTP upload support

- Web interface video play rate buttons: 0.25x and 1.0x

- Web interface has now an optional trash / delete button

- Bigger toolbar buttons

- Added support for some Samsung cameras

- Email settings auto-fill for most common smtp servers

- Re-added the option to email a jpeg snapshot on motion detection

(with respect to previous implementation it is sent really fast)

- Removed the standby and hibernate disabling feature introduced with

version 5.0.1 because it also blocked entering these states manually

 



ContaCam 5.0.7 Portable (RUS/ENG)



ContaCam 5.0.7 Portable (RUS/ENG)



ContaCam 5.0.7 Portable (RUS/ENG)






Update: May 9th 2016

Platforms: Windows XP SP2/Vista/7/8/10

Languages: RUS/ENG

Size: 26 Мб



Скачать: ContaCam 5.0.7 Portable (RUS/ENG)



Скачать | Download | TurboBit.net

http://turbobit.net/f7ipzm15ik3e/ContaCam-5.0.7.rar.html



Скачать | Download | HitFile.net

http://www.hitfile.net/HY8vWv0/ContaCam-5.0.7.rar.html



Скачать | Download | Файлообменник.рф

http://файлообменник.рф/d6vakh81cuk0/ContaCam-5.0.7.rar.html



Скачать | Download | BornCash.org

http://borncash.org/load/1734001242&name=ContaCam-5.0.7.rar



Скачать | Download | StartFiles.org

http://startfiles.org/load/1734001242&name=ContaCam-5.0.7.rar



Скачать | Download | GoldFiles.org

http://goldfiles.org/load/1734001242&name=ContaCam-5.0.7.rar



Скачать | Download | File-Space.org

http://file-space.org/files/get/-YQy89ijS4/contacam-5.0.7.rar.html



 



Подписка на новости сайта…

http://feeds.feedburner.com/Soft-Labirint

http://feeds.feedburner.com/Soft-Labirint?format=xml

https://feedburner.google.com/fb/a/mailverify?uri=Soft-Labirint

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Коммуникации в store-and-forward режиме, UUCP

Вторник, 26 Апреля 2016 г. 13:25 (ссылка)

Сейчас в мире Интернета преобладающее количество всех служб работают в режиме online: то есть постоянное соединение с Интернетом и серверами. Если HTTP, FTP или IRC сервер недоступен, то вам об этом сразу же явно сообщат. Не всегда есть возможность иметь такую роскошь как постоянный online. Иногда это дорого, иногда просто технически невозможно. Есть опасность что появится Великий Российский Firewall который будет разрешать только whitelist доступ к ресурсам и доступность «полноценного» Интернета, в лучшем случае, будет только от места к месту. Режим работы при котором данные для отправки сохраняются и ожидают пока появится связь называется store-and-forward. Именно этот режим удобно позволяет работать в условиях непостоянного online.







Из широкораспространённых сервисов только email (SMTP) имеет что-то похожее на это: вы отправляете сообщение и оно сохраняется на сервере до тех пор, пока он не сможет соединиться с принимающим сервером и получить успешный код ответа. И так по всей цепочки пока письмо не дойдёт до адресата. По почте можно передавать и файлы, но крайне неэффективно из-за Base64 кодирования. Заранее настроив почтовый сервер, можно отправлять на специальные адреса сообщения в которых будут команды для выполнения — то есть удалённое выполнение команд не требующих интерактивного вмешательства и гарантированных жёстких сроков выполнения.



Однако SMTP серверы всё же рассчитаны на более-менее постоянное присутствие в сети. При недоступности удалённых серверов он будет уменьшать частоту попыток пересылки. Если у вас появилось пять минут доступности сети, то не факт что в это время SMTP сервер попробует повторить попытку. Как правило, через несколько дней он напомнит о том что сообщение до сих пор не может быть доставлено и вскоре будет удалено.



Полностью в таком режиме работает сеть FidoNet. Человек, например, пару раз в день подключается к вышестоящей ноде и получает пачку писем, отправляет свою накопившуюся. Затем в offline режиме читает и отвечает на полученные сообщения. Стоит ли возрождать FTN (FidoNet Technology Network) технологии и снова их использовать? Лично я считаю что нет: FTN создавалась любителями для домашних компьютеров. Я бы сказал что FTN это UUCP (UNIX-to-UNIX CoPy) для «бедных», для тех у кого нет UNIX-like операционных систем. Кроме того, весь FTN софт стоит особняком от Интернет технологий. UUCP же хорошо интегрируется с существующими технологиями.



UUCP позволяет удобно разрешить проблему создания store-and-forward сервисов. Он был очень популярен в 70-х и 80-х годах и был де-факто стандартом связи между UNIX системами, задолго до широкого распространения Интернета.




  • Поведение системы, находись она подключённой к сети, или находясь в offline — не отличимо. Если вы отправляете файл или почтовое сообщение по UUCP: для вас это всегда успешный код возврата. Если в почтовых клиентах вы ещё можете сохранить сообщения в черновиках, то подобного функционала для сообщений от cron демона или git-send-email нет. Это значительно упрощает ПО.

  • У всех участников сети нет чётко заданной модели поведения: вы можете принимать почту или файлы в режиме polling (когда самостоятельно время от времени опрашиваете удалённую систему), можете сделать явный push. Тем самым, вы делаете как вам удобнее и эффективнее в ваших условиях эксплуатации. Вы в состоянии будете связать две системы находящиеся за NAT-ом через промежуточный узел, без использования каких-либо дополнительных протоколов или программных служб.

  • Для приёма и отсылки писем и файлов используется один и тот же протокол — нет разделения, например, на SMTP и POP3. Более того, приём и отправка данных происходят параллельно в пределах одного канала связи, что повышает его эффективность использования.

  • UUCP позволяет продолжить оборванную передачу данных, не начинать с нуля. Это бесценно при плохих или медленных или короткоживущих каналах связи.

  • Есть поддержка приоритезации трафика: в момент отправки сообщений вы можете указать их важность (grade). Так можно гарантировать что тяжёлый большой файл не будет мешать прохождению небольших почтовых сообщений или удалённых команд.

  • Протокол работает поверх любых соединений передающих двусторонний поток байт. Это может быть последовательный COM-порт, модем, TCP, stdin/stdout запущенной программы. Наличие IP протокола не имеет значения.

  • В отличии от электронной почты Интернета, нет ограничений связанных с 7-битными каналами связи. Вы можете передавать бинарные файлы без дополнительных Base64/whatever преобразований, что существенно экономит трафик.

  • UUCP доступен во всех свободных операционных системах. Де-факто используется GNU Taylor UUCP реализация. Она уже много лет не развивается — потому-что в ней просто нечего доделывать, она работает.

  • Все популярные почтовые серверы Интернета типа sendmail, Exim и Postfix из коробки имеют возможность интеграции с UUCP. Сами по себе утилиты имеют классический UNIX way подход: делай одну небольшую вещь, но делай её хорошо. В отличии от FTN сетей, вы можете прозрачно связывать UUCP и Интернет ресурсы воедино.





Используя современные определения, UUCP является F2F (friend-to-friend) сетью. Вы явно руками самостоятельно прописываете и настраиваете все ваши взаимосвязи с «друзьями». Более того, вы явно управляете маршрутизацией сообщений. Да, это бОльшая ответственность и трудозатраты, но зато хорошая защита от возможных DoS атак, от централизованных серверов которые могут применять цензуру. F2F сети саморегулируются: злоумышленников и людей с плохим поведением из сети просто выкинут, как это происходило в FidoNet. Это работает достаточно хорошо и это на практике уже показало что сеть может иметь глобальные масштабы, а не только быть у кучки любителей.



Однако в UUCP есть и поддержка неизвестных (unknown), анонимных пользователей. То есть сделать публичный всем доступный сервер для раздачи файлов, или даже с возможностью их закачивания, возможно из коробки.



UUCP не предлагает ничего связанного с криптографией. В текущих реалиях, когда модемы уже мало у кого есть, как и телефонные линии, использовать криптографию хотя бы для аутентификации нод уже необходимо. Благо вы вольны делать это как вам удобнее. Если для физически изолированных air-gapped, Sneakernet/FloppyNet или соединённым по ЛВС систем на это ещё можно закрыть глаза, то для связи по публичным каналам связи можно быстро поднять stunnel, SSH, VPN или что-то подобное. Поднять UUCP в виде скрытого сервиса Tor или I2P становится тривиально.



Покажем насколько проста конфигурация UUCP на примере связи двух компьютер через Интернет. Один не делает никаких исходящих соединений (назовём его alpha), в отличии от второго (назовём его beta).


alpha% cat /usr/local/etc/uucp/config
nodename alpha

alpha% cat /usr/local/etc/uucp/passwd
betalogin betapassword

alpha% cat /usr/local/etc/uucp/sys
system beta
called-login betalogin

------------------------ >8 ------------------------

beta% cat /usr/local/etc/uucp/config
nodename beta

beta% cat /usr/local/etc/uucp/call
alpha betalogin betapassword

beta% cat /usr/local/etc/uucp/port
port tcp
type tcp

beta% cat /usr/local/etc/uucp/sys
call-login *
call-password *
time any

system alpha
port tcp
address alpha.com




Это вся конфигурация. Мы задачи порт «tcp», логин/пароль для доступа, названия UUCP нод. Если мы хотим вызывать SSH вместо прямого TCP соединения, то достаточно описать новый «порт»:


beta% cat /usr/local/etc/uucp/port
port ssh
type pipe
command ssh -o batchmode=yes alpha.com




Если мы хотим соединяться по COM-порту, но при его недоступности попытаться TCP, то создадим ещё один порт и укажем альтернативную конфигурацию для системы (альтернатив может быть много):


beta% cat /usr/local/etc/uucp/port
port tcp
type tcp

port serial
type direct
device /dev/cuaU0
speed 115200

beta% cat /usr/local/etc/uucp/sys
call-login *
call-password *
time any

system alpha
port serial
protocol g

alternate

port tcp
address alpha.com
protocol t




При этом, для последовательного соединения мы указали использовать протокол «g» (используется для ненадёжных каналов связи, самостоятельно проверяет целостность и перепосылает данные), а для TCP, который уже является надёжным каналом связи, протокол «t».



При такой конфигурации мы уже можем послать файл с beta на alpha:


beta% uucp myfile.txt alpha!~/myfile.txt




По-умолчанию в UUCP "~/" это не домашняя директория пользователя, а публичная область для всех, аналог «pub» директории в FTP. В моей системе это директория /var/spool/uucppublic/. В sys файле вы можете для каждой системы указать в какие директории можно посылать файлы или из каких их запрашивать. Таким же образом и alpha может послать файл, но он будет передан только когда beta подсоединится. Есть удобная утилита uuto которая может отправить файл заданному пользователю на заданную систему:


% uuto myfile.txt remote!username




А на удалённой remote системе пользователь может вызвать uupick которая ему покажет список всех отосланных ему файлов и позволит, например, их переместить в указанную директорию.



Если вам надо отправить файл на gamma систему, имеющую связь с beta, то вы явно должны указать маршрут следования файла:


% uucp myfile.txt beta!gamma!~/myfile.txt




UUCP позволяет посылать задание на выполнение команд на удалённой системе:


% uux "remote!service nginx restart"
% uux "remote!zfs snap zroot@backup"




На принимающей системе отдельный uuxqt демон занимается запуском принимаемых таким образом команд. В sys файле вы можете управлять тем, какие команды разрешено запускать той или иной системе:


% grep commands /usr/local/etc/uucp/sys
commands rmail /home/uucp/wget.sh




В данном случае можно выполнять только команду rmail и wget.sh. wget.sh это пример самописного простого скрипта который скачает Web-страницу и через UUCP отправит её в сжатом зашифрованном виде с минимальным приоритетом:


#!/bin/sh -e
WORKDIR=/home/uucp/wget_dir
name="$1"
url="$2"
wget --output-document - "$url" | xz -9 | gpg \
--homedir /home/uucp/.gnupg --compress-level 0 --encrypt \
--recipient 0xHIDDEN > $WORKDIR/"$name".xz.gpg
uuto --grade 9 $WORKDIR/"$name".xz.gpg 'sgtp!vpupkin'




Электронная почта отправляется именно как uux команда вызывающая rmail утилиту которая, фактически, связывается с локальным sendmail сервером и посылает тело сообщения в него. Например, для того чтобы Postfix смог отсылать принимаемую из Интернета почту на UUCP удалённый сервер, то достаточно (также это описано здесь):


  • раскомментировать строчки с uucp/uux в master.cf

  • добавить UUCP домен в relay_domains/relay_domains

  • указать в transport как производить relay на домен:


    % cat /usr/local/etc/postfix/transport
    cypherpunks.ru uucp:sgtp
    cryptoparty.ru uucp:sgtp


    Тут видно для доменов cypherpunks.ru/cryptoparty.ru почту нужно слать через UUCP на «sgtp» ноду.






Чтобы отсылать почту с локальной машины через UUCP шлюз, то кроме раскомментирования uucp/uux строк в master.cf, достаточно добавить в main.cf:


default_transport = uucp:uucp-gateway




Поддержка UUCP в Exim и sendmail аналогично просто настраивается.



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



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/282493/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод] Анализ email-сообщений за 18 лет: Неудачный эксперимент по путешествию во времени

Пятница, 22 Апреля 2016 г. 13:25 (ссылка)





В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. Мы уже обсудили сложности борьбы со спамом, будущее email, вопросы защиты почтовой переписки, а также техники работы с email, а также разобрались, почему с течением времени темы почтовых сообщений становятся длиннее.



Многие люди пользуются электронной почтой уже на протяжение десятилетий — а значит, возникает вопрос о том, что анализ данных писем за долгое время может рассказать об эволюции конкретной личности. Журналист и создатель сервиса для разработки веб- и мобильных приложений Postlight Пол Форд в своем блоге на Medium опубликовал результаты эксперимента, в ходе которого он пытался создать динамическую систему поиска писем в своем почтовом ящике, в котором за 18 лет скопилось более 450 тыс. email-сообщений. Мы представляем вашему вниманию адаптированный перевод этой заметки.



Идея: путешествие во времени



Идея исследователя заключалась в следующем: если бы он смог быстро просматривать все свои старые сообщения, то это бы позволило проследить, как со временем менялись его собственные взгляды и мысли.



Это должно было позволить мне узнать о себе нечто важное, увидеть свой рост, как личности – например, сравнивая себя 20-летнего и себя 40-летнего.


Однако результаты эксперименты расстроили Форда.



Электронная почта и крупные корпорации



Во-первых, ему нужно было урегулировать некоторые технические вопросы. Форд пользуется аккаунтом Gmail, но система поиска в почтовом сервисе Google очень специфична. С её помощью можно легко найти любое из недавно полученных электронных писем, словно иголку в стоге сена. Но исследователь собирался со всего маху прыгнуть в этот стог, и для этого ему нужна была быстрая и эффективная поисковая система, которая могла бы просканировать десятки тысяч писем в одно мгновение. А интерфейс поиска Gmail в таких случаях выглядит вот так:







Учитывая, что также Форд использует компьютер Macintosh, он бы мог скачать всю свою переписку с помощью Apple Mail и воспользоваться встроенным поиском Apple Spotlight. Но дело вот в чём.



В 1996 году пользователь мог нажать клавишу

https://habrahabr.ru/post/282223/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Перевод] Есть вопрос: почему темы электронных писем становятся длиннее, и на что это влияет

Четверг, 21 Апреля 2016 г. 15:38 (ссылка)





В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. Мы уже обсудили сложности борьбы со спамом, будущее email, вопросы защиты почтовой переписки, а также техники работы с email, применяемые руководителями крупных ИТ-компаний.



Сегодня мы рассмотрим еще одну интересную тему — почему с течением времени темы писем, которые люди отправляют друг другу, становятся длиннее? Интернет журналист Дэнни О’Брайан в своем блоге представил мини-исследование, призванное ответить этот вопрос. Мы представляем вашему вниманию адаптированный перевод этого материала.



Что происходит



По словам журналиста он пытался найти подтверждение своей теории о том, что темы сообщений в электронной почте со временем стали длиннее. К такому выводу О’Брайан пришел, обнаружив на удивление краткие заголовки старых электронных писем от 1998 года.



У него есть два огромных архива входящих и исходящих электронных писем: в первом хранятся письма в период с 1999 по 2007, а во втором – с 2007 и далее. В общей сложности в них содержатся 2 732 487 писем. Журналист измерил длину темы каждого из этих писем, занес их в базу данных, указывая дату получения или отправки, и составил график, где отмечена средняя длина писем в каждый день.



image



Длина темы письма / Количество писем в день



По линии тренда можно увидеть, что длина заголовков действительно увеличивается в среднем на 1.2 символа в год, начиная с 1999 года.

Так в чем же дело? Происходило ли это только с его письмами? Может, только собеседники журналиста такие словоохотливые? Или в расчеты вкралась ошибка?



О’Брайан выложил код, который он использовал, чтобы создать полученный график — с его помощью любой желающий может проверить тенденцию к увеличению длины тем сообщений в собственном почтовом ящике. Этот код можно применить к форматам Maildir и mbox или к базе данных почтовой системы notmuchmail, и построить график с помощью matplotlib. Доступна для скачивания и собственная база О’Брайана.



В чем причина



Вот несколько возможных объяснений, которые нашел журналист. Эта тенденция может быть связана с увеличением массовых рассылок, в заголовках которых перед темой письма указывается название рассылки (например, «[mylist] привет всем»). В этом случае можно убрать квадратные скобки или письма, в заголовках которых указано название рассылки.



Причиной может являться и увеличение количества маркетинговых писем (не обязательно спама), своими параметрами отличающихся от «традиционных» писем, которые люди пишут друг другу. Самое время обратиться к соответствующей литературе: людей, которые занимаются массовой рассылкой маркетинговых писем, по-настоящему волнует длина темы письма.



В ходе одного из этих исследований было проанализировано 9 миллионов электронных писем. Средняя длина тем этих 9 миллионов писем, отправленных в феврале 2015, составила 41-50 символов, что немного меньше или равно длине заголовков писем в моем почтовом ящике.

Увеличение длины заголовков писем может быть связано и с увеличением размера экрана. Если у вас появляется больше пространства для написания темы письма, вам, вероятно, захочется его заполнить. Стоит провести параллель с этой статистикой по изменению размеров окна браузера с ресурса statcounter.



Сложно говорить о строгой причинно-следственной связи между этими величинами, но вполне вероятно, что некоторые изменения на графике изменения размеров окна браузера могут коррелировать со странным скачком на моем графике в промежутке с 2009 по 2011 (хотя, возможно, это касается только моих данных).



С другой стороны, если размер монитора имеет значение, то удивительно, что увеличение просмотров с мобильных телефонов не повлияло на кривую на графике О’Брайана. Или повлияло (уменьшив угол наклона линии тренда): он бы мог отфильтровать сообщения, отправленные с мобильного, и проанализировать длину их заголовков.



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



Влияет ли длина темы на вероятность прочтения письма



Около года назад в блоге «Печкина» на Хабре мы публиковали интересную статистику о том, как те или иные показатели писем влияют на их эффективность. Тогда выяснилось, что длина поля темы письма не оказывает особенного влияния на его эффективность. Команда сервиса для email-рассылок Mailchimp провела исследование с целью выяснить, влияет ли длина темы письма на его эффективность. Аналитики изучили 12 млрд отправленных в 2012 году писем на предмет того, как увеличение длины поля темы влияет на показатель открытия писем и число кликов на ссылки внутри него. Результаты говорят о том, что длина темы никак не влияет на эти показатели:



image



Представители компании Adestra провели свое исследование, которое подтвердило тот факт, что показатель открытия не зависит от длины письма. Что касается кликов и количества пользователей, кликнувших на ссылки после открытия письма, то здесь оказалось, что более длинные темы писем показывают лучшие результаты:



image



С точки зрения эффективности, куда более важным фактором является персонализация самой темы сообщения — по данным все той же Adestra, письмо с персонализированной темой откроют с вероятностью в 22,2%.

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/282155/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
lusenko57

Честный заработок!

Понедельник, 04 Апреля 2016 г. 08:46 (ссылка)
noapp.ru/


A better way to discover awesome newsletters. Like Free love for your inbox. A micro-project by Marc Eglon & Hackerpreneur

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Какими должны быть электронные рассылки, и почему пользователи от них отписываются

Среда, 30 Марта 2016 г. 10:49 (ссылка)





В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. Мы уже обсудили сложности борьбы со спамом, будущее email, вопросы защиты почтовой переписки, а также техники работы с email, применяемые руководителями крупных ИТ-компаний. 



Сегодня мы затронем другую интересную тему — почему пользователи отписываются от email-рассылок, и какими они должны быть, чтобы приносить пользу.



Статистика: какие рассылки не нравятся людям



Сервис Unroll.me, который помогает отписаться от нежелательных рассылок, еще в 2014 году публиковал собственную статистику по предпочтениях пользователей. Согласно собранным данным, чаще всего пользователи отписываются от сервисов доставки цветов, продажи билетов на концерты, авиабилетов, товаров для вечеринок, а также поиска интересных событий и мероприятий по соседству.



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



То же самое касается сайтов, вроде Expedia: большинство пользователей не слишком часто покупают авиабилеты и туры, и несмотря на то, что приятно поймать момент и воспользоваться скидками, такие сообщения редко приходят в нужное время.



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



Что им нравится читать



Результаты исследование Unroll.me говорят о том, что пользователи охотно читают рассылки, которые так или иначе связаны с общением. К примеру, большое количество email-сообщений посылают различные соцсети, но люди редко от них отписываются.



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







Итак, вот список ресурсов, где большое количество пользователей подписаны на информационную рассылку:




  1. Facebook: 70% пользователей подписаны на информационную рассылку.

  2. Google+: 66.9%.

  3. Twitter: 64.4%.

  4. LinkedIn: 62.1%.

  5. YouTube: 48.4%.

  6. Amazon: 43.1%.

  7. Pinterest: 39%.

  8. Apple: 35.9%.

  9. Groupon: 30.8%.

  10. Netflix: 29.6%.



Отсекая лишнее: Каким должно быть email-сообщение



Помимо собственно статистики, понять, как именно стоит создавать почтовые сообщения, можно с помощью практического примера. Своим опытом оптимизации текста email-рассылки поделился маркетолог компании Flow Кэмерон Конауэй. Сотрудникам сервиса нужно было создать рассылку, содержащую ссылку на последний материал из блога для его подписчиков.



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








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

  2. Фраза «от компании Flow» в конце предложения «Материал о том, как создавать отличные команды, от компании Flow» казалась громоздкой и неуместной. Кроме того, она не соответствовала принципу простоты, которого команда старалась придерживаться..

  3. Сначала работники хотели добавить вводную конструкцию прежде, чем переходить непосредственно к статье, но в итоге решили, что она будет лишь перегружать текст письма.

  4. Сократив вводную конструкцию, они решили, что стоит добавить в нее гиперссылку, чтобы сразу обратить внимание читателя на статью.

  5. Также было решено избавиться от фразы «Если вы пропустили нашу первую статью». Это ещё один пример нагромождения, который только мешал донести до читателя главную мысль.

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

  7. Подпись в блоге заменили на более общую «Редакция TMT».







С помощью новой версии письма число переходов по ссылкам удалось увеличить более, чем в два раза при почти неизменном числе открытий. Но его еще можно было оптимизировать.




  1. Ничем не примечательное приветствие стало казаться излишним, поэтому его удалили.

  2. То же самое можно было сказать и о строке «P.S.», особенно учитывая, что читатели переходили по указанной в ней ссылке не слишком часто.







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



Другие материалы о создании почтовых рассылок в блоге «Печкина»:







Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280510/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Как навести порядок в почтовом ящике с помощью нейронной сети. Часть 2

Понедельник, 28 Марта 2016 г. 10:31 (ссылка)

image



В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. В современном мире люди получают множество писем, и в полный рост встает проблема с их классификацией и упорядочиванием почтового ящика. Инженер из США Андрей Куренков в своем блоге рассказал о том, как решил эту задачу с помощью нейронной сети. Мы решили осветить ход этого проекта — несколько дней назад опубликовали первую часть рассказа, а сегодня представляем вашему вниманию его продолжение.



Глубинное обучение здесь не подходит



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



Благодаря этому вместо преобразования писем в матрицы бинарных признаков можно просто заменить слова на числа, используя частоты их появления в письмах, а сами числа – на векторы, отражающие «смысл» каждого слова. Тогда появляется возможность использования полученной последовательности для обучения рекуррентной нейронной сети типа Long Short Term Memory или Gated Recurrent. И этот подход уже реализован: можно просто запустить пример и посмотреть, что будет:



Epoch 1/15
7264/7264 [===========================] - 1330s - loss: 2.3454 - acc: 0.2411 - val_loss: 2.0348 - val_acc: 0.3594
Epoch 2/15
7264/7264 [===========================] - 1333s - loss: 1.9242 - acc: 0.4062 - val_loss: 1.5605 - val_acc: 0.5502
Epoch 3/15
7264/7264 [===========================] - 1337s - loss: 1.3903 - acc: 0.6039 - val_loss: 1.1995 - val_acc: 0.6568
...
Epoch 14/15
7264/7264 [===========================] - 1350s - loss: 0.3547 - acc: 0.9031 - val_loss: 0.8497 - val_acc: 0.7980
Epoch 15/15
7264/7264 [===========================] - 1352s - loss: 0.3190 - acc: 0.9126 - val_loss: 0.8617 - val_acc: 0.7869
Test score: 0.861739277323


Точность: 0.786864931846



Обучение заняло вечность, при этом результат оказался далеко не так хорош. Предположительно, причиной может быть то, что данных было немного, и последовательности в целом недостаточно эффективны для их категоризации. Значит, повышенная сложность обучения на последовательностях не окупается преимуществом обработки слов текста в правильном порядке (все-таки отправитель и определённые слова в письме хорошо показывают, к какой категории оно принадлежит).



Но дополнительный «подготовительный» шаг всё ещё казался инженеру полезным, поскольку создаёт более широкое представление слова. Поэтому он посчитал стоящим попробовать использовать его, подключив свертку для поиска важных локальных признаков. И опять нашелся пример Keras, который выполняет подготовительный шаг и при этом передаёт полученные векторы слоям свертки и субдискретизации вместо слоёв LSTM. Но результаты вновь не впечатляют:



Epoch 1/3
5849/5849 [===========================] - 127s - loss: 1.3299 - acc: 0.5403 - val_loss: 0.8268 - val_acc: 0.7492
Epoch 2/3
5849/5849 [===========================] - 127s - loss: 0.4977 - acc: 0.8470 - val_loss: 0.6076 - val_acc: 0.8415
Epoch 3/3
5849/5849 [===========================] - 127s - loss: 0.1520 - acc: 0.9571 - val_loss: 0.6473 - val_acc: 0.8554
Test score: 0.556200767488


Точность: 0.858725761773



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



Всё из-за признаков, дурень



Итак, проведенные тесты не дали желанной точности в 90%… Как видно, текущий подход определения признаков по 2500 наиболее часто встречающихся слов не годится, так как он включает такие общие слова как «я» или «что» наряду с полезными специфичными для категорий словами типа «домашка». Но рискованно просто убирать популярные слова или забраковать какие-то наборы слов – никогда не знаешь, что окажется полезным для определения признаков, поскольку, возможно, иногда я использую то или иное «простое» слово в одной из категорий чаще, чем в других (например, в разделе «Личное»).



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



Зависимость тестовой точности от количества обрабатываемых слов:



image



Работает – 90%!



Отлично! Несмотря на небольшие различия в итоговой результативности, начинать явно лучше с большего набора слов. Однако этот набор можно довольно сильно уменьшить с помощью отбора признаков и не потерять производительности. По всей видимости, у этой нейронной сети нет проблем с переобучением. Рассмотрение «лучших и худших» слов по версии программы подтверждает, что она достаточно хорошо определяет их:







«Лучшие» и «худшие» слова: отбор признаков с использованием критерия хи-квадрат (основано на коде из примера scikit)



Многие «хорошие» слова, как и следовало ожидать, – имена или специфические термины (например, «controller»), хотя Куренков говорит, что некоторые слова типа «remember» или «total» сам бы не выбрал. «Худшие» слова, с другой стороны, довольно предсказуемы, так как они или слишком общие, или слишком редкие.



Можно подвести итог: чем больше слов, тем лучше, и отбор признаков может помочь сделать работу быстрее. Он помогает, но, возможно, есть способ дополнительно повысить результаты тестов. Чтобы узнать это, инженер решил взглянуть на то, какие ошибки делает нейронная сеть, с помощью матрицы ошибок, также взятой с scikit learn:



image



Матрица ошибок для результатов работы нейронной сети



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



Поэтому, давайте проведем последний эксперимент, в котором все неподходящие категории отсутствуют, и где будет использоваться наибольшее количество признаков – 10 000 слов с отбором 4 000 лучших:



Epoch 1/5
5850/5850 [==============================] - 2s - loss: 0.8013 - acc: 0.7879 - val_loss: 0.2976 - val_acc: 0.9369
Epoch 2/5
5850/5850 [==============================] - 1s - loss: 0.1953 - acc: 0.9557 - val_loss: 0.2322 - val_acc: 0.9508
Epoch 3/5
5850/5850 [==============================] - 1s - loss: 0.0988 - acc: 0.9795 - val_loss: 0.2418 - val_acc: 0.9338
Epoch 4/5
5850/5850 [==============================] - 1s - loss: 0.0609 - acc: 0.9865 - val_loss: 0.2275 - val_acc: 0.9462
Epoch 5/5
5850/5850 [==============================] - 1s - loss: 0.0406 - acc: 0.9925 - val_loss: 0.2326 - val_acc: 0.9462
722/722 [==============================] - 0s
Test score: 0.243211859068




Точность: 0.940443213296



image



Матрица ошибок для новых результатов нейронной сети



Вот так-то! Нейронная сеть может угадывать категории с 94% точности. Хотя эффект обусловлен прежде всего большим набором признаков, хороший классификатор (классификатор scikit learn Passive Agressive) и сам по себе даёт 91% точности на тех же входных данных. На самом деле, существуют идеи о том, что, в данном случае эффективным может оказаться и метод опорных векторов (LinearSVC), – используя его, можно также получить приблизительно 94% точности.



Итак, вывод довольно простой – «модные» методы машинного обучения не особенно эффективны на небольших наборах данных, а старые подходы типа N-грамм + TF-IFD + SVM могут сработать так же хорошо, как и современные нейронные сети. Говоря короче, одно только использование метода Bag of Words сработает достаточно хорошо при условии, что писем немного и они отсортированы так же чётко, как и в примере выше.



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



Эпилог: Дополнительные эксперименты



Работая над своим экспериментом, инженер сделал еще кое-что. Он столкнулся с проблемой: все вычисления выполнялись долго, по большей части потому, что автор материала не использовал теперь уже обыденный трюк с запуском машинного обучения с использованием GPU. Следуя превосходному руководству, он сделал это, и получил отличные результаты:







Время, затраченное на достижение описанных выше 90% с графическим процессором и без него; отличное ускорение!



Следует отметить, что нейронную сеть Keras, демонстрирующую 94% точности, было намного быстрее обучить (и работать с ней), нежели сеть, обучающуюся на основе метода опорных векторов; первая оказалась наилучшим решением из всех, что я опробовал.



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







Прогресс обучения нейронной сети на слегка измененном примере (с большим количеством обрабатываемых слов)



Здесь наглядно показано, как точность обучения стремится к единице и выравнивается.



Неплохо, но инженера больше волновало увеличение точности. Как и ранее, первым делом он задался вопросом: «Можно ли быстро поменять формат представления признаков, чтобы помочь нейронной сети?» Модуль Keras, превращающий текст в матрицы, имеет несколько вариантов помимо создания двоичных матриц: матрицы со счётчиками слов, частотами или значениями TF-IDF.



Изменять количество слов, хранимых в матрицах в виде признаков, также оказалось несложно, так что Куренков написал несколько циклов, оценивающих, как влияет тип признаков и количество слов на точность тестов. Получился интересный график:







Точность теста в зависимости от типа признаков и того, сколько слов взято в качестве признаков (базовая точность учитывает k ближайших «соседей»)



Здесь впервые стало понятно, что нужно увеличить количество слов до значения, превышающего 1 000. Также было интересно увидеть, что тип признаков, отличающийся простотой и наименьшей информационной плотностью (бинарный), оказался не хуже и даже лучше других типов, передающих больше информации о данных.



Хотя это довольно предсказуемо – скорее всего, более интересные слова типа «code» или «grade» полезны для категоризации писем, и единичное их появление в письме так же важно, как и большее число упоминаний. Без сомнения, наличие информативных признаков может быть полезно, но может и понизить результаты теста из-за увеличения вероятности переобучения.



В общем, мы видим, что бинарные признаки показали себя лучше других и что увеличение количества слов отлично помогает достижению 87%-88% точности.



Инзенер также просмотрел базовые алгоритмы, чтобы убедиться, что что-то вроде метода k ближайших соседей (scikit) не является (по эффективности) эквивалентом нейронных сетей – это оказалось правдой. Линейная регрессия сработала даже хуже, так что выбор нейронных сетей вполне обоснован.



Увеличение количества слов, кстати, не проходит даром. Даже с кэшированной версией данных, когда не надо было каждый раз парсить почту и извлекать признаки, запуск всех этих тестов занимал массу времени:



image



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



Увеличение количества слов помогло, но экспериментатор всё ещё не мог достичь желанного порога в 90%. Поэтому следующей мыслью было придерживаться 2 500 слов и попробовать изменить размер нейронной сети. Кроме того, как оказалось, модель из примера Keras имеет 50%-ную dropout-регуляризацию на скрытом слое: инженеру стало интересно посмотреть, действительно ли это увеличивает эффективность работы сети. Он запустил ещё один набор циклов и получил ещё один прекрасный график:



image



График изменения точности для различных вариантов dropout-регуляризации и размеров скрытого слоя



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



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



image



И вновь время вычислений растет линейно при увеличении нейронов скрытого слоя



Но это не совсем точно. Проведя больше запусков с большим количеством признаков, инженер обнаружил, что стандартный размер скрытого слоя (512 нейронов) работает значительно лучше, чем более маленькие скрытые слои:







Сравнение эффективности работы слоев с 512 и 32 нейронами соответственно



Остается лишь констатировать то, что и так было известно: чем больше слов, тем лучше.



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280296/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Как навести порядок в почтовом ящике с помощью нейронной сети. Часть 1

Суббота, 26 Марта 2016 г. 11:47 (ссылка)

image



В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. Мы уже обсудили сложности борьбы со спамом, будущее email, вопросы защиты почтовой переписки, а также техники работы с email, применяемые руководителями крупных ИТ-компаний. 



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



Код проекта доступен здесь.



Начало



Куренков пишет, что один из его любимых мини-проектов, EmailFiler, появился благодаря заданию на курсе «Введение в машинное обучение» в Технологическом Институте Джорджии. Задание состояло в том, чтобы взять какой-либо набор данных, применить к нему ряд контролируемых обучающихся алгоритмов и проанализировать результаты. Суть в том, что по желанию можно было использовать собственные данные. Разработчик так и поступил – экспортировал данные своего gmail для исследования возможностей машинного обучения в решении задачи сортировки электронной почты.



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



Так возникла идея проекта по созданию классификатора, который мог бы предложить единственную категорию для каждого входящего письма – так, чтобы отправлять письмо в соответствующую папку одним нажатием кнопки.



image



Категории (папки) и количество писем в каждой из них на момент старта проекта



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



Любой, кто изучал обработку естественных языков, сразу предложит один простой подход – использование модели Bag of Words (Множество слов). Это один из простейших алгоритмов классификации текстов – найти N общих слов для всех текстов и составить таблицу бинарных признаков для каждого слова (признак равен 1, если заданный текст содержит слово, и 0 – если не содержит).



Куренков проделал это для группы слов, найденных во всех его письмах, а также для топ-20 отправителей писем (так как в некоторых случаях отправитель строго коррелирует с категорией письма; например, если отправитель –научный руководитель в университете, то категорией будет «Исследования») и для топ-5 доменов, с которых ему присылали письма (поскольку домены типа gatech.edu строго указывают на такие категории как, например, «Обучение»). Так, где-то после часа, потраченного на написание парсера электронной почты, он смог получать данные о своём ящике в формате csv (значения, разделённые запятыми).



Насколько хорошо все работало? Неплохо, но хотелось большего. Куренков говорит, что тогда увлекался фреймворком для машинного обучения Orange ML на Python, и, как и было положено по заданию, протестировал несколько алгоритмов на своем наборе данных. Выделялись два алгоритма – лучше всего показали себя деревья принятия решений, а хуже всего – нейронные сети:



image



Так с небольшим набором данных справились деревья принятия решений



image



А так – нейронные сети



Если внимательно взглянуть на эти графики из OpenOffice Calc, то можно увидеть, что лучший результат деревьев принятия решений на тесте – где-то 72%, а нейронных сетей – жалкие 65%. Ужас! Это, конечно, лучше, чем разложить всё наугад, учитывая, что там 11 категорий, но до отличного результата далеко.



Почему же результаты оказались такими удручающими? Дело в том, что признаки, полученные для набора данных, оказались весьма примитивны – простой поиск 500 наиболее часто встречающихся в письмах слов даст нам не так уж много полезных индикаторов, но много общеупотребительных конструкций, которые встречаются в английском, например «that» или «is». Инженер понял это и предпринял следующее: полностью убрал из списка слова из трёх и менее букв и написал немного кода, чтобы выбрать наиболее часто встречающиеся слова для каждой категории отдельно; но он все еще не представлял, как улучшить результат.



Попытка номер два



Спустя пару лет Куренков решил еще раз попытаться решить задачу — хоть сам проект в университете уже был давно сдан, хотелось улучшить результаты.



В этот раз инженер решил в качестве одного из основных инструментов применить Keras, потому как он написан на Python и также неплохо ладит с пакетами NumPy, pandas и scikit-learn и поддерживается библиотекой Theano.



К тому же получилось так, что у Keras есть в лёгком доступе несколько примеров, с которых можно начать работу, включая задачу классификации разнообразных текстов. И вот, что интересно – данный пример использует такие же функции, какие инженер использовал ранее. Он определяет 1000 наиболее часто встречающихся в документах слов, бинарные признаки и обучает нейронную сеть с одним скрытым слоем и dropout-регуляризацией предсказывать категорию заданного текста, основываясь исключительно на этих признаках.



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




Using Theano backend.
Label email count breakdown:
Personal:440
Group work:150
Financial:118
Academic:1088
Professional:388
Group work/SolarJackets:1535
Personal/Programming:229
Professional/Research:1066
Professional/TA:1801
Sent:513
Unread:146
Professional/EPFL:234
Important:142
Professional/RISS:173
Total emails: 8023


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



7221 train sequences
802 test sequences
Building model...
Train on 6498 samples, validate on 723 samples
Epoch 1/5
6498/6498 [==============================] - 2s - loss: 1.3182 - acc: 0.6320 - val_loss: 0.8166 - val_acc: 0.7718
Epoch 2/5
6498/6498 [==============================] - 2s - loss: 0.6201 - acc: 0.8316 - val_loss: 0.6598 - val_acc: 0.8285
Epoch 3/5
6498/6498 [==============================] - 2s - loss: 0.4102 - acc: 0.8883 - val_loss: 0.6214 - val_acc: 0.8216
Epoch 4/5
6498/6498 [==============================] - 2s - loss: 0.2960 - acc: 0.9214 - val_loss: 0.6178 - val_acc: 0.8202
Epoch 5/5
6498/6498 [==============================] - 2s - loss: 0.2294 - acc: 0.9372 - val_loss: 0.6031 - val_acc: 0.8326
802/802 [==============================] - 0s
Test score: 0.585222780162


Точность: 0.847880299252



85% точности! Это намного выше жалких 65% старой нейронной сети. Отлично.



Но…почему?



Старый код делал, в общем-то, следующее – определял наиболее часто встречающиеся слова, создавал бинарную матрицу признаков и обучал нейронную сеть с одним скрытым слоем. Может быть, всё из-за нового нейрона «relu», dropout-регуляризации и использования методов оптимизации, отличных от стохастического градиентного спуска? Поскольку признаки, найденные по старым данным, бинарные и представлены в виде матрицы, их очень легко превратить в набор данных для обучения этой нейронной сети. Итак, вот результаты:



Epoch 1/5
6546/6546 [==============================] - 1s - loss: 1.8417 - acc: 0.4551 - val_loss: 1.4071 - val_acc: 0.5659
Epoch 2/5
6546/6546 [==============================] - 1s - loss: 1.2317 - acc: 0.6150 - val_loss: 1.1837 - val_acc: 0.6291
Epoch 3/5
6546/6546 [==============================] - 1s - loss: 1.0417 - acc: 0.6661 - val_loss: 1.1216 - val_acc: 0.6360
Epoch 4/5
6546/6546 [==============================] - 1s - loss: 0.9372 - acc: 0.6968 - val_loss: 1.0689 - val_acc: 0.6635
Epoch 5/5
6546/6546 [==============================] - 2s - loss: 0.8547 - acc: 0.7215 - val_loss: 1.0564 - val_acc: 0.6690
808/808 [==============================] - 0s
Test score: 1.03195088158


Точность: 0.64603960396



Итак, старое решение по определению категорий электронных писем было неудачным. Возможно причиной стало сочетание сильных ограничений признаков (вручную определённые топовые отправители, домены и слова из каждой категории) и слишком маленького количества слов.



Пример, использующий Keras, просто отбирает 1000 наиболее часто встречающихся слов в большую матрицу без дополнительного фильтрования и передает её нейронной сети. Если сильно не ограничивать отбор признаков, из них могут быть выбраны более подходящие, что увеличивает общую точность работы алгоритма.



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



Теперь возникал новый вопрос – можно ли добиться еще более высокой точности?



Продолжение следует…



Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/280198/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<email - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda