Fråga:
Avvikelsedetektering i CSV-fil för latitud / longitud
Nicolas Raoul
2014-09-30 08:45:45 UTC
view on stackexchange narkive permalink

Jag har en enorm CSV-fil som innehåller GPS-punkter för hotell i olika städer. Exempel:

  CITY | HOTELL | LATITUDE | LONGITUDEChicago | Bellevue | 41,826 | -87.689Chicago | SuperMt | 41,924 | -87.703Chicago | Starhotel | 44.903 | -93,215Chicago | BestW | 41,743 | -87.641Tokyo | CityStay | 30.212 | 128.435  

Finns det ett program som kan upptäcka outliers? Starhotels latitud / longitud är till exempel helt klart fel och placerar det hundratals kilometer från andra hotell i samma stad.

Krav:

  • Avvikare bör upptäckas i förhållande till spridningen av huvudklustret, till exempel kommer hotell i "Kalifornien" att vara ganska långt ifrån varandra, medan hotell i "East Village" kommer att vara mycket nära varandra. Så "outlier" är relativt spridningen för hela gruppen.
  • Gratis, helst öppen källkod
  • Snabb att konfigurera
  • Fungerar med 300 000 rader 100 MB CSV eller motsvarande RDF- eller OSM-fil
  • Alla operativsystem. Helst kommandorad. Onlineverktyg / API OK om det klarar belastningen.
  • Longitud blir mindre betydande nära syd- / nordpolen. Att beräkna avståndet på ett naivt sätt sqrt (latitudeDelta² + longitudeDelta²) är dock bättre än ingenting, eftersom polackerna inte har många hotell.

Slutmål: fånga upp troliga fel för att skicka dem till mänskliga granskare. 100% noggrannhet behövs inte.

Har du försökt att filtrera filen genom gpsvisualizer.com och använda alternativet "Kassera avvikare"? Jag vet att det är ett onlineverktyg, inte riktigt vad du letar efter.
@Chenmunka: Jag skulle behöva dela filerna för varje stad (tiotusentals) och skicka dem individuellt, inte särskilt bekvämt: - / De verkar inte ha ett API och skulle förmodligen förbjuda mig om jag försökte ...
Ett svar:
Has QUIT--Anony-Mousse
2015-01-04 07:05:25 UTC
view on stackexchange narkive permalink

Först och främst kanske du vill dela upp din datamängd i städer. Detta kommer förmodligen att ge bättre resultat än att hålla ihop allt.

Då är det valda verktyget förmodligen ELKI:

  1. Det innehåller massor av massor av algoritmer för detektering av avvikare. I synnerhet har den Local Outlier Factor (wikipedia), som exakt försöker fånga lokala skillnader i densitet
  2. Den stöder geodetiskt avstånd, med olika jordmodeller
  3. Det kan använda R-trädindex för acceleration, så 300k är inte ett problem (men du kanske ändå vill dela datauppsättningen i städer för bättre resultat; och utan det, ett hotell med titeln "Chicago" men med koordinater i Kalifornien verkar fortfarande vara normalt från koordinaterna). Jag har redan använt 100 000 flerdimensionella datamängder själv; och jag har sett författaren använda 23 miljoner tweets i klustring ...
  4. Öppen källkod, skriven i Java.

Du kanske också vill kontrollera författarna arbeta med att anpassa detektering av avvikare. Detta kan krävas om du vill bearbeta alla 300 000 på en gång och även använda kolumnerna för stad och hotell. (De flesta metoder är utformade för numeriska data!) Från min tolkning av denna modell kanske du vill definiera sammanhanget som hotell i samma stad och sedan jämföra densiteterna.

Schubert, E ., Zimek, A., & Kriegel, HP (2014).
Lokal avvikelsedetektering omprövas: en generaliserad syn på lokalitet med applikationer för detektering av rumsliga, video- och nätverksavvikelser.
Data Mining and Knowledge Discovery, 28 (1), 190-237.

hmm ... tänker på ditt problem, den här kan också vara relevant, upptäcka avvikare i bilolycka och mätdata för radiaktivitet:

Schubert, E., Zimek, A., & Kriegel, HP (2014).
Generaliserad outlier-detektering med flexibla kärntäthetsberäkningar. stark>
I Proceedings of the 14th SIAM International Conference on Data Mining (SDM), Philadelphia, PA.

Jag antar att båda gjordes med ELKI, eftersom det är samma författare ...


Så här använder du ELKI för att utföra avvikande upptäckt:

  1. Separera dina data i en latitud, longitud CSV-fil per stad.
  2. Ladda ner ELKI JAR och öppna den
  3. Konfigurera parametrarna så här:

ELKI parameters

  1. Tryck på Kör uppgift -knappen och du ska få den här:

ELKI graph



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...