Team R или Team Python?

„Универсално призната истина е, че учен по данни, който притежава добра основа в компютърните науки и статистиката, трябва да се нуждае от език за програмиране.“

Е, сигурен съм, че това е начинът, по който Джейн Остин щешеда го изрази, ако науката за данните съществуваше през 1813 г., когато Гордост и предразсъдъци беше публикуван за първи път.

Със съществуването на статистика и инструменти за машинно обучение, като Weka, SPSS и AutoML на Google, е лесно да попаднете в капана на вярването, че възможността за програмиране вече няма значение, когато става въпрос за изграждане на кариера в науката за данни .

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

Всъщност, в анализ, който наскоро направих на 100 реклами за работа в областта на науката за данни, изброени в LinkedIn, установих, че 97% от рекламите включват умения за програмиране като критерий за избор.

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

Но с толкова много езици за програмиране, от които да избирате (Wikipedia изброява няколкостотин от тях), откъде да започнете?

Ето шест неща, които трябва да имате предвид, когато избирате език за програмиране за наука за данни:

#1: Какви езици за програмиране искат работодателите?

Както споменах по-рано, наскоро проучих 100 обяви за работа в областта на науката за данни в четири англоговорящи държави (Австралия, Канада, Обединеното кралство и САЩ), намерени в LinkedIn между 22 април 2019 г. и 5 май 2019 г.

Тези обяви за работа бяха избрани така, че да представят широко разрез от типове работодатели, размери, индустрии и работни нива, като чисто управленските роли не бяха взети под внимание.

Въз основа на този анализ открих, че първите три езика за програмиране, търсени от работодателите в учените за данни, са Python (споменат в 90,4% от разглежданите обяви за работа), R (споменат в 73,4% от обявите за работа) и SQL (споменат в 58,5% от обявите за работа).

Това предполага, че ако ще изберете език за програмиране за наука за данни, тогава един от Python, R или SQL е правилният начин.

Въпреки това, докато R и Python са езици за програмиране с общо предназначение, с допълнителни пакети, които позволяват на потребителя да изпълнява повечето от техническите изисквания на науката за данни, включително статистически анализ и машинно обучение, SQL е език за база данни, създаден специално за заявки и манипулиране на данни в релационни бази данни.

Работодателите обикновено изискват SQL умения, защото съхраняват данните си в релационна база данни и искат техните специалисти по данни да имат достъп до тях. Те всъщност не очакват техните специалисти по данни да изпълняват другите аспекти на работата си, като разработване на модели, използвайки SQL.

Въпреки че по-рано съм писал за важността на изучаването на основите на работа с бази данни „тук“, не е нужно да научите много SQL, за да се справите като специалист по данни. Просто научете достатъчно SQL, за да можете да обедините и филтрирате група от таблици и след това съсредоточете вниманието си върху една от Python или R.

Освен това има множество пакети, написани както за Python, така и за R, които позволяват на потребителите да изпълняват SQL заявки от тези езици (например sqlite3 в Python и RSQLite в R), така че за максимална ефективност можете да научите SQL докато изучавате един от R и Python.

#2: Какъв език за програмиране използват всички останали?

Ако вече работите в среда с други учени или специалисти по данни, тогава най-добрият език за изучаване често е езикът, който използват всички около вас (дори ако вече знаете нещо различно).

Причината за това е, че ви поставя в позиция, в която можете да се учите от и да бъдете наставлявани от по-опитните програмисти около вас (като същевременно не ви се подиграват за избора ви на език за програмиране – за някои хора целият R vs Дебатът за Python може да стане много политически).

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

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

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

В анализ, който проведох на годишното проучване на разработчиците на StackOverflow за 2018 г. (което може да се намери тук), открих, че сред респондентите, идентифицирали се като специалисти по данни, Python е най-популярният език, като 76,8% са работили с него в предходните 12 месеца.

За сравнение само 34,0% са работили с R през предходната година, поставяйки го след SQL, HTML, JavaScript, CSS, Bash/Shell, Java и C++.

По подобен начин анализът на отговорите на Kaggle 2018 ML & DS Survey показва, че сред респондентите, които се идентифицират като „вероятно“ или „определено“ специалисти по данни, 60,5% използват Python най-често (което го прави най-популярния език), като R идва на второ място с 16,0%.

#3: За какво ще използвате езика?

R започва живота си като имплементация с отворен код на S/S-Plus, език за програмиране, специално създаден за използване от статистици, който често се преподава в курсове по статистика на университетско ниво.

Въпреки че S/S-Plus са написани така, че по-голямата част от основната функционалност е в основната програма, R е проектиран да бъде разширяем чрез пакети и с течение на времето са написани допълнителни пакети за разширяване на функционалността на R отвъд статистическите техники. Въпреки това, поради произхода си, силната страна на R остава неговата статистическа функционалност.

За разлика от това, Python започна като език за програмиране с общо предназначение, повлиян от C/C++ и Java и предназначен за използване от разработчиците на софтуер. Както при R, Python също е разширяем чрез пакети, но поради естеството на езика с общо предназначение, неговата сила се крие в широчината на функционалността, която тези пакети предоставят.

Python е предпочитаният език за много университетски курсове по компютърни науки (особено тези, свързани с машинно обучение или изкуствен интелект), а пакетите за прилагане на нестатистическа функционалност обикновено се пишат първо на Python, като R пакетите се създават по-късно (или естествено в R или като R интерфейс към пакета Python, какъвто е случаят с Tensorflow, пакетът за дълбоко обучение на Google).

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

Ако обаче планирате да се разклоните отвъд статистиката, по-специално към компютърната наука на науката за данни (включително машинно обучение, задълбочено обучение, обработка на естествен език и компютърно зрение), тогава обмислете използването на Python вместо това.

#4: Какво ще кажете за бъдещето?

За да цитирам Боен клуб, „при достатъчно дълга времева линия степента на оцеляване за всички пада до нула“, и това важи и за езиците за програмиране. Независимо колко популярен е езикът за програмиране днес, в крайна сметка друг език ще дойде да го замести.

От положителна страна, въпреки че езиците за програмиране влизат и излизат от мода, принципите, които са в основата на повечето езици за програмиране, остават същите.

След като сте усвоили концепциите зад функциите, циклите for и while, изразите if/else и типовете променливи, можете сравнително бързо да научите основите на всеки език за програмиране.

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

Уебсайтът за наука за данни KDnuggets провежда ежегодно проучване на избора на софтуер на своите потребители (вижте например тук). През последните три години Python оглавява тази анкета и през петте години от 2015 до 2019 г. използването му е нараснало от 30,3% от анкетираните до 65,8% от анкетираните.

За разлика от това през същия този период използването на R се е увеличило от 46,9% през 2015 г. на 52,1% през 2017 г., преди отново да намалее, обратно до 46,6% през 2019 г.

Сравнение на Google Trends на думите за търсене „Python“ и „R“ през петте години до август 2019 г. показва, че въпреки че „Python“ винаги е била по-популярната дума за търсене, популярността на „R“ остава сравнително равна, докато популярността на „Python“ се е увеличила драматично.

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

#5: Кой език за програмиране ви харесва най-много?

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

R, Python и много други езици, които са популярни сред специалистите по данни, са с отворен код. Можете да изтеглите всеки от езиците, които ви интересуват, и след това, за всеки език, да прекарате около седмица в работа с няколко от въвеждащите уроци, които можете да намерите онлайн.

След като овладеете синтаксиса, задайте си няколко основни задачи, които да изпълните, за да си позволите да извършите подобно сравнение на езиците. Например, като се има предвид набор от данни, който сте изтеглили от източник, като например Kaggle или UCI Machine Learning Repository, можете да опитате следното:

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

В края на процеса изберете езика, който е най-подходящ за вас.

#6: Какво ще кажете за патентованите езици?

Досега тази статия се фокусира основно върху езиците с отворен код, но какво да кажем за техните собствени братовчеди (тоест езици, свързани с комерсиален софтуер), като SAS?

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

Анекдотично ми е известно за няколко организации (включително мултинационални консултантски компании и корпорации), които се отдалечават от софтуер за търговски анализи към алтернативи с отворен код, за да намалят разходите.

Това наблюдение е отразено от „тази статия“, която обсъжда преминаването от SAS към инструменти с отворен код от индустрията и твърди, че „новите дипломанти, навлизащи в работната сила, предпочитат Python и R пред SAS“.

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

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

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

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

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