Како смо пратили и анализирали кораке преко 200.000 људи на МИТ-у

Прво пролеће, имао сам задовољство да узмем 6.С08 (међусобно повезани уграђени системи), који подучава основне ЕЕЦС концепте као што су „боардбоардинг“, криптографија и алгоритамски дизајн.

Иако је час био невероватно дуготрајан и изазован, морам рећи да ми је то био један од најисплативијих часова до сада. Поносан сам што сам сарађивао са неким невероватним људима (узвикујте Авери Лампа, Даниела Гонзалеса и Етхана Вебера за бескрајна сећања) и заједно смо направили коначни пројекат који не бисмо заборавили.

За наш коначни пројекат, наш тим је знао да желимо бити авантуристи. Док је једног дана шетао по сладолед, Авери је предложио уређај за надгледање захтева ВиФи сонди, слично ономе како то раде неки тржни центри. После неколико почетних истраживања и убеђивања према нашим инструкторима, одлучили смо да се посветимо и започели истраживање идеје.

Шта су захтеви за ВиФи сонде?

Већина људи сматра свој телефон пријемником; повезује се на ћелијске / ВиФи мреже и за све практичне сврхе функционалне су само када су повезане. Међутим, када телефони траже ВиФи мреже, они такође шаљу мале пакете информација који се називају захтеви за сондом .

Ови захтеви за сонду шаљу исечке информација као што су јединствена МАЦ адреса (слична отиску прста), РССИ сигнал (логаритамска јачина сигнала) и листа претходних нађених ССИД-ова. Како ће сваки телефон послати једну МАЦ адресу (изузимајући недавне покушаје анонимизације), лако их можемо искористити за праћење ученика који шетају по кампусу.

Прикупљање захтева за сонде

Захтеви за наш коначни пројекат укључују употребу стандардних компоненти 6.С08 које смо користили током семестра: микроконтролер Теенси, ЕСП8266 и ГПС модул. Међутим, с обзиром на малу потрошњу енергије ЕСП8266 (120 мА) и недостатак потребе за јаким ЦПУ-ом, одлучили смо да заобиђемо Теенси. Ова одлука о дизајну тражила је од нас да научимо како да користимо ФТДИ програмере како бисмо покренули имплементацију Ардуина за наше ЕСП-ове, али нам је омогућила да наставимо са окружењем које пружа снажно познавање и ширину библиотека у односу на уграђени АТ- командни фирмвер.

У наредних неколико дана имали смо доказ о концепту који је пратио захтеве за сонде упућене око кампуса; ово је било довољно да ублажи било какве сумње наших професора, и било је све у игри.

Развијање ПОЦ

Сада када смо знали довољно о ​​захтевима за испитивање, наш тим је провео наредних неколико дана пишући инфраструктуру која би нам омогућила да масовно прикупљамо ове захтеве. Написао сам Фласк + МиСКЛ позадину за управљање инфраструктуром уређаја + информацијама, Авери је радио на иОС апликацији како би олакшао примену уређаја, Даниел Гонзалез је створио прелепу унутрашњост наше веб странице, а Етхан је створио аналитичку платформу која је богатство долазних података трансформисала у разумљиви подаци са вредним увидима.

С хардверске стране, Даниел и Етхан су залепили наше ЕСП8266 на прототипске плоче, заједно са неким модулима напајања. Поново смо користили ПоверБоост 1000Цс које нам је предала класа како бисмо ове уређаје учинили у потпуности преносивим, што је имало леп споредни ефекат што нам је омогућио да вршимо праћење на неким уским локацијама.

Важно је напоменути да је динамика тима била апсолутно дивна: заједно смо се смејали, заједно учили и истински уживали у друштву једни других. Распоређивања у 4 ујутро нису била тако лоша када су у питању неки од ваших најбољих пријатеља.

Распоређивање

С обзиром на то да је Етхан написао диван код за аутоматско повезивање уређаја са најближом незаштићеном ВиФи приступном тачком приликом покретања, а Авери је написао апликацију за ажурирање локације + последња премештена поља (корисно за сазнање које МАЦ адресе треба повезати са сваком локацијом), примена било лако попут прикључивања уређаја на оближњу утичницу и осигурања да може да пингује кући. Распоређивање је било прилично угодно ако с њим постанете креативни.

Анализирајући податке

Након пуштања пројекта у рад недељу дана, прикупили смо око 3,5 милиона захтева за испитивање (!). Такође бих желео да приметим да су сви подаци анонимни; ови подаци ни на који начин нису довољно прецизни да би се утврдило мапирање са МАЦ адреса на појединце, ублажавајући већину забринутости због приватности које су имали наши инструктори.

Почели смо применом Етхановог дела на свим локацијама, што је изазвало тренутно узбуђење. Наши подаци су јасно показали периодично понашање иза сваке локације.

Штавише, то је јасно указивало на неке веће трендове у целом кампусу: главне артерије (предворје 10, 26–100) оствариле су највећи промет око 17:00, док су зграде на ивици кампуса (као што је Стата, која има кафић) оствариле највећи промет на подне. Непотребно је рећи да са успостављеном инфраструктуром подаци постају много узбудљивији.

Једном када смо схватили да подаци за ове трендове постоје, почели смо себи постављати још занимљивих питања:

  • Шта бисмо могли закључити о производњи + дистрибуција уређаја на МИТ-у?
  • Шта ако бисмо свој кампус моделирали као мрежни графикон?
  • Постоји ли најчешћа шетња?
  • Још занимљивије, можемо ли предвидети куда ће људи даље ићи с обзиром на историју њихових локација?

Наставили смо да нападамо ове једног по једног.

Анализирајући скуп података

МАЦ адресе заправо пружају мноштво информација у 6 бајтова; ове информације можемо искористити да бисмо утврдили више о људима који нас шетају. На пример, сваки произвођач купује префикс добављача за сваки уређај који производи и то можемо да користимо за одређивање најпопуларнијих уређаја око МИТ-а.

Али ту је и квака - недавни покушаји да НСА користи ову технологију за праћење појединаца довели су до тога да су многи произвођачи анонимизирали захтеве за сондом. Као резултат тога, нећемо моћи у потпуности да утврдимо дистрибуцију уређаја, али можемо да истражимо колико је широко распрострањена анонимизација захтева за сондом.

Иронично је да вас било који уређај који анонимизира захтеве сонде заправо обавештава да то чине - на анонимизираним уређајима је локално адресирани бит (други најмање важан бит) адресе постављен на 1. Стога, покретање једноставног СКЛ упита омогућава нам знамо да скоро 25% уређаја анонимизира МАЦ адресе (прикупљено 891,131 / 3,570,048 захтева за испитивање).

Покретањем листе префикса добављача (прва три бајта МАЦ адресе), видимо да су две од осам најбољих адреса анонимне.

  • Локално адресирано „02: 18: 6а“, 162,589 случајева
  • Локално адресирано „да: а1: 19“, 145.707 појава
  • 74: да: еа из компаније Текас Инструментс, 116,133 појављивања
  • 68: ц4: 4д из компаније Моторола Мобилити, 66.829 појављивања
  • фц: ф1: 36 од Самсунг-а, 66.573 појављивања
  • 64: бц: 0ц од ЛГ-а, 63.200 појава
  • ац: 37: 43 од ХТЦ-а, 60.420 појава
  • ац: бц: 32 од Аппле-а, 55.643 појављивања

Занимљиво је да, иако је Аппле убедљиво највећи играч у захтеву за анонимизацију сонде, они наизглед случајно шаљу стварну адресу с времена на време. За некога ко прати фреквенцију високу попут наше (готово сваке секунде), ово је проблематично; проверили смо са пријатељима који поседују иПхоне и успели смо да пратимо њихову локацију са застрашујућом тачношћу.

Предвиђање будућих локација

Након моделирања студентских шетњи као мрежног графа, схватили смо да можемо лако израчунати вероватноћу одласка на други чвор с обзиром на чвор на коме су претходно били. Даље, схватили смо да се овај граф лако може моделирати као ланац Маркова. С обзиром на почетни скуп темена, куда би даље ишли?

Међутим, ово је представљало значајан изазов: наша база података слабо је разумела када је шетња започела, а када је шетња завршила. Било је то нешто више од депоније координата са локацијама и временским ознакама . Ако сте ручно прегледали шетње, било је јасно када су неки започели, а други завршили, јер би времена била прилично удаљена једно од другог.

То се може разумети испитивањем горње слике. На пример, овај појединац очигледно није прошетао од Стата до зграде Вхитакер, јер су то различити дани. Међутим, наша база података о томе нема појма, а како би сваки следећи покушај употребе ових података донео погрешне резултате .

Занимљиво је да ако ово преструктурирамо као проблем кластерисања података временских серија , то постаје врло интригантно. Шта ако постоји начин за груписање временских жигова, тако да можемо идентификовати разне „шетње“ којима је ученик ишао? Узимајући у обзир недавну бушу око груписања података временских серија, претпоставио сам да би ово био забаван пројекат за започињање лета.

Рашчлањивање базе података у шетње

Да бих најбоље разумео како потенцијално кластерисати податке, требало је да боље разумем временске ознаке. Почео сам са уцртавањем временских ознака на хистограм како бих боље разумео дистрибуцију података. Са задовољством, овај једноставан корак ми је помогао да се уплашим: испоставило се да учесталост захтева сонде с обзиром на удаљеност од ЕСП8266 отприлике прати Гауссову расподелу, дозвољавајући нам да користимо Гауссов модел смеше. Једноставније, могли бисмо само искористити чињеницу да ће временске ознаке следити ову расподелу како би се истиснули појединачни кластери.

Следећи проблем је био у томе што ГММ-у треба рећи колико кластера да користи , а неће га идентификовати сам. Ово је представљало снажно питање, посебно када се узме у обзир да је број шетњи које је сваки појединац пролазио био веома променљив. Са задовољством, успео сам да користим Баиесов информативни критеријум, који квантитативно оцењује моделе с обзиром на њихову сложеност. Ако бих оптимизовао да БИЦ минимизира у односу на величину модела, могао бих да одредим оптималан број кластера без прекомерне опреме; ово се обично назива техником лакта.

БИЦ је у почетку радио прилично добро, али би претјерано кажњавао појединце који су ишли у многе шетње недовољним израчунавањем броја могућих кластера . Упоредио сам ово са оценом Силуета, која оцењује кластер поређењем удаљености унутар кластера са удаљеностом до најближег кластера. Изненађујуће, ово је пружило много разумнији приступ групирању података временских серија и избегло многе замке с којима се БИЦ сусрео.

Скалирао сам своју ДО капљицу да пусти ово неколико дана и развио брзи Фацебоок бот који ће ме обавестити по завршетку. Ако ово не уклоним са пута, могао бих да се вратим послу предвиђајући следеће кораке.

Развијање ланца Марков

Сада када смо сегментирали огроман низ захтева за испитивање у одвојене шетње, могли бисмо развити ланац Марков. То нам је омогућило да предвидимо следеће стање догађаја с обзиром на претходно.

Користио сам Питхон библиотеку Марковифи за генерисање Марковљевог модела датог корпуса из нашег претходног корака, који је упоредно скратио време развоја.

Укључио сам узорак Марков Ланац генерисан горе; ово заправо представља шетњу од студентског напуштања предавања (26–100 је предаваоница) и одласка до његовог студентског дома! Заиста је узбудљиво што је рачунар успео да се ухвати и створи сличну шетњу. Неке локације се понављају, јер је свака забележена локација заправо посматрање. Према томе, ако се локација појави више од других, то једноставно значи да је појединац тамо провео више времена.

Иако је ово примитивно, могућности су прилично узбудљиве . шта ако бисмо могли да искористимо ову технологију за стварање паметнијих градова, радимо против загушења и пружимо бољи увид у то како бисмо могли да смањимо просечна времена пешачења? Могућности науке о подацима у овом пројекту су бескрајне и невероватно сам узбуђена што ћу их наставити.

Закључак

Овај пројекат је био један од најузбудљивијих врхунаца моје бруцошке године и невероватно ми је драго што смо га успели! Желео бих да се захвалим својим невероватним вршњацима са 6.С08, нашем ментору Јое Стеинмеиеру и свим запосленима у 6.С08 који су ово омогућили.

Пуно сам научио док сам користио овај пројекат, од груписања података временских серија до инфраструктуре потребне за праћење захтева за сонде широм кампуса. У прилогу авантура нашег тима приложио сам још неке робе.