Ес­ли спро­сить меня, какая про­фес­сия будет самой вос­тре­бован­ной в обоз­римом будущем, то я бы ска­зал, что это data scientist. У этой про­фес­сии даже нет нор­маль­ного рус­ско­языч­ного ана­лога, в луч­шем слу­чае — это прос­то дос­ловный перевод «уче­ный по дан­ным». Тем не менее сло­во «ана­литик» впол­не отра­жает суть дела.

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

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

 

Работа мечты и buzzwords

Ког­да я учил­ся на кафед­ре вычис­литель­ной физики СПбГУ, мне говори­ли, что из физиков получа­ются отличные сис­темные адми­нис­тра­торы. Не самое мотиви­рующее выс­казыва­ние, которое мож­но услы­шать... И надо ска­зать, чис­ленные методы и ста­тис­тика могут отвра­тить от себя поч­ти любого челове­ка. Имен­но поэто­му во вре­мя обу­чения меня гораз­до боль­ше инте­ресо­вало прог­рамми­рова­ние. Если бы кто‑то тог­да ска­зал мне, что я буду при­менять зна­ния из области чис­ленных методов в сво­ей деятель­нос­ти и соз­дам ком­панию, которая будет занимать­ся иссле­дова­ниями в области обра­бот­ки дан­ных, то я бы ему прос­то не поверил. Одна­ко все слу­чилось имен­но так.

В пос­леднее вре­мя одним из самых час­то зву­чащих трен­дов в биз­несе явля­ется работа с боль­шими дан­ными (big data) и при­мене­ние ана­лиза дан­ных (data mining) для дос­тижения опре­делен­ных целей ком­пании. Цели эти, как пра­вило, сво­дят­ся к извле­чению ком­мерчес­кой выгоды, хотя быва­ют и исклю­чения: Google, нап­ример, смог пред­ска­зать раз­витие эпи­демии грип­па на осно­ве зап­росов поль­зовате­лей с уче­том геог­рафичес­кой при­вяз­ки и путем сопос­тавле­ния с информа­цией о пре­дыду­щих эпи­деми­ях.

Вы­руч­ка ком­пании Amazon воз­росла на 20% пос­ле того, как на сай­те внед­рили сис­тему, поз­воля­ющую адап­тировать интерфейс и содер­жимое стра­ниц инди­виду­аль­но под каж­дого поль­зовате­ля на осно­вании исто­рии его покупок и дан­ных о том, какие товары чаще все­го при­обре­тают­ся вмес­те.

Су­щес­тву­ют и более экзо­тичес­кие при­меры при­мене­ния ана­лиза дан­ных в ком­мерции. Еще в 2004 году сеть супер­марке­тов Wal-Mart готови­лась к нас­тупле­нию ура­гана «Фрэн­сис» и про­ана­лизи­рова­ла то, как меня­ется спрос на товары непос­редс­твен­но перед бедс­тви­ем. И хотя такие получен­ные резуль­таты, как при­обре­тение боль­шего количес­тва воды в бутыл­ках, было лег­ко спрог­нозиро­вать, дру­гие выяв­ленные законо­мер­ности ока­зались не впол­не оче­вид­ными: пос­ле обра­бот­ки огромно­го количес­тва дан­ных ока­залось, что спрос на зем­лянич­ное печенье перед ура­ганом воз­раста­ет в семь раз по срав­нению с нор­маль­ным уров­нем спро­са, а пер­вое мес­то сре­ди товаров повышен­ного спро­са занима­ет пиво.

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

По дан­ным кон­салтин­говой ком­пании McKinsey, к 2018 году толь­ко в США недос­таток спе­циалис­тов в области ана­лиза дан­ных будет сос­тавлять от 140 до 190 тысяч, а  дефицит менед­жеров, понима­ющих, как исполь­зовать боль­шие дан­ные для при­нятия решений, в десять раз боль­ше.

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

 

Анализ данных и его применение

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

В этом раз­деле мы рас­смот­рим задачи, встре­чающиеся при работе с дан­ными наибо­лее час­то. Обыч­но выделя­ют сле­дующие типы:

  • клас­сифика­ция;
  • рег­рессия;
  • по­иск подобия;
  • клас­териза­ция;
  • груп­пиров­ка в соот­ветс­твии с сов­мес­тным появ­лени­ем;
  • оп­ределе­ние про­филя;
  • пред­ска­зания свя­зи;
  • ре­дук­ция дан­ных;
  • мо­дели­рова­ние при­чин­но‑следс­твен­ных свя­зей.

Под клас­сифика­цией понима­ют задачу опре­деле­ния того, попадет ли кон­крет­ный объ­ект в один из клас­сов (точ­но или с некото­рой веро­ятностью). Клас­сы, как пра­вило, пред­полага­ются непере­сека­ющи­мися. При­мером такой задачи может слу­жить про­вер­ка сооб­щения в элек­трон­ной поч­те или соци­аль­ной сети на пред­мет спа­ма.

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

Эти две задачи при­над­лежат к клас­су задач машин­ного обу­чения с учи­телем. В таких задачах мы име­ем раз­мечен­ное заранее мно­жес­тво (ког­да для каж­дого набора приз­наков дано зна­чение иско­мого парамет­ра, нап­ример при­над­лежность к клас­су спам / не спам или зна­чение сред­него бал­ла в уни­вер­ситете), на осно­ве которо­го стро­ится модель. По сути, обе задачи занима­ются пред­ска­зани­ем, толь­ко в слу­чае клас­сифика­ции зна­чение дис­крет­но (если речь не идет о 100% веро­ятности попада­ния в класс), а в слу­чае рег­рессии неп­рерыв­но.

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

Клас­териза­ция поз­воля­ет груп­пировать объ­екты сог­ласно их подобию, одна­ко без какой‑либо чет­ко зафик­сирован­ной цели, нап­ример, если мы хотим выяс­нить, обра­зуют ли наши покупа­тели естес­твен­ные груп­пы сог­ласно задан­ному набору приз­наков. Оче­вид­ные клас­теры, сфор­мирован­ные на осно­ве какого‑то одно­го приз­нака, не так инте­рес­ны. Так, раз­делить покупа­телей или поль­зовате­лей по полово­му приз­наку доволь­но три­виаль­но. Одна­ко обыч­но инте­рес­ны груп­пы, которые свя­заны с сег­мента­цией рын­ка. К при­меру, это могут быть клас­теры из поль­зовате­лей в опре­делен­ной воз­рас­тной груп­пе и с опре­делен­ным семей­ным положе­нием. Более того, клас­теры могут сущес­твен­но раз­личать­ся в рам­ках одно­го набора дан­ных в зависи­мос­ти от выбора приз­наков.

Груп­пиров­ка в соот­ветс­твии с сов­мес­тным появ­лени­ем может быть хорошо про­иллюс­три­рова­на на извес­тном при­мере с интернет‑магази­ном и воп­росом «Какие товары обыч­но покупа­ют вмес­те?». На осно­ве таких дан­ных так­же мож­но успешно стро­ить сис­тему рекомен­даций. В отли­чие от задачи поис­ка подобия, где тре­бует­ся най­ти похожие товары вне зависи­мос­ти от поведе­ния поль­зовате­ля, здесь имен­но поведе­ние поль­зовате­ля опре­деля­ет спо­соб груп­пиров­ки.

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

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

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

И пос­ледняя задача, о которой нуж­но ска­зать, — это мо­дели­рова­ние при­чин­но­следс­твен­ных свя­зей.

Мо­дели­рова­ние помога­ет уста­новить вли­яние одних дей­ствий или событий на дру­гие. Такой вид ана­лиза час­то свя­зан с сущес­твен­ными инвести­циями в слу­чай­ные кон­тро­лиру­емые экспе­римен­ты, хотя быва­ет дос­таточ­но ана­лиза уже накоп­ленных дан­ных. Этот про­цесс может сво­дить­ся к поис­ку некото­рого клю­чево­го дей­ствия или события, которое меня­ет сос­тояние объ­екта.

Дос­таточ­но рас­простра­нен­ный при­мер такой задачи — опре­делить, что имен­но пов­лияло на уве­личе­ние показа­телей по про­дажам опре­делен­ного товара (это поз­воля­ет оце­нить эффектив­ность вло­жений в рек­ламную кам­панию).

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

 

Линейная регрессия

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

Ес­ли рас­смат­ривать машин­ное обу­чение с учи­телем (supervised machine learning), а рег­рессия при­над­лежит имен­но к это­му клас­су алго­рит­мов, то схе­матич­но про­цесс мож­но пред­ста­вить с помощью рисун­ка.

Рис. 1. Процесс машинного обучения
Рис. 1. Про­цесс машин­ного обу­чения

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

Рас­смот­рим сле­дующую задачу. Есть дан­ные о вза­имос­вязи воз­раста и арте­риаль­ного дав­ления. Да, для боль­шинс­тва читате­лей это не очень акту­аль­но, но для при­мера в самый раз. Тем более что наш редак­тор, обла­датель выс­шего медицин­ско­го обра­зова­ния, всег­да очень раду­ется, ког­да такие при­меры про­ника­ют на стра­ницы жур­нала :). Итак, у нас есть дан­ные для 30 человек раз­ного воз­раста c раз­ным дав­лени­ем.

Таблица 1. Наши данные для анализа
Таб­лица 1. Наши дан­ные для ана­лиза

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

Рис. 2. Представление данных на графике
Рис. 2. Пред­став­ление дан­ных на гра­фике
 

Немного теории

Да­вай сфор­мулиру­ем это более точ­но: в нашем слу­чае мы ищем модель в виде линей­ной фун­кции одной перемен­ной:

Линейная модель для артериального давления
Ли­ней­ная модель для арте­риаль­ного дав­ления

Для того что­бы най­ти ту самую пря­мую, нам необ­ходимо подоб­рать коэф­фици­енты k0 и k1 сог­ласно какому‑то кри­терию. В качес­тве такого кри­терия удоб­но выб­рать вари­ант метода наимень­ших квад­ратов, то есть миними­зиро­вать сум­му квад­ратов рас­сто­яния этих точек до иско­мой пря­мой. Таким обра­зом, мы дол­жны миними­зиро­вать зна­чение сле­дующей фун­кции отно­ситель­но зна­чений k_0 и k_1:

Функция, с помощью которой мы оцениваем качество модели
Фун­кция, с помощью которой мы оце­нива­ем качес­тво модели

где m — это количес­тво точек в обу­чающей выбор­ке, Age и BP с вер­хним индексом — это соот­ветс­тву­ющие зна­чения в i-й стро­ке таб­лицы. Обыч­но для общнос­ти вмес­то Age и BP в фор­муле пишут прос­то x и y.

Как миними­зиро­вать такую фун­кцию? Для это­го вос­поль­зуем­ся некото­рыми инту­итив­ными сооб­ражени­ями. Рас­смот­рим для начала более прос­тую модель g(k) = k x.

Как мы зна­ем еще со шко­лы, это пря­мая, про­ходя­щая через центр, с тан­генсом угла нак­лона, рав­ным k. А как в таком слу­чае выг­лядит фун­кция J(k)? Лег­ко про­верить, что это прос­то парабо­ла. В слу­чае с дву­мя перемен­ными k_0 и k_1 фун­кция J(k_0, k_1) пред­став­ляет собой эллипти­чес­кий парабо­лоид. И в том и в дру­гом слу­чае мы фун­кции име­ют единс­твен­ный (гло­баль­ный) минимум. Най­ти вер­шину парабо­лы учат еще в шко­ле, но для более слож­ных фигур, таких как парабо­лоид, обыч­но при­ходит­ся исполь­зовать и более общий метод. Один из самых прос­тых методов — это метод гра­диен­тно­го спус­ка. Для того что­бы понять, что это, пот­ребу­ется зна­ние матема­тичес­кого ана­лиза на уров­не пер­вого кур­са, а имен­но зна­ние понятия час­тной про­изводной. Алго­ритм для гра­диен­тно­го спус­ка выг­лядит в общем слу­чае сле­дующим обра­зом. Сна­чала выберем про­изволь­ные зна­чения k_0 и k_1. Затем вос­поль­зуем­ся сле­дующей ите­ратив­ной про­цеду­рой:

Градиентный спуск
Гра­диен­тный спуск

Идея алго­рит­ма доволь­но прос­тая, мы дви­гаем­ся в нап­равле­нии миними­зации зна­чения иско­мой фун­кции J(k_0, k_1) начиная с некото­рой изна­чаль­ной выб­ранной точ­ки. Стро­го говоря, при­веден­ный алго­ритм сущес­твен­но более общий и работа­ет для нахож­дения локаль­ного миниму­ма для сущес­твен­но более широко­го клас­са фун­кций J. Одна­ко имен­но в слу­чае эллипти­чес­кого парабо­лоида и его ана­логов для задач линей­ной рег­рессии боль­шей раз­мернос­ти, то есть ког­да у нас есть не два коэф­фици­ента, а боль­ше, наш алго­ритм поз­воля­ет най­ти иско­мый гло­баль­ный минимум.

Ес­ли вычис­лить час­тную про­изводную для нашей фун­кции h, то мы получим сле­дующий вари­ант гра­диен­тно­го спус­ка:

Реализация градиентного спуска
Ре­али­зация гра­диен­тно­го спус­ка

Ко­эффи­циент \alpha опре­деля­ет величи­ну шага, с которым мы дви­гаем­ся в нап­равле­нии гра­диен­та фун­кции. На прак­тике этот шаг дол­жен быть дос­таточ­но мал, что­бы обес­печить нуж­ную точ­ность, с дру­гой сто­роны, он дол­жен быть таким, что количес­тво шагов было при­емле­мым с вычис­литель­ной точ­ки зре­ния.

Пос­ле того как най­дены иско­мые коэф­фици­енты, мы можем пред­ска­зать зна­чение арте­риаль­ного дав­ления для любого воз­раста, прос­то под­ста­вив в получен­ную фор­мулу для h соот­ветс­тву­ющее зна­чение воз­раста.

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

Ес­ли рас­смот­реть слу­чай нес­коль­ких перемен­ных, то фун­кция h будет иметь сле­дующий вид:

Линейная модель
Ли­ней­ная модель

Лю­ди, зна­комые с линей­ной алгеброй, тут же дол­жны заметить, что все это лег­ко мож­но записать в век­тором (мат­ричном) виде. Обра­тим вни­мание, что век­тор k при­над­лежит (n + 1)-мер­ному прос­транс­тву, а век­тор x, в свою оче­редь, n-мер­ному. Это лег­ко поп­равить, допол­нив век­тор x коор­динатой x_0 = 1. Тог­да пос­леднее выраже­ние мож­но записать прос­то как h(k) = , где угло­вые скоб­ки име­ют смысл ска­ляр­ного про­изве­дения. Любите­лям матема­тики пред­лага­ется (о, Ири­на, это же тебе пред­лага­ется! И А. Самусен­ко давай еще прив­лечем :). — Прим. ред.) в качес­тве упражне­ния, сле­дуя нашим рас­сужде­ниям для слу­чая линей­ной рег­рессии одной перемен­ной, обоб­щить алго­ритм гра­диен­тно­го спус­ка для слу­чая мно­гих перемен­ных.

Ес­ли пой­ти еще даль­ше, то ока­зыва­ется, что задачу линей­ной рег­рессии мож­но решить и не при­бегая к гра­диен­тно­му спус­ку. Положим, что у нас есть m строк исходных дан­ных в таб­лице из n + 1 стол­бца (где пер­вый стол­бец сос­тоит из 1, а осталь­ные пред­став­ляют собой приз­наки, зна­чения которых извес­тны), тог­да решение нашей задачи — решение так называ­емо­го нор­маль­ного урав­нения:

Нормальное уравнение
Нор­маль­ное урав­нение

Здесь Х' — это тран­спо­ниро­ван­ная мат­рица исходных зна­чений свой­ств, а y — век­тор зна­чений величи­ны, которую мы хотим уметь вычис­лять для неиз­вес­тных x_1, ..., x_n. Если же мат­рица X' X вырож­дена, то есть ее опре­дели­тель равен 0, то вмес­то обратной мат­рицы мож­но исполь­зовать псев­дооб­ратную мат­рицу Мура — Пен­роуза.

Ес­ли исполь­зовать прод­винутые средс­тва матема­тичес­кого модели­рова­ния, такие как MATLAB или его откры­тый ана­лог Octave, то наша задача так и будет решать­ся в одну стро­ку:

pinv(X' * X) * X' * y

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

 

Практика

Су­щес­тву­ют раз­ные мне­ния о том, какие инс­тру­мен­ты луч­ше все­го исполь­зовать для ана­лиза дан­ных. Мно­гие пред­почита­ют связ­ку Python/NumPy, дру­гие исполь­зуют MATLAB или Octave, кому‑то нра­вит­ся хар­дкор, и они пишут на Haskell.

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

Для начала нуж­но пос­тавить R. Рекомен­дую ска­чивать пос­леднюю вер­сию R c сай­та
www.r-project.org (линук­соиду на замет­ку: через менед­жер пакетов при­дет не пос­ледняя вер­сия).
В качес­тве сре­ды раз­работ­ки могу пореко­мен­довать RStudio.

На самом деле уста­нов­ка инс­тру­мен­тов зай­мет у тебя сущес­твен­но боль­ше вре­мени, чем решение нашей задачи.

Пер­вое, что нуж­но сде­лать, — это открыть нуж­ный CSV-файл с дан­ными.

bp <- read.csv("age_systol.csv")

Заг­лянуть в то, что было про­чита­но, мож­но, прос­то наб­рав наз­вание перемен­ной, в которую дан­ные из CSV-фай­ла были заг­ружены (то есть sysdata в дан­ном слу­чае). Для визу­али­зации дан­ных мож­но вос­поль­зовать­ся фун­кци­ей plot.

plot(Pressure~Age, data=bp)

Пос­ле чего уви­дим рас­пре­деле­ние точек на плос­кости, которое мы уже видели на рис. 2.

Те­перь решим нашу задачу:

res <- lm(formula=Pressure~Age, data=bp)
coefficients(res)

Ли­ней­ная модель содер­жит в себе мно­го информа­ции, пос­ледняя фун­кция выводит на экран
ко­эффи­циен­ты линей­ной модели:

<!-- Результат выполнения последней операции в консоли R -->
(Intercept) Age
98.7147181 0.9708704

Та­ким обра­зом, для нашей задачи k_0 = 98,71, а k_1 = 0,97. Мы лег­ко можем добавить гра­фик соот­ветс­тву­ющей линей­ной фун­кции пря­мо на пос­ледний рисунок:

abline(res, col=2)

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

Рис. 3. Прямая, минимизирующая функцию J
Рис. 3. Пря­мая, миними­зиру­ющая фун­кцию J

Та­ким обра­зом, для любого зна­чения воз­раста мы можем пред­ска­зать арте­риаль­ное дав­ление
по фор­муле h(Age) = 98,71 + 0,97 * Age.

 

Вместо заключения

Те, кто хочет более деталь­но пог­рузить­ся в воп­росы, свя­зан­ные с линей­ной рег­ресси­ей и машин­ным обу­чени­ем, могут обра­тить­ся к прек­расно­му кур­су лек­ций Andrew Ng, которые лег­ко най­ти в интерне­те. Он в качес­тве инс­тру­мен­та исполь­зует Octave, а не R, одна­ко методы оста­ются теми же. Вви­ду огра­ниче­ния раз­мера статьи у меня не было воз­можнос­ти обоз­начить некото­рые инту­итив­ные сооб­ражения, облегча­ющие понима­ние рег­рессии.

Так­же оста­лись за бор­том мно­гие важ­ные аспекты, такие как мас­шта­биро­вание приз­наков (feature scaling). В тех же лек­циях мож­но почер­пнуть необ­ходимые зна­ния из линей­ной алгебры, которая хоть и в неболь­ших количес­твах, но чрез­вычай­но полез­на при ана­лизе дан­ных. Так­же нас­тоятель­но рекомен­дую кни­гу F. Provost, T. Fawcett «Data Science for Business» (O’Reilly Media, 2013). Обсужда­емый спи­сок задач, воз­ника­ющих в ана­лизе дан­ных, как раз и был взят из этой кни­ги. Кни­га дос­тупна очень широко­му кру­гу читате­лей и не тре­бует прак­тичес­ки никакой спе­циаль­ной матема­тичес­кой под­готов­ки.

Это была пер­вая статья из цик­ла из четырех ста­тей, пос­вящен­ных ана­лизу дан­ных. В сле­дующей рас­сказ пой­дет об исполь­зовании R и визу­али­зации дан­ных. Третья статья будет пос­вящена задачам клас­сифика­ции и клас­териза­ции и раз­личным алго­рит­мам машин­ного обу­чения. А в пос­ледней я рас­ска­жу об инс­тру­мен­тах обра­бот­ки боль­ших дан­ных. В кон­це цик­ла ста­тей обя­затель­но сде­лаю спи­сок must-read книг по этой теме.

Оставить мнение