Как да мислим като учен с данни в 12 стъпки

Въведение

В момента учените за данни получават много внимание и в резултат книгите за науката за данни се разпространяват. Докато търся добри книги за пространството, ми се струва, че по-голямата част от тях се съсредоточават повече върху инструментите и техниките, а не върху нюансирания характер на процеса на научна информация. Това е така, докато не се натъкнах на „Мисли като учен на данни“ на Брайън Годси - който се опитва да поведе амбициозните учени по данни през процеса като път с много вилици и потенциално непознати дестинации. В него се обсъжда кои инструменти могат да бъдат най-полезни и защо, но основната цел е да се ориентирате по пътя - процесът на науката за данни - интелигентно, ефективно и успешно, за да стигнете до практически решения на реални проблеми, ориентирани към данни.

Жизнен цикъл на проект за научни данни

В книгата Брайън предлага проектът за научни данни да се състои от 3 фази:

  • Първата фаза е подготовка - времето и усилията, изразходвани за събиране на информация в началото на проекта, могат да спестят големи главоболия по-късно.
  • Втората фаза е изграждането на продукта, от планиране до изпълнение, използване на наученото по време на подготвителната фаза и всички инструменти, които статистиката и софтуерът могат да предоставят.
  • Третата и последна фаза завършва - доставяне на продукта, получаване на обратна връзка, извършване на ревизии, поддръжка на продукта и приключване на проекта.

Както можете да видите от изображението, тези 3 фази обхващат 12 различни задачи. Бих искал да използвам тази публикация, за да обобщим тези 12 стъпки, тъй като вярвам, че всеки амбициозен учен може да се възползва от запознаването си с тях.

Фаза I - Подготовка

Процесът на науката за данни започва с подготовка. Трябва да установите какво знаете, какво имате, какво можете да получите, къде сте и къде искате да бъдете. Последният е от изключително значение; проектът в областта на научните данни трябва да има цел и съответните цели. Само когато имате добре дефинирани цели, можете да започнете да изследвате наличните ресурси и всички възможности за придвижване към тези цели.

1 - Поставяне на цели

В проект за научни данни, както в много други области, основните цели трябва да бъдат поставени в началото на проекта. Цялата работа, която вършите след поставянето на цели, е използването на данни, статистика и програмиране, за да се придвижите и постигнете тези цели.

Първо, всеки проект в областта на науката за данни има клиент. Понякога клиентът е някой, който плаща на вас или на вашия бизнес, за да извършите проекта - например, клиент или договаряща агенция. В академичните среди клиентът може да е лаборант, който ви помоли да анализирате техните данни. Понякога клиентът сте вие, вашият шеф или друг колега. Независимо кой е клиентът, те имат някои очаквания за това, което биха могли да получат от вас, ученият по данни, който е получил проекта.

За да разберете подобни очаквания, трябва да зададете добри въпроси относно техните данни. Задаването на въпроси, водещи до информативни отговори и впоследствие подобрени резултати, е важно и нюансирано предизвикателство, което заслужава много повече дискусия, отколкото обикновено се получава. Добрите въпроси са конкретни в техните предположения, а добрите отговори са измерим успех без много големи разходи. Получаването на отговор от проект в науката за данни обикновено изглежда нещо като формулата или рецептата по-долу.

Въпреки че понякога една от съставките - добър въпрос, подходящи данни или проницателен анализ - е по-проста за получаване от останалите, и трите са от решаващо значение за получаването на полезен отговор. Продуктът на всеки стар въпрос, данни и анализ не винаги е отговор, още по-малко полезен. Струва си да повторите, че винаги трябва да сте внимателни и внимателни във всяка стъпка на проекта и елементите на тази формула не са изключение. Например, ако имате добър въпрос, но неподходящи данни, отговор ще бъде трудно да се намери.

Сега е подходящото време да оцените целите на проекта в контекста на въпросите, данните и отговорите, с които очаквате да работите. Обикновено първоначалните цели се задават с някаква бизнес цел. Ако не сте в бизнеса - например в проучвания - тогава целта обикновено е някаква външна употреба на резултатите, като например разширяване на научните знания в определена област или предоставяне на аналитичен инструмент за използване от някой друг.

Въпреки че целите произлизат извън контекста на самия проект, всяка цел трябва да бъде поставена чрез прагматичен филтър, основан на науката за данните. Този филтър включва задаването на тези въпроси: (1) Какво е възможно? (2) Какво е ценно? (3) Какво е ефективно? Прилагането на този филтър към всички предполагаеми цели в контекста на добрите въпроси, възможните отговори, наличните данни и предвидените препятствия може да ви помогне да постигнете солиден набор от цели на проекта, които са, добре, възможни, ценни и ефективни за постигане.

2 - Проучване на данни

Втората стъпка от подготвителната фаза на процеса на научни данни е проучване на наличните данни. Фигурата по-долу показва 3 основни начина, по които даден учен може да получи достъп до данни. Това може да бъде файл във файлова система и ученият за данни може да чете файла в любимия си инструмент за анализ. Или данните могат да бъдат в база данни, която също е във файлова система, но за да получи достъп до данните, ученият трябва да използва интерфейса на базата данни, който е софтуерен слой, който помага да се съхраняват и извличат данни. И накрая, данните могат да стоят зад интерфейс за програмиране на приложни програми (API), който представлява софтуерен слой между ученията на данни и някаква система, която може да е напълно непозната или чужда.

Най-добре е да се запознаете с някои от формите, които данните могат да приемат, както и как да ги преглеждате и манипулирате. Ето някои от тях: плоски файлове (csv, tsv), HTML, XML, JSON, релационни бази данни, нерелационни бази данни, API. Понякога нямате избор да решите кой формат да изберете. Данните идват в определен формат и трябва да се справите с тях. Но ако установите, че този формат е неефективен, грозен или непопулярен, обикновено сте свободни да създадете вторичен магазин за данни, който може да улесни нещата, но с допълнителни разходи от време и усилия, които са ви необходими, за да настроите вторичните данни магазин. За приложения, където ефективността на достъпа е критична, цената може да си струва. За по-малки проекти, може би не. Ще трябва да преминете този мост, когато стигнете до там.

Сега, когато имате някакво излагане на общи форми на данни, трябва да разузнавате за тях. Ето подходите, които трябва да вземете предвид: Google търсене, комбиниране на различни източници на данни, изстъргване на мрежата или сами измерване / събиране. Лично аз съм голям фен на изстъргването в мрежата. Две важни неща, които уеб скреперът трябва да направи добре, са да посещават много URL адреси програмно и да улавят точната информация от страниците. Ако искате да знаете за мрежата на приятелите си във Facebook, теоретично бихте могли да напишете скрипт, който посещава профилите във Facebook на всички ваши приятели, запазва страниците на профила и след това анализира страниците, за да получи списъци с техните приятели, посети приятелите им “ профили и т.н. Това работи само за хора, които са ви позволили да преглеждате техните профили и списъци с приятели и не биха работили за частни профили.

3 - Wrangling Data

Подреждането на данни, третата стъпка, е процесът на вземане на данни и информация в труден, неструктуриран или по друг начин произволен формат и превръщането им в нещо, което конвенционалният софтуер може да използва. Подобно на много аспекти на науката за данни, това не е толкова процес, колкото съвкупност от стратегии и техники, които могат да бъдат приложени в контекста на цялостна стратегия на проекта. Спорът не е задача със стъпки, които могат да бъдат предписани точно предварително. Всеки случай е различен и отнема решение на някои проблеми, за да постигне добри резултати.

Доброто спорене се свежда до солидно планиране, преди да се спори, а след това някои отгатвания и проверка, за да видите какво работи. Прекарването на малко допълнително време за борба с данни може да ви спести много болка по-късно. Като цяло изборът на план за разделяне на данни трябва да зависи силно от цялата информация, която откривате, докато първо проучвате данните. Ако можете да си представите да анализирате данните или да осъществите достъп до тях по някакъв хипотетичен начин - опитвам се да играя ролята на криволичещ скрипт - тогава можете да напишете скрипт, който прави същото. Преструвайте се, че сте криволичен сценарий, представете си какво може да се случи с вашите данни и след това напишете сценария по-късно. Подреждането на данни е толкова несигурен процес, че винаги е най-добре да се проучи малко и да се направи план за борба, базиран на видяното.

Няма нито един начин, нито един инструмент, който да постигне целта за изчистване на разхвърляните данни. Ако някой ви каже, че има инструмент, който може да разгражда всякакви данни, тогава или този инструмент е език за програмиране, или лъже. Много инструменти са полезни за извършване на много неща, но никой инструмент не може да разправи произволни данни. Данните съществуват в толкова много форми и за толкова много цели, че е възможно да не съществува нито едно приложение, което да може да чете произволни данни с произволна цел. Най-просто казано, обработката на данни е несигурно нещо, което изисква конкретни инструменти при конкретни обстоятелства, за да се свърши работата. Можете да опитате да използвате преобразуватели на файлови формати или собствени разпрашители на данни и да напишете скрипт, за да обработите данни.

4 - Оценка на данни

Може да бъде изкушаващо да започнете да разработвате продукт, ориентиран към данни, или сложни статистически методи възможно най-скоро, но ползите от опознаването на вашите данни си струва да пожертвате малко време и усилия. Ако знаете повече за вашите данни - и ако поддържате информираността за тях и как бихте могли да ги анализирате - ще вземате по-информирани решения на всяка стъпка през целия си проект за научни данни и ще извлечете ползите по-късно. Без предварителна оценка (4-та стъпка) можете да срещнете проблеми с отшелници, отклонения, прецизност, специфичност или някакъв брой други присъщи аспекти на данните. За да ги разкрием и да се запознаем по-добре с данните, първата стъпка от анализа на данните след разграждането е да се изчислят някои описателни статистически данни.

Описателната статистика е дисциплината на количественото описание на основните характеристики на събирането на информация или самото количествено описание. Помислете описание, max, min, средни стойности, обобщения на набора от данни. Често е трудно да се обсъжда описателна статистика, без да се споменава инфекциозна статистика. Инференциалната статистика е практиката да използвате данните, за които трябва да извадите - или изведете - знания или количества, за които нямате директни измервания или данни. По отношение на набор от данни можете да кажете следното:

  • Описателната статистика пита: „Какво имам?“
  • Конферентната статистика пита: „Какво мога да заключа?“

Повечето статистици и бизнесмени биха се съгласили, че е необходима инфекциозна статистика, за да се направят повечето от готините изводи: кога световното население ще достигне пик и след това започне да намалява, колко бързо ще се разпространи вирусната епидемия, кога борсата ще нарасне, дали хората в Twitter имат като цяло положителни или отрицателни настроения по дадена тема и т.н. Но описателната статистика играе невероятно важна роля за правенето на тези заключения. Заплаща се да знаете данните, които имате и какво може да направи за вас.

С описателна статистика можете да намерите субекти във вашия набор от данни, които съответстват на определено концептуално описание. Ако работите в онлайн търговията на дребно, бихте могли да считате клиентите за ваши основни субекти и може да искате да идентифицирате онези, които е вероятно да закупят нова система за видеоигри или нова книга от конкретен автор. Ако работите в реклама, може да търсите хора, които най-вероятно ще отговорят на конкретна реклама. Ако работите в областта на финансите, може да търсите акции на фондовия пазар, които са на път да увеличат цената. Ако беше възможно да се извърши просто търсене на тези характеристики, работата ще бъде лесна и няма да се нуждаете от наука или статистика. Но въпреки че тези характеристики не са присъщи на данните (можете ли да си представите наличност, която ви казва кога ще се качи нагоре?), Често можете да ги разпознаете, когато ги видите, поне в ретроспекция. Основното предизвикателство в такива проекти за научни данни е да се създаде метод за своевременно намиране на тези интересни субекти.

Фаза II - Изграждане

След като зададете някои въпроси и си поставихте някои цели, вие проучихте света на данните, подредихте някои конкретни данни и се запознахте с тези данни. Във всяка стъпка сте научили нещо и сега може би вече ще можете да отговорите на някои от въпросите, които сте поставили в началото на проекта. Сега да преминем към фазата на изграждане.

5 - Разработващ план

Петата стъпка е да създадете план. Както в по-ранната фаза на планиране, несигурността и гъвкавите пътеки трябва да бъдат в авангарда на ума ви. Вече знаете повече за вашия проект, така че някои от несигурностите, които са съществували преди, вече не са там, но някои нови се появиха. Мислете за плана си като ориентировъчен маршрут през град с улици, които постоянно се строят. Знаеш къде искаш да отидеш и няколко начина да стигнеш до там, но на всяко кръстовище може да има затворен път, лош трафик или тротоар, който е пълен и се руши. Ще трябва да вземате решения, когато стигнете до тези препятствия, но засега е достатъчно да имате резервен план или два.

Плановете и целите могат да се променят във всеки един момент, давайки нова информация или нови ограничения или по друга причина. Трябва да съобщите значителни промени на всички, участващи в проекта, включително на клиента. Клиентът на проекта очевидно има голям интерес към това какъв трябва да бъде крайният продукт на проекта - в противен случай проектът няма да съществува - така че клиентът трябва да бъде информиран за всички промени в целите. Тъй като повечето клиенти обичат да бъдат информирани, често е препоръчително да ги информират за вашите планове, нови или стари, за това как ще постигнете тези цели. Клиент може също да се интересува от доклад за напредъка, включително какви предварителни резултати имате досега и как сте ги получили, но те са от най-малък приоритет.

Съсредоточете се върху това, което се интересува от клиента: постигнат е напредък и текущите очаквани, постижими цели са X, Y и Z. Те могат да имат въпроси, което е чудесно и може да се интересуват да чуят за всички аспекти на вашия проект , но според моя опит повечето не са. На този етап единственото ви задължително заключение за среща с клиента е, че вие ​​съобщавате ясно какви са новите цели и че той ги одобрява. Всичко останало не е задължително.

Можете също така да помислите да съобщите основния си план на клиента, особено ако използвате някой от техните ресурси за завършване на проекта. Може да имат предложения, съвети или други знания за домейни, които още не сте изпитали. Ако са ангажирани техните ресурси, като например бази данни, компютри, други служители, то със сигурност ще им е интересно да чуят как и колко ще ги използвате.

6 - Анализиране на данни

Шестата стъпка от нашия процес в науката за данни е статистически анализ на данните. Статистическите методи често се считат за почти половината или поне една трета от уменията и знанията, необходими за правенето на добри научни данни. Другото голямо парче е разработка на софтуер и / или приложение, а останалото, по-малко парче е предмет на експертиза или предмет.

От едната страна на статистиката е математиката, а от другата - данните. Математиката - по-специално приложната математика - предоставя статистически данни с набор от инструменти, които дават възможност за анализ и интерпретация. Във всеки случай математиката по принцип не докосва реалния свят. Изхождайки изцяло от логиката и винаги - винаги - започвайки от набор от предположения, математиката първо трябва да приеме свят, който може да опише, преди да започне да го описва. Всяко математическо изявление може да бъде формулирано, за да започне с if (ако предположенията са верни), и това, ако повдигне изявлението и неговото заключение в абстрактност. Това не означава, че математиката не е полезна в реалния свят; точно обратното. Математиката, вместо да бъде наука, е по-скоро речник, с който можем да опишем нещата. Някои от тези неща може да са в реалния свят. Както при речниците, така и в думите, които съдържат, рядко е описание напълно правилно. Целта е да се доближите максимално до корекцията.

Математиката обаче предоставя голяма част от тежките машини, които използва статистиката. Статистическите разпределения често се описват от сложни уравнения с корени, които имат смисъл в практически, научен смисъл. Поставянето на статистически модели често използва техники за математическа оптимизация. Дори пространството, в което се приема, че данните на проекта се намират, трябва да бъде описано математически, дори ако описанието е само „N-мерно евклидово пространство.

В допълнение към математиката, статистиката притежава собствен набор от техники, които са главно ориентирани към данните.

  • Описателната статистика е обикновено интуитивен или прост вид статистика, която може да осигури добър преглед на данните, без да е прекалено сложна или трудна за разбиране. Описателната статистика в известен смисъл обикновено остава близо до данните.
  • Полезната статистика е по същество една или повече стъпки, премахнати от данните. Изводът е процесът на оценка на неизвестни количества въз основа на измерими, свързани количества. Обикновено инфекциозната статистика включва статистически модел, който определя количества, измерими и неизмерими и техните взаимоотношения помежду си. Методите от инфекциозната статистика могат да варират от съвсем прости до диво сложни, вариращи също по своята точност, абстрактност и интерпретируемост.

Статистическото моделиране е общата практика да се описва система с помощта на статистически конструкции и след това да се използва този модел за подпомагане на анализа и интерпретирането на данни, свързани със системата. Както описателната, така и инфекциозната статистика разчитат на статистически модели, но в някои случаи изричното изграждане и интерпретация на самия модел играе второстепенна роля.

При статистическото моделиране основният акцент е върху разбирането на модела и основната система, която той описва. Математическото моделиране е свързана концепция, която поставя повече акцент върху изграждането и интерпретацията на модела, отколкото върху връзката му с данните. Статистическото моделиране се фокусира върху връзката на модела към данните. Ето някои важни понятия в статистическото моделиране, които трябва да знаете:

  • Линейни, експоненциални, полиноми, сплайн, диференциални, нелинейни уравнения.
  • Латентни променливи.
  • Количествено определяне на несигурността: случайност, вариация и термини за грешка.
  • Поставяне на модел: максимална вероятностна оценка, максимална афиниална оценка, очаквано максимизиране, вариационна Байес, Марковска верига Монте Карло, свръх прилягане.
  • Баезийски срещу честистки статистики.
  • Тестване на хипотези.
  • Групирането
  • Анализ на компонентите

Най-далеч от суровите данни е набор от статистически техники, които често се наричат, за по-добри или по-лоши, методи на черната кутия. Терминът черна кутия се отнася до идеята, че някои статистически методи имат толкова много движещи се части със сложни взаимовръзки помежду си, че би било почти невъзможно да се разсече самият метод, тъй като той е приложен към конкретни данни в конкретен контекст. Много методи от машинно обучение и изкуствен интелект отговарят на това описание. Ако се опитате да класифицирате индивиди, появяващи се в набор от данни, в една от няколко категории и приложите техника за машинно обучение, като например произволна гора или невронна мрежа, често ще бъде трудно да се каже, след факта, защо определен индивид е бил класифицирани по определен начин. Данните влизат в черното поле, излиза класификация и обикновено не сте сигурни какво точно се е случило между тях. Ето няколко от най-популярните алгоритми за машинно обучение, които бихте приложили към стойностите на характеристиките, които сте извлекли от вашите данни:

  • Случайна гора
  • Поддръжка на векторна машина
  • Увеличаване
  • Невронна мрежа
  • Дълбоко учене

7 - Инженерен продукт

Следващата ни стъпка е да изградим статистически софтуер. Ако статистиката е рамката за анализ и изготвяне на заключения от данните, тогава софтуерът е инструментът, който поставя тази рамка в действие. Отвъд това, без да работи, информатологът трябва да направи много софтуерни решения за всеки проект. Ако имате любима програма, това често е добър избор, ако няма друга причина освен вашето запознаване с нея. Но може да има основателни причини да изберете нещо друго. Или ако сте нови в науката за данни или статистическия софтуер, може да е трудно да намерите място, където да започнете.

За всеки, който е прекарал значително време в Microsoft Excel или друго приложение за електронни таблици, електронните таблици и приложения, базирани на GUI често са първият избор за извършване на всякакъв вид анализ на данни. Особено, ако данните са в таблична форма, като например CSV и няма твърде много от тях, да започнете с анализ в електронна таблица може да бъде лесно. Освен това, ако изчисленията, които трябва да направите, не са сложни, електронната таблица може дори да може да покрие всички софтуерни нужди за проекта. Често срещаните софтуерни инструменти са Excel, SPSS, Stata, SAS и Minitab. Изучаването на езика за програмиране на един от тези средни средства може да бъде добра стъпка към изучаването на истински език за програмиране, ако това е ваша цел. Тези езици могат да бъдат доста полезни сами. В частност, SAS има голям напредък в статистическите отрасли и изучаването на езика му е разумна цел за себе си.

Езиците за програмиране са много по-универсални от статистическите приложения на средно ниво. Кодът на всеки популярен език има потенциал да направи повечето неща. Тези езици могат да изпълняват произволен брой инструкции на всяка машина, да взаимодействат с други софтуерни услуги чрез API и могат да бъдат включени в скриптове и други части от софтуера. Езикът, който е свързан с неговото родителско приложение, е силно ограничен в тези възможности.

MATLAB е собствена софтуерна среда и език за програмиране, който е добър в работата с матрици. MATLAB струва доста, но има значителни отстъпки за студенти и други свързани с университета хора. Някои хора решиха да го възпроизведат в проект с отворен код, наречен Octave. С напредването на Octave, той става все по-близък до MATLAB в наличната функционалност и възможности. С изключение на кода, който използва пакети за добавки (a.k.a. кутии с инструменти), по-голямата част от кода, написан в MATLAB, ще работи в Octave и обратно, което е хубаво, ако се окажете с някакъв код MATLAB, но без лиценз.

Като цяло MATLAB и Octave са чудесни за инженери (по-специално електрически), които работят с големи матрици в обработката на сигнали, комуникациите, обработката на изображения и оптимизацията, наред с други.

R се основава на програмния език на S, създаден в Bell Labs. Той е с отворен код, но лицензът му е малко по-ограничителен от някои други популярни езици като Python и Java, особено ако създавате комерсиален софтуерен продукт. В сравнение с MATLAB, в R е по-лесно да се зареждат и обработват различни видове данни. MATLAB е добър при работа с таблични данни, но като цяло R е по-добър с таблици с заглавки, смесени типове колони (цяло число, десетични, низове и т.н.), JSON и заявки към база данни. Когато чете таблични данни, R има тенденция към подразбиране, за да върне обект от типа данни. Кадрите от данни са многостранни обекти, съдържащи данни в колони, където всяка колона може да бъде от различен тип данни - например цифрова, низ или дори матрица - но всички записи във всяка колона трябва да са еднакви. Работата с рамки от данни може да бъде объркваща в началото, но тяхната гъвкавост и сила със сигурност са очевидни след известно време.

Едно от предимствата на R да бъде с отворен код е, че е много по-лесно за разработчиците да допринесат за разработването на език и пакети, където сметнат за добре. Тези отворени източници помогнаха на R да нараства значително и да разшири съвместимостта си с други софтуерни инструменти. Хиляди пакети са достъпни за R от уебсайта на CRAN. Това е най-голямата сила на езика R; има вероятност да намерите пакет, който да ви помогне да извършите типа анализ, който искате да направите, така че част от работата е свършена за вас. MATLAB също има пакети, но не толкова много, въпреки че обикновено са много добри. R има добри и лоши и всичко между тях. Ще намерите също и тонове R код, който е свободно достъпен в публичните репо-файлове, но може би не го е превърнал в официален статус на пакета.

Като цяло, R е добър избор за статистици и други, които извършват тежка изследователска работа повече от изграждането на производствен софтуер, например в аналитичната софтуерна индустрия.

Python е мощен език, който може да се използва както за скриптове, така и за създаване на производствен софтуер. Тя се поддава по-естествено на нестатистически задачи като интегриране с други софтуерни услуги, създаване на API и уеб услуги и изграждане на приложения. Вероятно тъй като първоначално Python е език за програмиране с общо предназначение, той има здрава рамка за обектно-ориентиран дизайн.

Въпреки че първоначално Python не е бил предназначен да бъде силно статистически език, за Python са разработени няколко пакета, които го издигат да се конкурира с R и MATLAB. Пакетът numpy за цифрови методи е незаменим при работа с вектори, масиви и матрици. Пакетите scipy и scikit-learn добавят функционалност в оптимизацията, интеграцията, групирането, регресията, класификацията и машинното обучение, сред другите техники. С тези три пакета Python съперничи на основната функционалност както на R, така и на MATLAB, а в някои области, като машинно обучение, изглежда, Python е по-популярен сред учените с данни. За обработка на данни пакетните пакети станаха невероятно популярни. То е повлияно донякъде от представата за рамка от данни в R, но оттогава надмина тази по функционалност. Ако вашият набор от данни е достатъчно голям, за да забави изчисленията, но достатъчно малък, за да се побере в паметта на вашия компютър, тогава пандите може да са за вас.

Един от най-забележителните пакети Python в науката за данни, обаче, е Natural Language Toolkit (NLTK). Това е лесно най-популярният и здрав инструмент за обработка на естествен език (NLP). В наши дни, ако някой анализира и анализира текст от Twitter, информационни канали, корпуса на електронната поща на Enron или някъде другаде, вероятно е използвал NLTK за това. Той използва други инструменти на NLP като WordNet и различни методи за токенизация и създаване, за да предложи най-пълния набор от NLP възможности, намерени на едно място.

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

Макар да не е скриптов език и като такъв не е много подходящ за научноизследователски данни, Java е един от най-известните езици за разработка на софтуерни приложения и поради това често се използва при разработване на аналитични приложения. Много от същите причини, които правят Java лоша за научноизследователската наука за данни, я правят добра за разработване на приложения.

Java не е чудесен за научноизследователски данни, но може да бъде чудесен за мащабен или производствен код, базиран на науката за данните. Java има много статистически библиотеки за всичко, от оптимизация до машинно обучение. Много от тях се предоставят и поддържат от софтуерната фондация Apache.

Избирайки статистическите си софтуерни инструменти, имайте предвид следните критерии:

  • Изпълнение на методите: Ако използвате доста често срещан метод, тогава много инструменти вероятно вече имат изпълнение и вероятно е по-добре да използвате един от тях. Кодът, който вече се използва от много хора, обикновено е сравнително без грешки в сравнение с код, който сте написали за един ден и се използва само веднъж или два пъти.
  • Гъвкавост: Освен че можете да извършите основния статистически анализ, който искате, често е полезно, ако статистическият инструмент може да извърши някои свързани методи. Често ще откриете, че избраният от вас метод не работи толкова добре, колкото се надявахте, а това, което сте научили в процеса, ви кара да вярвате, че различен метод може да работи по-добре. Ако вашият софтуерен инструмент няма алтернативи, тогава или сте останали с първия избор, или ще трябва да преминете към друг инструмент.
  • Информативен: Някои статистически инструменти, особено тези от по-високо ниво, като езици за статистическо програмиране, предлагат възможност да се види вътре почти всеки статистически метод и резултат, дори методи в черно поле като машинно обучение. Тези вътрешности не винаги са удобни за потребителя, но поне са на разположение.
  • Обща: С помощта на софтуер повече хора, които използват инструмент, означават, че повече хора са го изпробвали, са получили резултати, са изследвали резултатите и вероятно са докладвали за проблемите, които са имали, ако има такива. По този начин софтуерът, по-специално софтуерът с отворен код, има контур за обратна връзка, който коригира грешките и проблемите по разумен начин. Колкото повече хора участват в този цикъл за обратна връзка, толкова по-голяма е вероятността част от софтуера да е сравнително свободна от бъгове и по друг начин здрава.
  • Документация за добре: Освен че е в обща употреба, статистическият софтуерен инструмент трябва да има изчерпателна и полезна документация. Това е лош знак, ако не можете да намерите отговори на някои големи въпроси, като например как да конфигурирате входовете за линейна регресия или как да форматирате функциите за машинно обучение. Ако отговорите на големите въпроси не са в документацията, тогава ще бъде още по-трудно да намерите отговори на по-конкретните въпроси, които неизбежно ще срещнете по-късно.
  • Изградена по предназначение: Някои софтуерни инструменти или техните пакети са създадени с конкретна цел, след което други функции са добавени по-късно. Например, процедурите за матрична алгебра в MATLAB и R са били от първостепенно значение при изграждането на езиците, така че е безопасно да се предположи, че те са всеобхватни и стабилни. За разлика, матричната алгебра не е била от първостепенно значение в първоначалните версии на Python и Java и затова тези възможности са добавени по-късно под формата на пакети и библиотеки.
  • Взаимодействителност: Ако работите с база данни, може да бъде полезно да използвате инструмент, който може да взаимодейства директно с базата данни. Ако ще изградите уеб приложение въз основа на вашите резултати, може да искате да изберете инструмент, който поддържа уеб рамки - или поне един, който може да експортира данни в JSON или някакъв друг приятелски уеб формат. Или ако ще използвате статистическия си инструмент на различни видове компютри, ще искате софтуерът да може да работи на различни операционни системи. Не е рядкост да се интегрира статистически софтуерен метод в съвсем различен език или инструмент.
  • Разрешителни лицензи: Ако използвате търговски софтуер за комерсиални цели, може да бъде законово рисковано да го правите с академичен или студентски лиценз. Също така може да бъде опасно да продавате търговски софтуер, модифициран или не, на някой друг, без да потвърждавате, че лицензът не забранява това.

8 - Оптимизиране на данни

Осмата стъпка в нашия процес е да оптимизираме продукт с допълнителен софтуер. Софтуерните инструменти в седмата ни стъпка могат да бъдат многостранни, но по своя характер са статистически. Софтуерът може да направи много повече от статистиката. По-специално, налични са много инструменти, които са предназначени за ефективно съхранение, управление и преместване на данни. Някои могат да направят почти всеки аспект на изчислението и анализа по-бърз и лесен за управление. Ето 4 популярни софтуера, които могат да улеснят работата ви като специалист по данни.

Базите данни са често срещани и шансовете ви да се прехвърлите през една по време на проект са доста високи, особено ако ще използвате данни, които се използват от други доста често. Но вместо само да се натъкнете на такъв, разбира се, може би си струва сами да създадете база данни, която да ви помогне във вашия проект. Двата най-често срещани типа са релационни (SQL) и ориентирани към документи (NoSQL, ElasticSearch). Базите данни и други свързани хранилища от данни могат да имат редица предимства пред съхраняването на вашите данни в компютърната файлова система. Основно, базите данни могат да осигурят произволен достъп до вашите данни - чрез заявки - по-бързо, отколкото файловата система, и те също могат да мащабират до големи размери, с излишък, по удобни начини, които могат да бъдат по-добри от мащабирането на файловата система.

Високопроизводителните изчисления (HPC) е общият термин, който се прилага в случаите, когато има много компютърни задачи и искате да го направите възможно най-бързо. Можете или да използвате суперкомпютър (който е милиони пъти по-бърз от личен компютър), компютърни клъстери (куп компютри, които са свързани помежду си, обикновено през локална мрежа и конфигурирани да работят добре помежду си при извършване на изчисления задачи) или графични единици за обработка (които са чудесни за извършване на високо паралелизиращи се изчисления). Ако имате достъп, HPC е добра алтернатива да чакате вашия компютър да изчисли всички неща, които трябва да бъдат изчислени. Ползата от използването на облачно предлагане на HPC - и някои доста мощни машини са налични - трябва да се претегли спрямо паричните разходи, преди да се включите.

Най-големите доставчици на облачни услуги са предимно големи технологични компании, чиято основна дейност е нещо друго. Компании като Amazon, Google и Microsoft вече разполагат с огромни количества ресурси за изчисляване и съхранение, преди да ги отворят за обществото. Но те не винаги използваха ресурсите до максималния си капацитет и затова решиха както да отдадат под наем излишния капацитет, така и да разширят общия си капацитет, което се оказа серия от изгодни бизнес решения. Предлаганите услуги обикновено са приблизително еквивалентни на функционалността на персонален компютър, компютърен клъстер или локална мрежа. Всички те са достъпни в географски региони по целия свят, достъпни са чрез онлайн връзка и стандартни протоколи за връзка, както и, обикновено, интерфейс на уеб браузър. Ако не притежавате достатъчно ресурси, за да задоволите адекватно нуждите си от наука за данни, струва си да помислите за облачни услуги.

И накрая, можете да опитате технологии с големи данни: Hadoop, HBase и Hive - сред другите. Технологиите за големи данни са проектирани да не движат много данни. Това спестява време и пари, когато наборите от данни са на много големи мащаби, за които са проектирани технологиите. Всеки път, когато изчислителните задачи са свързани с прехвърлянето на данни, големите данни могат да ви дадат тласък в ефективността. Но повече от другите технологии, описани в тази глава, софтуерът за големи данни отнема известно усилие, за да започне работа с вашия софтуер. Трябва да направите този скок само ако имате време и ресурси да се срещнете със софтуера и неговите конфигурации и ако сте почти сигурни, че ще извлечете значителни ползи от него.

9 - План за изпълнение

Последната стъпка от фазата на сглобяване е изпълнението на плана за сглобяване на продукта. Повечето софтуерни инженери вероятно са запознати с изпитанията и изпитанията за изграждането на сложен софтуер, но може да не са запознати с трудността при изграждането на софтуер, който се занимава с данни със съмнително качество. Статистиците, от друга страна, знаят какво е да имаш мръсни данни, но може да има малък опит със създаването на по-висококачествен софтуер. По същия начин, хората в различни роли, свързани с проекта, всеки от които може да притежава различни опит и обучение, ще очакват и ще се подготвят за различни неща.

  • Ако сте статистик, знаете мръсни данни и знаете за пристрастия и завишаването на значението на резултатите. От друга страна, може да нямате голям опит в изграждането на софтуер за бизнеса, особено на производствения софтуер. Трябва да се консултирате със софтуерните инженери с практически опит, за да научите как да подобрите стабилността на вашия софтуер.
  • Ако сте софтуерен инженер, знаете как изглежда жизненият цикъл на разработката и знаете как да тествате софтуера преди внедряването и доставката. Но може да не знаете за данните и колкото и да сте добри в проектирането и разработката на софтуер, в крайна сметка данните ще разбият приложението ви по начини, които никога не са ви хрумвали. Това изисква нови модели на мислене при изграждане на софтуер и ново ниво на толерантност към грешки и грешки, защото те ще се случват толкова по-често. Трябва да се консултирате със статистиците, които са добре запознати с предвиждането и обработката на проблемни данни, като отшелници, липсващи стойности и повредени стойности.
  • Ако започвате в науката за данни, без много опит в статистиката или софтуерното инженерство, всеки с известен опит може да ви даде солиден съвет, ако можете да им обясните вашия проект и целите си. Като начинаещ, на този етап от процеса имате двойно задължение да компенсирате липсата на опит.
  • Ако сте само един член на екип за целите на този проект, комуникацията и координацията са от първостепенно значение. Не е необходимо да знаете всичко, което се случва в екипа, но е необходимо целите и очакванията да са ясни и някой да управлява екипа като цяло.

Планът трябва да съдържа множество пътища и опции, всички в зависимост от резултатите, целите и сроковете на проекта. Колкото и да е добър план, винаги има шанс той да бъде преразгледан с напредването на проекта. Дори и да сте мислили за всички несигурности и сте били наясно с всеки възможен резултат, нещата извън обхвата на плана могат да се променят. Най-честата причина за план, който трябва да се промени, е, че се появява нова информация от източник, външен за проекта, или един или повече от пътищата на плана се променят или самите цели се променят.

С напредването на проекта обикновено виждате, че се натрупват все повече и повече резултати, което ви дава шанс да се уверите, че отговарят на вашите очаквания. Най-общо казано, в проект за научни данни, включващ статистически данни, очакванията се основават или на представа за статистическа значимост, или на някаква друга концепция за практическата полезност или приложимост на тези резултати или и двете. Статистическата значимост и практическата полезност често са тясно свързани и със сигурност не са взаимно изключващи се. Като част от вашия план за проекта, вероятно сте включили цел да постигнете известна точност или значимост в резултатите от вашите статистически анализи. Изпълнението на тези цели би се считало за успех за проекта.

Фаза III - завършване

След като продукт е построен, все още ви остават няколко неща, за да направите проекта по-успешен и да улесните бъдещия си живот. И така, как можем да завършим нашия проект за научни данни?

10 - Доставка на продукт

Първата стъпка от довършителната фаза е доставката на продукта. За да създадете ефективен продукт, който можете да доставите на клиента, първо трябва да разберете перспективата на клиента. Второ, трябва да изберете най-добрата медия за проекта и за клиента. И накрая, трябва да изберете каква информация и резултати да включите в продукта и какво да изключите. Правенето на добър избор по време на създаването и доставката на продукти може значително да подобри шансовете на проекта за успех.

Медиите за доставка могат да приемат много форми. В науката за данните един от най-важните аспекти на продукта е дали клиентът пасивно консумира информация от него или дали клиентът активно ангажира продукта и е в състояние да използва продукта, за да отговори на който и да е от множество възможни въпроси. Различни видове продукти могат да попаднат навсякъде по целия спектър между пасивни и активни:

  • Вероятно най-простият вариант за предоставяне на резултати на клиент, отчет или бяла книга включва текст, таблици, фигури и друга информация, която адресира някои или всички въпроси, на които вашият проект е имал намерение да отговори. Докладите и белите документи могат да бъдат отпечатани на хартия или доставени като PDF файлове или друг електронен формат.
  • В някои проекти за научни данни, анализите и резултатите от набора от данни могат да бъдат използвани и върху данни извън първоначалния обхват на проекта, които могат да включват данни, генерирани след първоначалните данни (в бъдеще), подобни данни от различен източник, или други данни, които все още не са анализирани по една или друга причина. В тези случаи може да бъде полезно за клиента, ако можете да създадете аналитичен инструмент за тях, който може да извършва тези анализи и да генерира резултати върху нови масиви данни. Ако клиентът може да използва този аналитичен инструмент ефективно, той може да му позволи да генерира произволен брой резултати и да продължи да отговаря на основните си въпроси добре в бъдеще и на различни (но подобни) набори от данни.
  • Ако искате да доставите продукт, който е стъпка повече към активен, отколкото аналитичен инструмент, вероятно ще трябва да изградите пълноценно приложение от някакъв вид. Най-важното нещо, което трябва да запомните за интерактивните графични приложения, ако обмисляте да ги доставите, е, че трябва да го проектирате, изградите и разгърнете. Често нито едно от тях не е малка задача. Ако искате приложението да има много възможности и да бъде гъвкаво, проектирането и изграждането му става още по-трудно.

В допълнение към решаването на носителя, в който да предоставите вашите резултати, трябва да решите и кои резултати ще съдържат. След като изберете продукт, трябва да разберете съдържанието, което ще използвате, за да го попълните.

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

11 - Извършване на ревизии

След като доставим продукта, преминаваме към преразглеждане на продукта след първоначална обратна връзка. След като клиентът започне да използва продукта, има потенциал да изскочи изцяло нов набор от проблеми и проблеми. Въпреки вашите усилия, може да не сте очаквали всеки аспект от начина, по който вашите клиенти ще използват (или се опитват да използват) вашия продукт. Дори ако продуктът прави нещата, които би трябвало да прави, вашите клиенти и потребители може да не правят тези неща и да ги правят ефективно.

Получаването на обратна информация е трудно. От една страна, често е трудно да получите конструктивна обратна връзка от клиенти, потребители или някой друг. От друга страна, може да е трудно да слушате отзиви и критики, без да го считате за атака или - неразбиране на продукта, за който сте отделили много време и усилия за изграждането. Някои учени предоставят продукти и забравят за тях. Някои учени предоставят продукти и чакат клиентите да дадат обратна връзка. Някои учени предоставят продукти и непрекъснато подслушват тези клиенти. Често е добра идея да се свържете с клиентите си, за да сте сигурни, че продуктът, който сте доставили, се справя с някои от проблемите, които е бил предназначен да разреши.

Правенето на ревизии на продуктите може да бъде сложно и намирането на подходящо решение и стратегия за внедряване зависи от типа проблем, който сте срещнали и какво трябва да промените, за да го отстраните. Ако по време на целия проект сте поддържали информираността за несигурността и многото възможни резултати на всяка стъпка по пътя, вероятно не е изненадващо, че сега се сблъсквате с резултат, различен от този, който сте очаквали по-рано. Но същата тази информираност може на практика да гарантира, че сте близо до решение, което работи. На практика това означава, че никога не сте очаквали да получите всичко 100% правилно през първия път, така че, разбира се, има проблеми. Но ако сте били старателни, проблемите са малки и поправките са сравнително лесни.

След като разпознаете проблем с продукта и разберете как той може да бъде отстранен, остава решението дали да го отстраните. Първоначалната склонност на някои хора е, че всеки проблем трябва да бъде решен; това не е непременно вярно. Има причини, поради които може да не искате да правите ревизия на продукта, която отстранява проблем, точно както има и причини, поради които бихте искали. Важното е да спрете и да обмислите възможностите, а не да оправяте сляпо всеки открит проблем, което може да струва много време и усилия.

12 - Проект за приключване

Последната стъпка в нашия процес на наука за данни е да го приключим. Тъй като проектът в областта на науката за данни приключва, може да изглежда, че цялата работа е свършена и остава само да отстраните всички останали грешки или други проблеми, преди да спрете да мислите изцяло за проекта и да преминете към следващия един (въпреки непрекъснатата поддръжка и подобряване на продуктите). Но преди да наречете проекта изпълнен, има някои неща, които можете да направите, за да увеличите шансовете си за успех в бъдеще, независимо дали с разширение на същия този проект или с напълно различен проект.

Има два начина, по които правенето на нещо сега може да увеличи шансовете ви за успех в бъдеще. Един от начините е да се уверите, че във всеки момент от бъдещето можете лесно да вземете този проект отново и да го преработите, разширите или промените. По този начин ще увеличите шанса си за успех в последващия проект, в сравнение със случая, когато след няколко месеца или години разкопаете материалите и кода на проекта си и установите, че не си спомняте точно какво ти или как си го направил. Два практически начина да направите това е чрез документиране и съхранение.

Друг начин да увеличите шансовете си за успех в бъдещи проекти е да научите колкото се може повече от този проект и да носите тези знания със себе си във всеки бъдещ проект. Чрез провеждане на проект след смъртта можете да се надявате да изтръгнете полезните уроци от останалите. Това включва преглед на старите цели, стария план, вашия избор на технологии, сътрудничество на екипа и т.н. Независимо дали има конкретен урок, който можете да приложите за бъдещи проекти, или общ урок, който допринася за вашата осведоменост за възможни, неочаквани резултати, мислене чрез проекта по време на прегледа след смъртта може да ви помогне да разкриете полезни знания, които ще ви позволят да правите нещата по друг начин - и да се надяваме, че е по-добре - следващия път.

Ако отнемете само по един урок от всеки проект, той вероятно трябва да е свързан с най-голямата изненада, случила се по пътя. Несигурността може да обхване всеки аспект на вашата работа и запомнянето на всички несигурности, които са причинили проблеми за вас в миналото, може да се надяваме да не се случват подобни. От данните до анализа до целите на проекта, почти всичко може да се промени в кратки срокове. Осъзнаването на всички възможности е не само трудно предизвикателство, но е почти невъзможно. Разликата между добър учен с данни и голям учен с данни е способността да предвиди какво може да се обърка и да се подготви за това.

заключение

Науката за данните все още носи аурата на ново поле. Повечето от неговите компоненти - статистика, разработка на софтуер, решаване на проблеми, базирани на факти, и така нататък - произхождат директно от добре установени, дори стари области, но науката за данни изглежда е ново сглобяване на тези части в нещо ново. Ядрото на науката за данни не се занимава с конкретни реализации на базата данни или езици за програмиране, дори ако те са необходими за практикуващите. Основното е взаимодействието между съдържанието на данни, целите на даден проект и методите за анализ на данни, използвани за постигането на тези цели.

Бих силно да разгледате книгата на Брайън, за да получите повече подробности за всяка стъпка от процеса на научни данни. Той е много достъпен за неексперти в областта на научните данни, софтуера и статистиката. Тя рисува жива картина на науката за данни като процес с много нюанси, предупреждения и несигурност. Силата на науката за данни се състои не в намирането на това какво трябва да се случи след това, а в осъзнаването на това, което може да се случи по-нататък и в крайна сметка да разбере какво се случва след това.

- -

Ако ви хареса това парче, ще ми хареса, ако натиснете клавиша button, за да може други да се натъкнат на него. Можете да намерите моя собствен код в GitHub, както и повече от моите писания и проекти на https://jameskle.com/. Можете също да ме последвате в Twitter, да ми пишете директно по имейл или да ме намерите в LinkedIn. Регистрирайте се за моя бюлетин, за да получавате най-новите си мисли за науката за данни, машинното обучение и изкуствения интелект точно във вашата пощенска кутия!