Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2014-08-05

Getting Lots of Data and Artificial Data


Получилось так, что мое изложение материала последней, 10-ой недели обучения Machine Learning (тема «Large-scale Machine Learning») растянулось аж на четыре статьи. Stochastic Gradient Descent, Map-Reduce, Photo OCR app Example и эта, Getting Lots of Data and Artificial Data + Ceiling Analysis.

Сделав оговорку, что нам не всегда нужны огромные датасеты, можно сказать, что
low biased learning algorithm + masive training set может привести к успеху предприятия.

Есть два подхода к получению больших датасетов:
* генерация данных в дополнение к сбору (расширяя собранные данные);
* генерация данных с нуля.

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

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

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

Часто оказывается, что даже вручную собирая/обрабатывая данные, нужно потратить всего несколько дней для получения набора в 10 раз большего чем уже есть. Данные можно собирать вручную, можно построить автоматический генератор — попробуйте оценить, сколько на это уйдет времени.


Ceiling Analysis: What Part of the Pipeline to Work on Next
Самый ценный ресурс — это наше разработческое время. тратить его надо только на то, что принесет явную пользу. Очень плохо, когда мы тратим недели, месяцы на разработку направления, которое по итогам не даст серьезного улучшения в решении задачи.
Профессор Эндрю знает историю, когда два инженера работали полтора года над удалением фона с картинок (задача была – распознавание лиц или вроде того), сделали офигенную работу и опубликовали научный труд. Но для их задачи этот модуль был не важен, как оказалось. Увы.

Вопрос можно поставить так: на чем сконцентрироваться? Какая часть pipeline, в случае ее улучшения, даст максимальный эффект?
Тут появляется методика Ceiling Analysis.

Для начала нам нужна числовая метрика (например accuracy) для всей системы.
Теперь мы по очереди, один за одним имитируем достижение 100% точности каждого блока pipeline. И замеряем точность всей системы. Какой блок дает наибольший вклад в увеличение точности всей системы, тот блок и надо совершенствовать в первую очередь.


That's all Folks!


original post http://vasnake.blogspot.com/2014/08/getting-lots-of-data-and-artificial-data.html

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)