[29][SVM]

PYTANIA:

Jaki jest związek między maszyną SVM a utratą zawiasów?

Mój kolega i ja próbujemy ogarnąć różnicę między regresją logistyczną a maszyną SVM. Najwyraźniej optymalizują różne funkcje celu. Czy maszyna SVM jest tak prosta, jak stwierdzenie, że jest klasyfikatorem dyskryminującym, który po prostu optymalizuje utratę zawiasów? A może jest to bardziej skomplikowane? W jaki sposób wektory pomocnicze wchodzą w grę? Co ze zmiennymi luzu? Dlaczego nie masz głębokiej SVM, tak jak nie możesz mieć głębokiej sieci neuronowej z funkcjami aktywacji sigmoidalnej?

ODPOWIEDZI:

Oba są modelami dyskryminującymi, tak. Funkcja utraty regresji logistycznej jest koncepcyjnie funkcją wszystkich punktów. Prawidłowo sklasyfikowane punkty bardzo niewiele dodają do funkcji straty, dodając więcej, jeśli znajdują się blisko granicy. Punkty w pobliżu granicy są zatem ważniejsze dla straty i dlatego decydują o tym, jak dobra jest granica. SVM wykorzystuje utratę zawiasów, która koncepcyjnie kładzie nacisk na punkty graniczne. Coś dalej niż najbliższe punkty nic nie przyczynia się do utraty z powodu „zawiasu” (maks.) Funkcji. Te najbliższe punkty to po prostu wektory pomocnicze. Dlatego faktycznie ogranicza się do wybrania granicy, która tworzy największy margines – odległość do najbliższego punktu. Teoria jest taka, że ​​przypadek agraniczny jest wszystkim, co naprawdę ma znaczenie dla uogólnienia. Minusem jest to, że utrata zawiasów nie jest różnicowalna, ale to tylko oznacza, że ​​potrzeba więcej matematyki, aby odkryć, jak zoptymalizować ją za pomocą mnożników Lagrange’a. Naprawdę nie radzi sobie z przypadkiem, gdy danych nie da się rozdzielić liniowo. Zmienne luzu to sztuczka, która pozwala na włączenie tej możliwości do problemu optymalizacji.

[28][Narzędzia]

PYTANIA

Interfejs API prognoz Google: Jakie metody szkolenia / przewidywania Google Interfejs API prognoz?

Nie mogę znaleźć żadnych szczegółów na temat algorytmów predykcyjnych działających za interfejsem API. Do tej pory zebrałem informacje, że pozwalają one podać kroki przetwarzania wstępnego w formacie PMML

ODPOWIEDZI:

Jeśli spojrzysz na specyfikacje PMML, zobaczysz, jakie masz opcje (takie jak ModelTree, NaiveBayes, Neural Nets i tak dalej).

Użytkownik może korzystać z różnych metod. Dokumentacja pomocy technicznej zawiera wskazówki i porady dotyczące tego, kiedy jeden lub drugi model jest najbardziej odpowiedni.

Google nie publikuje modeli, których używają, ale w szczególności nie obsługują modeli ze specyfikacji PMML. Jeśli przyjrzysz się uważnie dokumentacji na tej stronie, zauważysz, że wybór modelu w schemacie jest wyszarzony, co wskazuje, że jest to nieobsługiwana funkcja schematu. Dokumentacja wyjaśnia, że ​​domyślnie użyje modelu regresji do danych treningowych, który ma odpowiedzi numeryczne, oraz nieokreślonego modelu kategoryzacji dla danych szkoleniowych, których wynikiem są odpowiedzi tekstowe. Interfejs API Google Prediction obsługuje również modele hostowane (chociaż obecnie dostępnych jest tylko kilka modeli demonstracyjnych) oraz modele określone za pomocą transformacji PMML. Dokumentacja zawiera przykład modelu zdefiniowanego przez transformację PMML. (Na tej stronie znajduje się również informacja, że ​​PMML… Elementy modelu nie są obsługiwane). Standard PMML, który Google częściowo obsługuje, to wersja 4.0.1.

Czy potrzebujesz maszyny wirtualnej jako narzędzia do praktyki danych?

Jestem zupełnie nowy w dziedzinie nauki o danych, chcę się w to wgryźć, a jest tam tak wiele narzędzi. Na tych maszynach wirtualnych jest dużo oprogramowania, ale nie udało mi się znaleźć żadnego porównania obok siebie.

To początek moich badań, ale jeśli ktoś mógłby mi powiedzieć, że ktoś jest obiektywnie bardziej bogaty w funkcje, ma większą społeczność wsparcia i jest przydatny na początku, to by to bardzo pomogło: datasciencetoolKIT.org -> vm jest w chwiejnej chmurze (4 GB) i wydaje się bardziej „hip” z R, notebookiem iPython i innymi przydatnymi narzędziami wiersza poleceń (html-> txt, json-> xml itp.).

ODPOWIEDZI:

Potrzebujesz maszyny wirtualnej?

Należy pamiętać, że maszyna wirtualna jest emulacją oprogramowania własnej lub innej konfiguracji sprzętowej maszyny, która może obsługiwać systemy operacyjne. Mówiąc najprościej, działa jako warstwa interfejsu między wirtualnym systemem operacyjnym a własnym systemem operacyjnym, który następnie komunikuje się ze sprzętem niższego poziomu, aby zapewnić obsługę wirtualnego systemu operacyjnego. Oznacza to dla Ciebie:

Minusy

Wsparcie sprzętowe

Wadą technologii maszyn wirtualnych jest to, że obsługuje tylko sprzęt obsługiwany zarówno przez hiperwizora maszyny wirtualnej, jak i system operacyjny gościa. Nawet jeśli system operacyjny gościa obsługuje sprzęt fizyczny, widzi tylko sprzęt wirtualny prezentowany przez maszynę wirtualną. Drugim aspektem obsługi sprzętu wirtualnego jest sprzęt prezentowany systemowi-gościowi. Bez względu na sprzęt w hoście, sprzęt prezentowany w środowisku gościa jest zwykle taki sam (z wyjątkiem procesora, który pokazuje). Na przykład VMware GSX Server przedstawia kartę AMD PCnet32 Fast Ethernet lub zoptymalizowaną, zastrzeżoną kartę sieciową VMware, w zależności od wyboru. Karta sieciowa na hoście nie ma znaczenia. Serwer VMware GSX wykonuje translację między kartą sieciową środowiska gościa a kartą sieciową hosta. Jest to świetne do standaryzacji, ale oznacza również, że sprzęt hosta, którego VMware nie rozumie, nie będzie obecny w środowisku gościa.

Kara za wyniki

Technologia maszyn wirtualnych nakłada ograniczenie wydajności na uruchomienie dodatkowej warstwy powyżej fizycznego sprzętu, ale poniżej systemu operacyjnego gościa. Kara za wydajność różni się w zależności od użytego oprogramowania do wirtualizacji i uruchomionego oprogramowania gościa. To jest znaczące.

Plusy

Izolacja

Jednym z kluczowych powodów zastosowania wirtualizacji jest izolowanie aplikacji od siebie. Uruchamianie wszystkiego na jednej maszynie byłoby świetnie, gdyby wszystko działało, ale wiele razy powoduje niepożądane interakcje, a nawet bezpośrednie konflikty. Przyczyną często są problemy z oprogramowaniem lub wymagania biznesowe, takie jak potrzeba izolowanych zabezpieczeń. Maszyny wirtualne umożliwiają izolowanie każdej aplikacji (lub grupy aplikacji) we własnym środowisku piaskownicy. Maszyny wirtualne mogą działać na tej samej maszynie fizycznej (co upraszcza zarządzanie sprzętem IT), ale są wyświetlane jako niezależne maszyny dla uruchomionego oprogramowania. Do wszystkich celów i celów – z wyjątkiem wydajności, maszyny wirtualne są maszynami niezależnymi. Jeśli jedna maszyna wirtualna ulegnie awarii z powodu błędu aplikacji lub systemu operacyjnego, pozostałe będą nadal działać, zapewniając usługi potrzebne Twojej firmie do sprawnego funkcjonowania.

Normalizacja

Kolejną kluczową korzyścią zapewnianą przez maszyny wirtualne jest standaryzacja. Sprzęt prezentowany w systemie operacyjnym gościa jest w większości jednolity, zwykle z CPU jako jedynym komponentem, który jest „tranzytowy” w tym sensie, że gość widzi to, co znajduje się na hoście. Standaryzowana platforma sprzętowa zmniejsza koszty wsparcia i zwiększa udział zasobów informatycznych, które można przeznaczyć na realizację celów, które zapewnią firmie przewagę konkurencyjną. Maszyny hosta mogą być różne (jak w rzeczywistości często są, gdy sprzęt jest nabywany w różnym czasie), ale maszyny wirtualne będą wyglądać tak samo we wszystkich z nich.

Łatwość testowania

Maszyny wirtualne umożliwiają łatwe testowanie scenariuszy. Obecnie większość oprogramowania maszyn wirtualnych zapewnia migawki i funkcje przywracania. Oznacza to, że możesz zatrzymać maszynę wirtualną, utworzyć migawkę, wykonać więcej operacji na maszynie wirtualnej, a następnie cofać się raz za razem, aż zakończysz testowanie. Jest to bardzo przydatne do tworzenia oprogramowania, ale jest również przydatne do administrowania systemem. Administratorzy mogą wykonać migawkę systemu i zainstalować oprogramowanie lub wprowadzić zmiany konfiguracji, które, jak podejrzewają, mogą zdestabilizować system. Jeśli oprogramowanie instaluje się lub zmiany działają, administrator może zatwierdzić aktualizacje. Jeśli aktualizacje uszkodzą lub zniszczą system, administrator może je wycofać. Maszyny wirtualne ułatwiają także testowanie scenariuszy, umożliwiając sieci wirtualne. Na przykład w VMware Workstation można skonfigurować wiele maszyn wirtualnych w sieci wirtualnej z konfigurowalnymi parametrami, takimi jak utrata pakietów z powodu przeciążenia i opóźnienia. W ten sposób możesz przetestować aplikacje wrażliwe na czas lub wrażliwe na obciążenie, aby zobaczyć, jak działają pod obciążeniem symulowanego dużego obciążenia pracą.

Mobilność

Maszyny wirtualne można łatwo przenosić między maszynami fizycznymi. Większość dostępnego obecnie oprogramowania maszyn wirtualnych przechowuje cały dysk w środowisku gościa jako pojedynczy plik w środowisku hosta. Funkcje migawki i wycofywania są implementowane poprzez przechowywanie zmiany stanu w osobnym pliku w informacjach o hoście. Jeden plik reprezentuje cały dysk środowiska gościa, co sprzyja mobilności maszyn wirtualnych. Przeniesienie maszyny wirtualnej na inną maszynę fizyczną jest tak proste, jak przeniesienie pliku dysku wirtualnego i niektórych plików konfiguracyjnych na inną maszynę fizyczną. Wdrożenie innej kopii maszyny wirtualnej jest tym samym, co przeniesienie maszyny wirtualnej, tyle że zamiast przenoszenia plików, kopiujesz je.

Jakiej maszyny wirtualnej powinienem użyć, jeśli zaczynam?

Data Science Box lub Data Science Toolbox to twoje najlepsze nakłady, jeśli dopiero zaczynasz naukę danych. Mają podstawowe oprogramowanie, którego będziesz potrzebować, a podstawową różnicą jest wirtualne środowisko, w którym każde z nich może działać. DSB może działać na AWS, podczas gdy DST może działać na Virtual Box (najczęściej używanym narzędziu do maszyn wirtualnych).

ODPOWIEDZI :

W większości przypadków praktykujący badacz danych tworzy własne środowisko pracy na komputerze osobistym instalując preferowane pakiety oprogramowania. Zwykle jest to wystarczające i wydajne wykorzystanie zasobów obliczeniowych, ponieważ aby uruchomić maszynę wirtualną (VM) na głównej maszynie, musisz przeznaczyć na nią znaczną część pamięci RAM. Oprogramowanie będzie działało zauważalnie wolniej zarówno na głównej, jak i wirtualnej maszynie, chyba że będzie dużo pamięci RAM. Ze względu na ten wpływ na szybkość nie jest często używane maszyny wirtualne jako główne środowisko pracy, ale są dobrym rozwiązaniem w kilku przypadkach, gdy istnieje potrzeba dodatkowego środowiska pracy.

Maszyny wirtualne należy brać pod uwagę, gdy:

  1. Istnieje potrzeba łatwej replikacji wielu identycznych środowisk komputerowych podczas nauczania kursu lub prezentacji na konferencji.
  2. Istnieje potrzeba zapisania i odtworzenia dokładnego środowiska dla eksperymentu lub obliczenia.
  3. Istnieje potrzeba uruchomienia innego systemu operacyjnego lub przetestowania rozwiązania na narzędziu, które działa na innym systemie operacyjnym.
  4. Chcemy wypróbować pakiet narzędzi programowych przed zainstalowaniem ich na głównym komputerze. Na przykład. istnieje możliwość zainstalowania instancji Hadoop (CDH) na maszynie wirtualnej podczas kursu Wprowadzenie do Hadoop na Udacity.
  5. Maszyny wirtualne są czasami używane do szybkiego wdrażania w chmurze, takich jak AWS EC, Rackspace itp.

Maszyny wirtualne wymienione w pierwotnym pytaniu są wykonane jako łatwe do zainstalowania pakiety oprogramowania do analizy danych. Jest ich więcej niż dwa. Ten post na blogu autorstwa Jeroen Janssens zawiera porównanie co najmniej czterech:

  1. Zestaw narzędzi do analizy danych
  2. Wyszukiwanie w sieci społecznościowej
  3. Zestaw narzędzi do analizy danych
  4. Data Science Box

Księgowość przebiegów i wyników eksperymentów

Jestem naukowcem i lubię testować realne rozwiązania, więc często przeprowadzam wiele eksperymentów. Na przykład, jeśli obliczam wynik podobieństwa między dokumentami, może chciałbym wypróbować wiele miar. W rzeczywistości dla każdego pomiaru może być konieczne wykonanie kilku przebiegów w celu przetestowania wpływu niektórych parametrów. Do tej pory śledziłem wejścia przebiegów i ich wyniki, zapisując wyniki w plikach z tak dużą ilością informacji o wejściach. Problem polega na tym, że uzyskanie określonego wyniku staje się czasem wyzwaniem, nawet jeśli próbuję dodać informacje wejściowe do nazwy pliku. Próbowałem użyć arkusza kalkulacyjnego z linkami do wyników, ale to nie robi dużej różnicy. Jakich narzędzi / procesów używasz do prowadzenia ksiąg swoich eksperymentów?

Niedawno natknąłem się na podobny problem: jak zarządzać wydobywaniem różnych funkcji z dużego zestawu danych, nie wiedząc z góry, jakie byłyby wszystkie. (Nawet wielokrotne obliczanie średnich wartości byłoby kosztowne obliczeniowo.) Ponadto, w jaki sposób zarządzałbym prognozami na podstawie różnych zestawów cech? Oznacza to, że jeśli dodam nową funkcję, skąd mam wiedzieć, które modele trenować na nowych funkcjach? Mogłoby to szybko przerwać śnieżkę w ogromny bałagan. Moje obecne rozwiązanie polega na śledzeniu tego wszystkiego w lokalnej bazie danych NoSQL (MongoDB). Na przykład, mogę mieć funkcje kolekcji, z których każda pozycja ma nazwę, opis sposobu obliczenia funkcji, plik python, który uruchomił ekstrakcję itp. Podobnie modele kolekcji zawierają modele działające na danych. Każdy wpis może mieć nazwę, listę funkcji, które zostały użyte do wyszkolenia modelu, jego ostateczne parametry, przewidywane wartości w przetrzymywanym zestawie testowym, miary dotyczące wydajności modelu itp. Z mojego punktu widzenia ma to liczba korzyści:

* Zapisując prognozy, mogę je później wykorzystać w zestawieniach predykcyjnych.

* Ponieważ śledzę, które funkcje zostały użyte, wiem, które z nich wymagają ponownego przeszkolenia, gdy wydobywam więcej funkcji.

* Zapisując opisy modeli, zapewniam, że zawsze wiem, czego próbowałem. Nigdy nie muszę się zastanawiać: „Czy wypróbowałem LASSO z parametrami regularyzacji ustawionymi przez gridsearch CV?” Zawsze mogę to sprawdzić i przekonać się, jak udany.

Z twojego pytania wynika, że ​​możesz dostosować to podejście do przebiegu problemu. Zainstaluj Mongo lub inną wybraną bazę danych, a następnie zapisz każdy przebieg eksperymentalny, jego dane wejściowe, wyniki i wszystko, co chcesz śledzić w trakcie realizacji projektu. Przynajmniej powinno to być znacznie łatwiejsze do wykonania zapytania niż arkusza kalkulacyjnego.

Czy badacze danych używają Excela?

Uważałbym się za naukowca danych czeladnika. Jak większość (tak myślę), robiłem pierwsze wykresy i pierwsze agregacje w liceum i na studiach, używając Excela. Po ukończeniu, szkoły średniej i ,7-letniego doświadczenia zawodowego szybko podjąłem to, co ja uważamy za bardziej zaawansowane narzędzia, takie jak SQL, R, Python, Hadoop, LaTeX itp. Prowadzimy rozmowy kwalifikacyjne na stanowisko specjalisty ds. danych, a jeden kandydat reklamuje się jako „starszy specjalista ds. danych” (obecnie bardzo burzliwy termin) z +15  lata doświadczenia. Zapytany, jaki jest jego ulubiony zestaw narzędzi, odpowiedział, że to Excel. Wziąłem to za dowód, że nie był tak doświadczony, jak twierdziłby jego życiorys, ale nie był pewien. W końcu to, że nie jest to moje ulubione narzędzie, nie oznacza, że ​​nie należy ono do innych osób. Czy doświadczeni naukowcy danych używają programu Excel? Czy możesz założyć, że nie masz doświadczenia w korzystaniu z programu Excel?

Większość nietechnicznych osób często używa programu Excel jako zamiennika bazy danych. Myślę, że to źle, ale do zaakceptowania. Jednak ktoś, kto podobno ma doświadczenie w analizie danych, po prostu nie może używać programu Excel jako swojego głównego narzędzia (z wyjątkiem oczywistego zadania polegającego na pierwszym spojrzeniu na dane). Wynika to z faktu, że Excel nigdy nie był przeznaczony do tego rodzaju analiz, w związku z czym niezwykle łatwo jest popełniać błędy w programie Excel (nie oznacza to, że nie jest niewiarygodnie łatwo popełniać inny rodzaj błędów przy użyciu innych narzędzi, ale

Excel jeszcze bardziej pogarsza sytuację.) Podsumowując, czego nie ma i jest niezbędny do każdej analizy:

  1. Odtwarzalność. Analiza danych musi być odtwarzalna.
  2. Kontrola wersji. Dobry dla współpracy, a także dla powtarzalności. Zamiast używać xls, użyj csv (wciąż bardzo złożony i ma wiele przypadków brzegowych, ale parsery csv są obecnie dość dobre).
  3. Testowanie. Jeśli nie masz testów, Twój kod jest uszkodzony. Jeśli kod jest uszkodzony, analiza jest gorsza niż bezużyteczna.
  4. Konserwowalność.
  5. Dokładność. Dokładności numerycznej, dokładnej analizy dat, między innymi, naprawdę brakuje w Excelu.

Czy doświadczeni naukowcy danych używają programu Excel?

Widziałem kilku doświadczonych naukowców zajmujących się danymi, którzy używają Excela – albo ze względu na swoje preferencje, albo ze względu na specyfikę ich miejsca pracy i środowiska IT (na przykład wiele instytucji finansowych używa Excela jako głównego narzędzia przynajmniej do modelowania). Myślę jednak, że najbardziej doświadczeni badacze danych uznają potrzebę korzystania z narzędzi, które są optymalne dla określonych zadań, i stosują to podejście.

Czy możesz założyć, że nie masz doświadczenia w korzystaniu z programu Excel? Nie, nie możesz. Jest to następstwem moich wyżej wymienionych myśli. Analiza danych nie oznacza automatycznie dużych zbiorów danych – program Excel jest w stanie wykonać wiele prac związanych z analizą danych. Powiedziawszy to, jeśli specjalista ds. Danych (nawet doświadczony) nie ma wiedzy (przynajmniej podstawowej) o nowoczesnych narzędziach do analizy danych, w tym o dużych danych, jest to nieco niepokojące. Wynika to z faktu, że eksperymenty są głęboko zakorzenione w naturze nauki o danych, ponieważ eksploracyjna analiza danych jest jej istotną, a nawet kluczową częścią. Dlatego osoba, która nie ma ochoty eksplorować innych narzędzi w swojej dziedzinie, mogłaby zająć niższą pozycję wśród kandydatów w ogólnej zdolności do zajmowania stanowiska w dziedzinie danych (oczywiście jest to dość niejasne, ponieważ niektórzy ludzie bardzo szybko się uczą nowy materiał, a ponadto ludzie mogli nie mieć okazji zaspokoić swojego zainteresowania innymi narzędziami z różnych powodów osobistych lub w miejscu pracy). Podsumowując, uważam, że najlepsza odpowiedź doświadczonego badacza danych na pytanie dotyczące preferowanego narzędzia jest następująca: Moim preferowanym narzędziem jest narzędzie optymalne, czyli takie, które najlepiej pasuje do danego zadania.

Program Excel dopuszcza tylko bardzo małe dane i nie zawiera niczego, co byłoby wystarczająco przydatne i elastyczne do uczenia maszynowego, a nawet do kreślenia. Wszystko, co bym zrobił w Excelu, to wpatrywanie się w podzbiór danych, aby po raz pierwszy rzucić okiem na wartości, aby upewnić się, że nie umknie mi nic widocznego dla oka. Tak więc, jeśli jego ulubionym narzędziem jest Excel, może to sugerować, że rzadko zajmuje się uczeniem maszynowym, statystykami, większymi rozmiarami danych lub zaawansowanym drukowaniem. Ktoś taki jak ten nie nazwałbym Data Scientist. Oczywiście tytuły nie mają znaczenia i wiele zależy od twoich wymagań. W każdym razie nie oceniaj na podstawie doświadczeń lub CV. Widziałem CV i znałem ludzi za tym. Nie zakładaj. Przetestuj go! Powinieneś być wystarczająco dobry, aby przygotować test. Wykazano, że same wywiady są prawie bezużyteczne w celu ustalenia umiejętności (pokazują jedynie osobowość). Przygotuj bardzo prosty nadzorowany test uczenia się i pozwól mu korzystać z dowolnego narzędzia, jakie tylko zechce. A jeśli chcesz najpierw przesłuchać ludzi podczas wywiadu, zapytaj go o bardzo podstawowe, ale ważne informacje na temat statystyki lub uczenia maszynowego. Coś, o czym wie każdy z obecnych pracowników.

[27][Rekomendacje]

PYTANIA: Czy częstotliwość kliknięć ma znaczenie?

Czy budując pozycję, na przykład w przypadku wyszukiwarki lub systemu rekomendacji, warto polegać na częstotliwości kliknięć w celu ustalenia trafności wpisu?

ODPOWIEDZI

Ze swojej strony mogę powiedzieć, że używam częstotliwości kliknięć np. W produktach eCommerce. Jeśli połączysz go z dniami roku, może on nawet przynieść wspaniałe sugestie. tj .: mamy dane historyczne z 1 roku dla 2 produktów (Snowboots [], Sandalettes [])

Snowboots [1024,1253,652,123,50,12,8,4,50,148,345,896]

Sandały [23,50,73,100,534,701,1053,1503,1125,453,213,25]

gdzie [0] = styczeń

Jak widać, snowbooty są częściej wyszukiwane w styczniu niż sandały, więc powinieneś zasugerować snowboots komuś, kto szuka butów na twojej stronie lub w styczniu. Możesz również sprawdzić, czy coś jest „świeże” w tej chwili, np. Kiedy ludzie często klikają nieznany produkt, może to być wgląd w nowy trend lub coś takiego. To tylko kilka przykładów, w których możesz wykorzystać częstotliwość kliknięć jako wgląd. Myślę, że nie ma żadnych zasad dotyczących tego, czego można użyć w zaleceniach, o ile ma to sens.

Czy można użyć częstotliwości kliknięcia, a następnie  tak. Czy można używać tylko częstotliwości kliknięć, a następnie prawdopodobnie nie. Trafność wyszukiwania jest znacznie bardziej skomplikowana niż tylko jedna metryka. Istnieją całe książki na ten temat. Rozszerzenie tej odpowiedzi poza zwykłe tak / nie spowodowałoby, że odpowiedź byłaby zdecydowanie zbyt szeroka (i wyrażona w opinii)

Jak należy obchodzić się z danymi niejawnymi w zaleceniu?

System rekomendacji prowadzi dziennik tego, jakie rekomendacje zostały wydane konkretnemu użytkownikowi i czy ten użytkownik je przyjmuje. To jest jak

gdzie 1 oznacza, że ​​użytkownik zaakceptował zalecenie, a -1 oznacza, że ​​użytkownik nie odpowiedział na zalecenie.

 Jeśli mam zamiar wydać zalecenia dla grupy użytkowników na podstawie dziennika opisanego powyżej i chcę zmaksymalizować wyniki MAP @ 3, jak powinienem postępować z niejawnymi danymi (1 lub -1)?

Moim pomysłem jest traktowanie 1 i -1 jako ocen i przewidywanie oceny za pomocą algorytmów typu maszynowego rozkładania na czynniki. Nie wydaje się to jednak właściwe, biorąc pod uwagę asymetrię niejawnych danych (-1 nie oznacza, że ​​użytkownikowi nie podoba się to zalecenie).

Edycja : Pomyślmy o tym w kontekście metody faktoryzacji macierzy. Jeśli traktujemy -1 i 1 jako oceny, będzie jakiś problem. Na przykład użytkownik 1 lubi film A, który osiąga wysokie wyniki w jednym współczynniku (np. Mając wspaniałą muzykę w tle) w przestrzeni ukrytego czynnika. System zaleca film B, który również osiąga wysokie wyniki w „chwalebnej muzyce w tle”, ale z jakiegoś powodu użytkownik 1 jest zbyt zajęty, aby przyjrzeć się rekomendacji, i mamy film kategorii -1 B. Jeśli po prostu traktujemy 1 lub -1 jednakowo , wtedy system może być zniechęcony do polecania filmu z chwalebnym BGM użytkownikowi 1, podczas gdy użytkownik 1 nadal uwielbia film z chwalebnym BGM. Myślę, że takiej sytuacji należy unikać.

Twój system nie jest tylko przeszkolony w zakresie przedmiotów polecanych, prawda? jeśli tak, masz dużą pętlę sprzężenia zwrotnego. Mam nadzieję, że chcesz uczyć się na podstawie wszystkich kliknięć / wyświetleń. Sugerujesz, że nie patrzenie na przedmiot jest sygnałem negatywnym. Zdecydowanie sugeruję, abyś nie traktował tego w ten sposób. Brak interakcji z czymś jest prawie zawsze najlepiej traktowany jako brak informacji. Jeśli masz wyraźny sygnał, który wskazuje na niechęć, na przykład głosowanie w dół (lub może obejrzałeś 10 sekund filmu i zatrzymał się), być może jest to poprawne. Nie interpretowałbym tych danych wejściowych jako danych podobnych do ratingu. (Chociaż w twoim przypadku możesz uciec od tego.) Zamiast tego pomyśl o nich jak o wadze. Pozwala to zarejestrować względną siłę interakcji dodatnich / ujemnych. Na koniec chciałbym zauważyć, że ten artykuł, chociaż jest prawdopodobnie tym, czego szukasz, nie przewiduje ujemnych wag. W ten sposób można go łatwo rozszerzyć. Jeśli dojdziesz tak daleko, mogę wskazać łatwe rozszerzenie, które już istnieje w dwóch znanych mi implementacjach, w Spark i Oryx.

Utwórz najbardziej „średnią” obserwację podobieństwa cosinus

W systemie rekomendacji używam podobieństwa cosinus do obliczania podobieństw między elementami. Jednak w przypadku przedmiotów z niewielką ilością danych chciałbym podzielić je na kategorie w kategorii „przeciętnej” (w sensie ogólnym nie matematycznym). Aby to osiągnąć, próbuję obecnie utworzyć syntetyczną obserwację reprezentującą ten środek punktu drogi. Na przykład, jeśli były to moje obserwacje (wiersze to obserwacje s, cols to cechy):

Strategia, w której po prostu brałam rzeczywistą średnią wszystkich cech z obserwacji, generowałaby syntetyczny punkt danych, taki jak poniżej, który następnie dołączałam do macierzy przed obliczeniem podobieństwa.

[0,5, 0,25, 0,75, 0,5, 0,25, 0,75, 0,25, 0,75, 0,25]

Chociaż może to działać dobrze w przypadku niektórych wskaźników podobieństwa (np. Odległość L1), jestem pewien, że istnieją znacznie lepsze sposoby na podobieństwo cosinus. Chociaż w tej chwili mam problem z wytłumaczeniem kątów między liniami w przestrzeni o dużych wymiarach. Jakieś pomysły?

Robisz właściwą rzecz. Technicznie to uśrednianie prowadzi do obliczenia środka ciężkości w przestrzeni euklidesowej zbioru N punktów. Środek ciężkości działa całkiem dobrze z podobieństwami cosinusa (cosinus kątów między znormalizowanymi wektorami), np. algorytm Rocchio.

Optymalizacja cen produktów wielopoziomowych i sezonowych

Zakładając, że mogę zaspokoić zapotrzebowanie na zakup określonego produktu o różnych poziomach rynkowych. Przykład: Produkt A to towary niskiej jakości. Produkt B to kolejne towary niskiej jakości. Produkty C i D są towarami średniego poziomu, a produkty E i F są towarami wysokiego poziomu. W zeszłym roku zebraliśmy dane dotyczące następujących 1. Którego okresu (sezon – świąteczny? Nie świąteczny?) Reaguje inny produkt poziomu na podstawie ustalonej ceny? Reakcje odnoszą się do tego, ile% produktu jest sprzedawane w określonym przedziale cenowym 2. Jak szybko reaguje rynek po zakończeniu marketingu? Marketing odbywa się w dniu 10 czerwca, a wszystkie produkty są sprzedawane do 18 czerwca w okresie świątecznym, który miał się wydarzyć w lipcu (zajęło 8 dni w tej cenie, aby zakończyć sprzedaż). Jak nauka danych może skorzystać na poleceniu 1. Jeśli powinniśmy naciskać marketing wcześniej czy później? 2. Czy możemy podwyższyć lub obniżyć cenę? (W oparciu o popyt i stopę zamknięcia?) Czy rozumiem, że analiza danych może pomóc marketerowi w tym aspekcie? W którym kierunku powinienem patrzeć, jeśli chcę się o tym dowiedzieć.

Powinieneś być w stanie zastosować regresję liniową, aby znaleźć korelację między czynnikami, które powodują, że Twoje produkty sprzedają się lepiej (lub gorzej). Istnieje wiele korelacji, z którymi można przetestować w tym zestawie danych. Oto niektóre przykłady:

  1. Jeśli produkt został agresywnie wprowadzony na rynek, czy sprzedaje się szybciej?
  2. Jeśli dostępny jest przedmiot niskiego poziomu, czy sprzedaje się mniej przedmiotów wyższego poziomu?
  3. Jeśli dostępnych jest wiele przedmiotów wyższego poziomu, czy ich liczba jest mniej sprzedawana?

Pamiętaj, że korelacja niekoniecznie oznacza związek przyczynowy. Zawsze myśl o innych czynnikach, które mogą powodować wzrost i spadek sprzedaży. Na przykład możesz sprzedawać więcej przedmiotów na wyższym poziomie w sezonie o rok niż w innym. Ale może to wynikać ze zmian w całej gospodarce, a nie ze zmian cen. Drugą rzeczą, którą możesz zrobić, to przeprowadzić testy A / B na stronach sprzedaży produktów. To zapewnia natychmiastową informację zwrotną. Niektóre przykładowe testy mogą być:

  1. Pokaż użytkownikowi jeden produkt wysokiego poziomu i jeden produkt niskiego poziomu (A). Pokaż użytkownikowi dwa produkty wysokiego poziomu i brak produktów niskiego poziomu (B). Która strona generuje większe przychody?
  2. Wysyłaj e-maile marketingowe dotyczące sprzedaży sezonowej z 5-dniowym wyprzedzeniem do jednej grupy użytkowników (A). Wyślij ten sam e-mail do innego zestawu użytkowników z jednodniowym wyprzedzeniem (B). Istnieje wiele możliwości. Wykorzystaj swoją intuicję i pomyśl o wcześniejszej wiedzy na temat swoich produktów.

[26][Wizualizacja]

Wizualizacja danych odnosi się do technik prezentacji wyników w formie graficznej, takich jak histogramy, wykresy rozrzutu lub wykresy pudełkowe. Wizualizacja danych jest szczególnym wyzwaniem dla danych o wysokiej wymiarowości. Jeśli twoje pytanie dotyczy tylko tego, jak uzyskać określone oprogramowanie, aby uzyskać określony efekt, prawdopodobnie  to nie tutaj.

PYTANIA: Jak ożywić rozwój sieci społecznościowej?

Szukam biblioteki / narzędzia do wizualizacji zmian w sieci społecznościowej po dodaniu do niej nowych węzłów / krawędzi. Jednym z istniejących rozwiązań jest SoNIA: Social Network Image Animator. To pozwala robić filmy. Dokumentacja SoNIA mówi, że obecnie jest zepsuta, a poza tym wolałbym zamiast tego rozwiązanie oparte na JavaScript. Moje pytanie brzmi: czy znasz jakieś narzędzia czy jesteś w stanie wskazać mi biblioteki, które ułatwiłyby to zadanie? Zaraz po opublikowaniu tego pytania zagłębię się w sigma.js, więc rozważ tę bibliotekę. Ogólnie moje dane wejściowe byłyby mniej więcej takie:

Mamy więc trzy punkty w czasie (1, 2, 3), trzy węzły (A, B, C) i trzy krawędzie, które reprezentują triadowe zamknięcie między trzema rozważanymi węzłami. Co więcej, każdy węzeł będzie miał dwa atrybuty (wiek i płeć), dlatego chciałbym mieć możliwość zmiany kształtu / koloru węzłów. Ponadto po dodaniu nowego węzła idealnie byłoby mieć ForceAtlas2 lub podobny algorytm do dostosowania układu wykresu.

ODPOWIEDZI:

Fantazyjne animacje są fajne. Możesz tworzyć animacje za pomocą matplotlib. Ta odpowiedź  wydaje się wskazywać na rozwiązanie python / networkx / matplotlib. Ale D3.js zapewnia interakcję. Jeśli szukasz rozwiązania internetowego, d3.js jest doskonały.

Wniosek

Byłbym szedł w kierunku opcji python / networkx do analizy sieci (ewentualnie, aby na przykład dodać atrybuty do pliku surowych danych). Następnie do wizualizacji i rozpowszechniania D3.js jest idealny. Możesz być zaskoczony, jak łatwo można napisać d3.js, kiedy się w to zagłębisz. Wierzę, że działa nawet w notebooku ipython!

Moim pierwszym przypuszczeniem jest wizualizacja sieci społecznościowej w Tableau. A w szczególności: budowanie wykresów sieciowych w Tableau. Aby dodać sieć, musisz dodać wymiar czasowy do sekcji „Strony” zmienić dynamikę. To jest ekran z linku powyżej.

Okazało się, że zadanie to było dość łatwe do wykonania przy użyciu vis.js. To był najlepszy przykładowy kod, jaki znalazłem.

Jakie techniki wizualizacji najlepiej opisują zestaw danych rekomendacji?

Napisałem prosty rekomendator, który generuje rekomendacje dla użytkowników na podstawie tego, co kliknęli. Polecający generuje plik danych w następującym formacie:

Przeglądałem niektóre wykresy, ale nie jestem pewien, którego użyć, czy też są inne, które lepiej wyświetlą podobieństwa użytkowników z powyższego zestawu danych. Jakieś sugestie? Wizualizację kieruję na użytkowników biznesowych, którzy wcale nie są techniczni. Chciałbym tylko pokazać im łatwy do zrozumienia obraz, który ukazuje, jak podobni są niektórzy użytkownicy, i przekonuję firmę, że dla tych użytkowników system rekomendacji jest przydatny.

Myślę, że szukasz macierzy podobieństwa. Jeśli nie masz danych dotyczących podobieństwa między niektórymi parami, zawsze możesz pozostawić je jako szare lub białe. Będzie to również działać tylko w przypadku zestawów danych wystarczająco małych, aby właściwie zrozumieć, co się dzieje. Powiedziałbym, że maksymalnie 25 wierszy / kolumn. W macierzy podobieństwa współrzędne xiy odpowiadają dwóm rzeczom, które porównujesz, podczas gdy wielkość mapy kolorów reprezentuje podobieństwo

EDYCJA: Jedną rzeczą, którą możesz zrobić, aby zastąpić mapę kolorów, jest wstawka, powiedzmy, kółka o różnych rozmiarach zgodnie z miarą podobieństwa. Możesz też wstawić same liczby, zmieniając rozmiar liczby, gdy zmienia się wielkość tej liczby. Rozmiar zwykle najlepiej sprawdza się w wizualizacjach biznesowych.

Osobiście uważam, że Netflix ma rację. Podziel go na oceny wiarygodności od 1-5 i pokaż swoje rekomendacje na podstawie liczby żółtych gwiazdek. Nie muszą to być gwiazdy, ale te wykresy oparte na ikonach są bardzo łatwe do zinterpretowania i jasno pokazują punkt.

Wizualizacja wykresu z milionem wierzchołków. Jakiego narzędzia najlepiej użyć do wizualizacji (narysowania wierzchołków i krawędzi) wykresu zawierającego 1000000 wierzchołków? Na wykresie jest około 50000 krawędzi. Potrafię obliczyć położenie poszczególnych wierzchołków i krawędzi. Zastanawiam się nad napisaniem programu do generowania pliku svg. Jakieś inne sugestie?

Sugeruję również oprogramowanie Gephi (https://gephi.github.io), które wydaje się być dość potężne. Dodatkowe informacje na temat korzystania z Gephi w dużych sieciach można znaleźć tutaj i, bardziej ogólnie, tutaj. Cytoscape (http://www.cytoscape.org) to alternatywa dla Gephi, będąca kolejną popularną platformą do kompleksowej analizy sieci i wyobrażanie sobie. Jeśli chcesz programowo pracować z sieciami (w tym wizualizacją) w R, Python lub C / C ++, możesz sprawdzić kolekcję bibliotek igraph. Mówiąc o R, możesz zainteresować następujące posty na blogu: na temat używania R z Cytoscape  i na temat używania R z Gephi .

Aby uzyskać obszerne listy oprogramowania do analizy i wizualizacji sieci, w tym niektóre porównania i recenzje, możesz sprawdzić następujące strony:

1)http://wiki.cytoscape.org/Network_analysis_links;

2)http://www.kdnuggets.com/software/social-network-analysis.html;

3) http://www.activatenetworks.net/social-network-analysis-sna-software-review.

https://gephi.github.io/ mówi, że może obsłużyć milion wierzchołków. Jeśli wykres ma 1000000 wierzchołków i tylko 50000 krawędzi, wówczas większość twoich wierzchołków i tak nie będzie miała żadnych krawędzi. W rzeczywistości specyfikacja Gephi jest podwójnym przykładem: „Sieci do 50 000 węzłów i 1 000 000 krawędzi”

Myślę, że Gephi może napotkać problemy z brakiem pamięci, będziesz potrzebował co najmniej 8 GB pamięci RAM. Chociaż liczba krawędzi nie jest bardzo duża. Być może bardziej odpowiednim narzędziem w tym przypadku będzie GraphViz. Jest to narzędzie wiersza polecenia do wizualizacji sieci i przypuszczalnie byłoby bardziej odporne na rozmiar wykresu. Ponadto, jak pamiętam, w GraphViz można użyć wstępnie obliczonych współrzędnych, aby ułatwić obliczenia. Próbowałem znaleźć rzeczywiste przykłady używania GraphViz z dużymi wykresami, ale nie udało się. Chociaż znalazłem podobną dyskusję na temat nauk obliczeniowych.

Jak wykreślić duże internetowe mapy cieplne?

Chcę wykreślić duże mapy cieplne (powiedzmy macierz). Mogę to zrobić w Python / matplotlib.pyplot z pcolor, ale nie jest interaktywny (i potrzebuję interaktywnej mapy cieplnej). Próbowałem z D3.js, ale to, co znalazłem, ma na celu wyświetlanie małych map cieplnych: http://bl.ocks.org/tjdecke/5558084 Naiwne rozszerzanie tego przykładu o większą matrycę (np.) może spowodować awarię przeglądarki internetowej. Czy ktoś może wskazać mi dobry sposób wyświetlania i interakcji z dużymi mapami cieplnymi z technologią internetową: Chcę mieć możliwość interakcji ze stroną internetową lub notatnikiem ipython.

Plotly i Lightning są [podobno] w stanie wizualizować bardzo duże zbiory danych.

[025]Bazy Danych]

Baza danych to zorganizowany zbiór danych. Dane są zazwyczaj organizowane w celu modelowania odpowiednich aspektów rzeczywistości (na przykład dostępności pokoi w hotelach), w sposób, który obsługuje procesy wymagające tych informacji (na przykład znalezienie hotelu z wolnymi miejscami). Duża część stron internetowych i aplikacji opiera się na bazach danych. Są kluczowym składnikiem systemów telekomunikacyjnych, systemów bankowych, gier wideo i niemal każdego innego oprogramowania lub urządzenia elektronicznego, które przechowuje pewną ilość trwałych informacji. Oprócz trwałości systemy baz danych zapewniają szereg innych właściwości, które czynią je wyjątkowo przydatnymi i wygodnymi: niezawodność, wydajność, skalowalność, kontrola współbieżności, abstrakcja danych i języki zapytań wysokiego poziomu. Bazy danych są tak wszechobecne i ważne, że absolwenci informatyki często podają swoją klasę baz danych jako najbardziej przydatną w swojej branży lub karierze absolwenta. Termin „baza danych” nie powinien być mylony z systemem zarządzania bazami danych (DBMS). DBMS to oprogramowanie systemowe używane do tworzenia baz danych i zarządzania nimi oraz zapewniania użytkownikom i aplikacjom dostępu do baz danych. Baza danych jest do DBMS jak dokument do edytora tekstu.

PYTANIA: Czy to porównanie Neo4j z czasem wykonania RDBMS jest prawidłowe?

Relacje na wykresie w naturalny sposób tworzą ścieżki. Zapytanie lub przejście przez wykres obejmuje określone ścieżki. Ze względu na zasadniczo zorientowany na ścieżkę charakter modelu danych, większość operacji opartych na ścieżkach graficznych baz danych jest ściśle dopasowana do sposobu, w jaki dane są ułożone, co czyni je niezwykle wydajnymi. W swojej książce Neo4j in Action, Partner i Vukotic przeprowadzają eksperyment przy użyciu sklepu relacyjnego i Neo4j. Porównanie pokazuje, że baza danych grafów jest znacznie szybsza dla połączonych danych niż sklep relacyjny. Eksperyment Partnera i Vukotic ma na celu znalezienie przyjaciół-przyjaciół w sieci społecznościowej do maksymalnej głębokości pięciu. Biorąc pod uwagę dowolne dwie osoby wybrane losowo, czy istnieje ścieżka, która ich łączy, co najwyżej pięć związków? W przypadku sieci społecznościowej zawierającej 1 000 000 osób, z których każda ma około 50 znajomych, wyniki zdecydowanie sugerują, że bazy danych wykresów są najlepszym wyborem dla połączonych danych, jak widać poniżej

Na głębokości dwa (znajomi znajomych) zarówno relacyjna baza danych, jak i baza danych grafów działają wystarczająco dobrze, abyśmy mogli rozważyć użycie ich w systemie online. Podczas gdy zapytanie Neo4j działa w dwóch trzecich czasu relacyjnego, użytkownik końcowy ledwo zauważyłby różnicę w milisekundach między nimi. Zanim jednak osiągniemy głębokość trzecią (przyjaciel-przyjaciel-przyjaciel), jasne jest, że relacyjna baza danych nie jest w stanie poradzić sobie z zapytaniem w rozsądnych ramach czasowych: trzydzieści sekund potrzebnych do wypełnienia byłoby całkowicie niedopuszczalne dla systemu online. Natomiast czas odpowiedzi Neo4j pozostaje stosunkowo płaski: zaledwie ułamek sekundy, aby wykonać zapytanie – zdecydowanie wystarczająco szybko dla systemu online. Na głębokości czwartej relacyjna baza danych wykazuje paraliżujące opóźnienie, co czyni ją praktycznie bezużyteczną dla systemu online. Czasy Neo4j również nieco się pogorszyły, ale opóźnienie jest na obrzeżach akceptacji dla responsywnego systemu online. Wreszcie na głębokości piątej relacyjna baza danych po prostu trwa zbyt długo, aby ukończyć zapytanie. Natomiast Neo4j zwraca wynik po około dwóch sekundach. Na głębokości piątej okazuje się, że prawie cała sieć jest naszym przyjacielem: w wielu rzeczywistych przypadkach użycia prawdopodobnie skrócilibyśmy wyniki i czasy.

Pytania są następujące:

* Czy to rozsądny test do naśladowania tego, co można znaleźć poza siecią społecznościową? (To znaczy, że prawdziwe sieci społecznościowe zwykle mają na przykład węzły z około 50 przyjaciółmi; wydaje się, że model „wzbogacania się bogatszego” byłby bardziej naturalny dla sieci społecznościowych, choć może się mylić).

* Czy bez względu na naturalność emulacji istnieje powód, by sądzić, że wyniki są wyłączone lub nie można ich odtworzyć?

Patrząc na dokument zatytułowany Anatomia Facebooka, zauważam, że mediana wynosi 100. Patrząc na wykres funkcji skumulowanej, mogę się założyć, że średnia jest wyższa, blisko 200. Więc 50 nie wydaje się tutaj najlepszą liczbą. Myślę jednak, że nie jest to tutaj główny problem.

Głównym problemem jest brak informacji o sposobie korzystania z bazy danych. Wydaje się uzasadnione, że pamięć danych zaprojektowana specjalnie dla struktur grafowych jest bardziej wydajna niż tradycyjne RDBM. Jednak nawet jeśli RDBM nie są zgodne z najnowszymi trendami w zakresie przechowywania danych z wyboru, systemy te ewoluowały w sposób ciągły w wyścigu z wymiarami zestawu danych. Istnieją różne rodzaje możliwych projektów, różne sposoby indeksowania danych, ulepszenia związane z współbieżnością i tak dalej. Podsumowując, uważam, że jeśli chodzi o odtwarzalność, w badaniu brakuje właściwego opisu sposobu zaprojektowania schematu bazy danych. Nie oczekuję, że baza danych zdominuje takiego króla przesłuchań, ale spodziewam się, że przy dobrze dostrojonym projekcie różnice nie będą tak ogromne.

Istnieją dobre / szybkie sposoby modelowania wykresów w RDBMS oraz głupie / wolne sposoby.

* Niektórzy używają sprytnego indeksowania i przechowywanych procesów, handlowania obciążeniem procesora i dostrajanych tabel temp na dyskach RAM dla szybszej prędkości pobierania wykresów.

* Niektórzy używają wstępnie obliczonych ścieżek graficznych (może to być mniej wykonalne w scenariuszu z sieciami społecznościowymi, ale w drzewie z większością węzłów stanowiących węzły liści, jest to całkiem niezły kompromis w stosunku do czasu

* Niektóre z nich po prostu obliczają w pętli, używając niestrunionej tabeli indeksowanej. Z #s wyrzuconych w artykule, który pachnie jak to zrobili (30 sekund – wydajność na dość niewielkim zestawie danych)

Czy to dobry przypadek dla NOSQL?

Obecnie pracuję przed projektem, który mógłbym rozwiązać za pomocą relacyjnej bazy danych w stosunkowo bolesny sposób. Słysząc tyle o NOSQL, zastanawiam się, czy nie ma bardziej odpowiedniego sposobu rozwiązania tego problemu:

Załóżmy, że śledzimy grupę zwierząt w lesie (n ~ 500) i chcielibyśmy prowadzić rejestr obserwacji (jest to fikcyjny scenariusz). Chcielibyśmy przechowywać następujące informacje w bazie danych:

* unikalny identyfikator dla każdego zwierzęcia

* opis zwierzęcia o uporządkowanych polach: gatunek, rodzaj, rodzina,…

* wolne pole tekstowe z dodatkowymi informacjami

* każdy punkt czasowy, w którym został wykryty w pobliżu punktu odniesienia

* zdjęcie zwierzęcia

* wskazanie, czy dwa dane zwierzęta są rodzeństwem

I:

* później mogą pojawiać się dodatkowe funkcje, gdy pojawi się więcej danych

Chcielibyśmy móc wykonywać następujące typy zapytań:

* zwróć wszystkie zauważone zwierzęta w danym przedziale czasu

* zwróć wszystkie zwierzęta z danego gatunku lub rodziny

* wykonaj wyszukiwanie tekstu w wolnym polu tekstowym

Który konkretny system baz danych poleciłbyś? Czy jest jakiś samouczek / przykłady, których mógłbym użyć jako punktu wyjścia?

Trzy tabele: zwierzę, obserwacja i rodzeństwo. Obserwacja ma kolumnę animal_id, która prowadzi do tabeli zwierząt, a tabela rodzeństwa zawiera kolumny animal_1_id i animal_2_id, które wskazują, że dwa zwierzęta są rodzeństwem dla każdego wiersza. Nawet przy 5000 zwierząt i 100000 obserwacji nie sądzę, że czas zapytania będzie stanowić problem dla czegoś takiego jak PostgreSQL dla najbardziej rozsądnych zapytań (oczywiście możesz tworzyć nieuzasadnione zapytania, ale możesz to zrobić w dowolnym systemie).

Nie rozumiem więc, jak to jest „względnie bolesne”. W stosunku do czego? Jedyną złożonością jest tabela z rodzeństwem. W NOSQL możesz przechowywać pełną listę rodzeństwa w rekordzie dla każdego zwierzęcia, ale kiedy dodajesz relację z rodzeństwem, musisz dodać ją do rejestrów zwierząt obu rodzeństwa. Zarysowane przeze mnie podejście do tabeli relacyjnej istnieje tylko raz, ale kosztem przetestowania obu kolumn w celu znalezienia rodzeństwa zwierzęcia. Użyłbym PostgreSQL, a to daje opcję korzystania z PostGIS, jeśli masz dane lokalizacji – jest to geoprzestrzenne rozszerzenie PostgreSQL, które pozwala ci wykonywać zapytania przestrzenne (punkt w wielokącie, punkty w pobliżu punktu itp.), Co może być ty. Naprawdę nie sądzę, że właściwości baz danych NOSQL stanowią dla ciebie problem – nie zmieniasz swojego schematu co dziesięć minut, prawdopodobnie dbasz o to, aby baza danych była zgodna z ACID i nie potrzebujesz czegoś w Internecie skala.

Co sprawia, że ​​kolumny kolumnowe są odpowiednie do analizy danych?

Jakie są zalety kolumnowych magazynów danych, które czynią je bardziej odpowiednimi do analizy danych i analiz?

Baza danych zorientowana na kolumny (= magazyn danych kolumnowych) przechowuje dane z tabeli kolumna po kolumnie na dysku, natomiast zorientowana wierszowo baza danych przechowuje dane tabeli wiersz po rzędzie. Istnieją dwie główne zalety korzystania z bazy danych zorientowanej na kolumny w porównaniu z bazą danych zorientowaną na wiersze. Pierwsza zaleta dotyczy ilości danych, które należy odczytać na wypadek, gdybyśmy wykonali operację tylko na kilku funkcjach. Rozważ proste zapytanie:

Tradycyjny moduł wykonujący czytałby całą tabelę (tj. wszystkie funkcje):

Zamiast tego, stosując nasze podejście oparte na kolumnach, musimy po prostu przeczytać kolumny, którymi jesteśmy  zainteresowani:

To zależy od tego, co robisz. Działanie z  kolumnami ma dwie kluczowe zalety:

* całe kolumny można pominąć

* kompresja długości przebiegu działa lepiej na kolumnach (dla niektórych typów danych; w szczególności z kilkoma odrębnymi wartościami)

Ma jednak również wady:

* wiele algorytmów potrzebuje wszystkich kolumn i zapisuje tylko na raz (np. k-średnie) lub może nawet wymagać obliczenia macierzy odległości parami

* techniki kompresji działają dobrze tylko na rzadkich typach danych i czynnikach, ale niezbyt dobrze na ciągłych danych o podwójnej wartości

* dodatki w sklepach kolumnowych są drogie, więc nie jest idealne do przesyłania strumieniowego / zmiany danych

Przechowywanie kolumnowe jest bardzo popularne w przypadku OLAP, czyli „głupich analiz” (Michael Stonebraker) i oczywiście w przypadku przetwarzania wstępnego, w którym rzeczywiście możesz być zainteresowany odrzuceniem całych kolumn (ale najpierw musisz mieć uporządkowane dane – nie przechowujesz JSON w kolumnie format). Ponieważ układ kolumnowy jest naprawdę ładny np. licząc ile jabłek sprzedałeś w zeszłym tygodniu. W przypadku wielu zastosowań naukowych / do analizy danych właściwym rozwiązaniem są bazy tablicowe (plus oczywiście nieustrukturyzowane dane wejściowe). Na przykład. SciDB i RasDaMan.

W wielu przypadkach (np. głębokie uczenie się) macierze i tablice to typy danych, których potrzebujesz, a nie kolumny. Oczywiście MapReduce itp. Nadal może być przydatny w przetwarzaniu wstępnym. Może nawet dane kolumnowe (ale baza danych macierzy zwykle obsługuje również kompresję podobną do kolumn).

Nie korzystałem z kolumnowej bazy danych, ale użyłem formatu kolumnowego o otwartym kodzie źródłowym o nazwie Parquet i myślę, że korzyści są prawdopodobnie takie same – szybsze przetwarzanie danych, gdy potrzebujesz tylko zapytania do niewielkiego podzbioru dużej liczby kolumn. Miałem zapytanie działające na około 50 terabajtach plików Avro (format pliku zorientowany na wiersze) z 673 kolumnami, co zajęło około półtorej godziny w 140-węzłowym klastrze Hadoop. W przypadku Parkietu to samo zapytanie zajęło około 22 minut, ponieważ potrzebowałem tylko 5 kolumn. Jeśli masz niewielką liczbę kolumn lub używasz dużej części swoich kolumn, nie sądzę, aby kolumna z bazą danych miałaby istotną różnicę w porównaniu z kolumną zorientowaną na wiersz, ponieważ nadal będziesz musiał zasadniczo przeskanować wszystkie swoje dane. Wierzę, że w kolumnowych bazach danych kolumny są przechowywane osobno, podczas gdy w bazach zorientowanych na wiersze są przechowywane osobno. Twoje zapytanie będzie szybsze za każdym razem, gdy będziesz mógł odczytać mniej danych z dysku.

[24]Wybór funkcji

Wybór funkcji, zwany także wyborem atrybutu lub redukcją funkcji, odnosi się do technik identyfikacji podzbioru cech zestawu danych, które są istotne dla danego problemu. Usuwając niepotrzebne i zbędne funkcje, udany wybór funkcji pozwala uniknąć przekleństw wymiarowości i poprawić wydajność, szybkość i interpretację kolejnych modeli. Wybór funkcji obejmuje metody ręczne (takie oparte na wiedzy w dziedzinie) i metody automatyczne. Metody automatyczne są często kategoryzowane według metod filtrowania, pakowania i osadzania.

Podejścia filtrujące dokonują wyboru funkcji jako osobnego kroku wstępnego przetwarzania przed algorytmem uczenia się. Podejścia filtrujące uwzględniają zatem tylko wewnętrzne właściwości danych. Metody filtrowania obejmują testy sumy rang Wilcoxona i testy oparte na korelacji. Podejście owijania wykorzystuje wydajność algorytmu uczenia się do wybierania funkcji. Algorytm wyszukiwania jest „owinięty” wokół algorytmu uczenia się, aby zapewnić odpowiednie przeszukiwanie przestrzeni podzbiorów cech. Jako takie, metody owijania mogą być postrzegane jako przeprowadzanie wyszukiwania hipotez modelu w ramach wyszukiwania podzbioru cech. Przykładami metod owijania są symulowane wyżarzanie i wyszukiwanie wiązki.

Podejścia osadzone obejmują wybór zmiennych jako część procesu szkolenia, przy czym istotność cech uzyskano analitycznie z celu modelu uczenia się. Metody osadzone można postrzegać jako wyszukiwanie w połączonej przestrzeni podzbiorów cech i hipotez. Przykładami metod osadzonych są przyspieszenie i rekurencyjna regresja kalenicy.

PYTANIA: Co to jest redukcja wymiarowości? Jaka jest różnica między wyborem funkcji a ekstrakcją?

Z Wikipedii,

redukcja wymiarów lub redukcja wymiarów to proces zmniejszania liczby rozważanych zmiennych losowych, który można podzielić na wybór cech i ekstrakcję cech.

Jaka jest różnica między wyborem funkcji a ekstrakcją funkcji? Jaki jest przykład zmniejszenia wymiarów w zadaniu przetwarzania języka naturalnego?

ODPOWIEDŹ:

Po prostu:

* wybór funkcji: wybierasz podzbiór oryginalnego zestawu funkcji; podczas

* ekstrakcja funkcji: tworzysz nowy zestaw funkcji z oryginalnego zestawu funkcji.

Przykłady ekstrakcji cech: ekstrakcja konturów na obrazach, ekstrakcja diagramów z tekstu, ekstrakcja fonemów z nagrania tekstu mówionego itp.

Wyodrębnianie cech obejmuje przekształcenie cech, które często nie jest odwracalne, ponieważ niektóre informacje są tracone w procesie zmniejszania wymiarów.

Redukcja wymiarów polega zazwyczaj na wybraniu podstawy lub reprezentacji matematycznej, w ramach której można opisać większość, ale nie całą wariancję danych, zachowując w ten sposób odpowiednie informacje, jednocześnie zmniejszając ilość informacji niezbędnych do reprezentacji. Istnieje wiele technik wykonywania tego, w tym między innymi PCA, ICA i faktoryzacja macierzy. Wykorzystają one istniejące dane i zredukują je do najbardziej dyskryminujących elementów. Wybór funkcji to ręczne wybieranie cech, które są wysoce dyskryminujące. Ma to o wiele więcej wspólnego z inżynierią funkcji niż analizą i wymaga znacznie więcej pracy ze strony naukowca danych. Wymaga to zrozumienia, jakie aspekty zestawu danych są ważne w jakichkolwiek prognozach, a które nie. Wyodrębnianie elementów zwykle obejmuje generowanie nowych elementów, które są kompozytami istniejących elementów. Obie te techniki należą do kategorii inżynierii obiektów. Zasadniczo inżynieria funkcji jest ważna, jeśli chcesz uzyskać najlepsze wyniki, ponieważ obejmuje tworzenie informacji, które mogą nie istnieć w zbiorze danych, oraz zwiększenie stosunku sygnału do szumu.

Wybór funkcji odpowiedzi dotyczy wyboru podzbioru funkcji. Tak więc w NLP byłoby wybranie zestawu konkretnych słów (typowe w NLP jest to, że każde słowo reprezentuje cechę o wartości równej częstotliwości słowa lub innej wadze opartej na TF / IDF lub podobnej). Redukcja wymiarów polega na wprowadzeniu nowej przestrzeni elementów, w której reprezentowane są elementy oryginalne. Nowa przestrzeń ma niższy wymiar niż pierwotna przestrzeń. W przypadku tekstu przykładem może być sztuczka haszująca, w której fragment tekstu jest redukowany do wektora kilku bitów (powiedzmy 16 lub 32) lub bajtów. Niesamowite jest to, że geometria przestrzeni jest zachowana (podana wystarczająca liczba bitów), więc względne odległości między dokumentami pozostają takie same jak w oryginalnej przestrzeni, dzięki czemu można wdrożyć standardowe techniki uczenia maszynowego bez konieczności radzenia sobie z nieograniczonymi (i ogromną liczbą) z) wymiarów znalezionych w tekście.

Czy scikit-learn ma algorytm selekcji do przodu / regresji krokowej?

Pracuję nad problemem ze zbyt wieloma funkcjami, a szkolenie moich modeli trwa zdecydowanie za długo. Zaimplementowałem algorytm wybierania do przodu, aby wybrać funkcje. Zastanawiałem się jednak, czy scikit-learn ma algorytm selekcji do przodu / regresji krokowej?

Nie, sklearn nie wydaje się mieć algorytmu selekcji do przodu. Jednak zapewnia rekurencyjną eliminację cech, która jest chciwym algorytmem eliminacji cech podobnym do sekwencyjnego wybierania wstecznego.

[023][NoSQL]

NoSQL (czasem rozszerzony do „nie tylko sql”) to szeroka klasa systemów zarządzania bazami danych, które różnią się od klasycznego modelu systemu zarządzania relacyjnymi bazami danych (rdbms) w znaczący sposób.

Systemy NoSQL:

* Specjalnie zaprojektowany dla dużego obciążenia

* Natywnie obsługuje skalowanie w poziomie

*Odporne na uszkodzenia

* Przechowuj dane w sposób zdenormalizowany

* Zwykle nie egzekwuj ścisłego schematu bazy danych

* Zwykle nie przechowuj danych w tabeli

* Czasami zapewniają ostateczną spójność zamiast transakcji ACID

W przeciwieństwie do RDBMS, system NoSQL:

* Nie gwarantuje spójności danych

* Zwykle obsługuje ograniczony język zapytań (podzbiór SQL lub inny niestandardowy język zapytań)

* Może nie zapewniać obsługi transakcji / transakcji rozproszonych

* Zwykle nie używaj niektórych zaawansowanych koncepcji RDBMS, takich jak wyzwalacze, widoki, procedury składowane Implementacje NoSQL można podzielić na kategorie

PYTANIA: Jaki jest najlepszy backend NoSQL dla gry mobilnej? Jakiego backendu noSQL najlepiej użyć do gry mobilnej? Użytkownicy mogą wysyłać wiele żądań serwerów, muszą także pobierać historyczne dane użytkowników (np. Kupowanie aplikacji) i analizy zachowań użytkowników.

ODPOWIEDŹ:

Niektóre czynniki, które możesz wziąć pod uwagę:

Znajomość programistów: korzystaj z tego, co znasz Ty lub Twoi programiści. Mongo, Couch, Riak, DynamoDB itp. Mają swoje mocne strony, ale wszystko powinno być w porządku, więc zamiast szukać nieznanego rozwiązania, które może być nieco lepiej, przejdź do znajomego i zaoszczędź sporo czasu na rozwój.

Łatwość wdrożenia w chmurze: na przykład jeśli korzystasz z Amazon AWS, to DynamoDB jest prawdopodobnie doskonałym wyborem. Jasne, możesz użyć Mongo na AWS, ale po co? Inni dostawcy usług w chmurze mają własne preferowane bazy danych, na przykład jeśli korzystasz z Google AppEngine, warto skorzystać z BigTable lub Cloud Datastore.

Twój przypadek użycia wydaje się być zarówno odpowiedni dla NoSQL, jak i niezbyt trudny, ponieważ dane mają naturalną partycję według użytkownika. Myślę, że z technicznego punktu widzenia nie miałbyś nic przeciwko, dlatego omawiam głównie inne czynniki.

[022] Modelowanie predykcyjne

Najlepszy model regresji do prognozowania sprzedaży

PYTANIA:

Mam następujące zmienne wraz z danymi sprzedaży sprzed kilku lat:

* date # simple date, można podzielić na rok, miesiąc itp.

* shipping_time (0-6 tygodni) #0 tygodni oznacza w magazynie, więcej tygodni oznacza, że ​​produkt jest niedostępny, ale przesyłka jest w drodze do magazynu. Dłuższe czasy wysyłki mają znaczący wpływ na sprzedaż.

* salels # amount of products sold. Muszę przewidzieć sprzedaż (która zmienia się sezonowo) biorąc pod uwagę  czas wysyłki.

Jaki byłby prosty model regresji, który dałby rozsądne wyniki? Próbowałem regresji liniowej z samą datą i sprzedażą, ale nie uwzględnia to sezonowości, więc prognoza jest raczej słaba.

Jako miarę dokładności przedstawię losową próbkę danych z danych wejściowych i porównam z wynikiem.

Dodatkowe punkty, jeśli można to łatwo zrobić w python / scipy

Dane mogą wyglądać tak

data.PNG

ODPOWIEDŹ:

To całkiem klasyczny zestaw danych ARIMA. ARIMA jest zaimplementowana w pakiecie StatsModels dla Python. Model ARIMA z korektą sezonową może być najprostszą rozsądnie udaną prognozą dla złożonych szeregów czasowych, takich jak prognozowanie sprzedaży. Być może (prawdopodobnie będzie) konieczne będzie połączenie metody z dodatkową warstwą modelu, aby wykryć dodatkowe fluktuacje poza funkcją autoregresji trendu sprzedaży. Niestety, proste modele regresji liniowej wypadają dość słabo w przypadku danych szeregów czasowych.

ODPOWIEDŹ:

Czy próbowałeś modelowania szeregów czasowych? Jeśli nie, to powinieneś. Próbowałem regresji liniowej z tylko datą i sprzedażą, ale to nie uwzględnia sezonowości. Model średniej ruchomej jest czymś, co dobrze pasuje do twojego zestawu danych. Jednak, gdy mówisz, że twój model wykazuje sezonowość, musisz dostosować średnie kroczące, aby uwzględniało sezonowość. Tak więc najlepszym modelem dla twojego zestawu danych byłby model SARIMA. Jest to tylko model zintegrowanej średniej ruchomej z automatyczną regresją (ARIMA), ale z korektami sezonowymi. Oto jedno z pytań, na które odpowiedziałem, które dodatkowo pomaga zrozumieć niewielkie zmiany sezonowości i trendów, wraz z kodem R.

[021][Definicje](2)

PYTANIE: Czy rozpoczynając karierę jako Data Scientist, wymagane jest doświadczenie w inżynierii oprogramowania?

Jestem studentem na uniwersytecie w Edynburgu, specjalizującym się w uczeniu maszynowym i przetwarzaniu języka naturalnego. Miałem kilka praktycznych kursów dotyczących eksploracji danych, a inne dotyczyły uczenia maszynowego, statystyki bayesowskiej i modeli graficznych. Moje wykształcenie to licencjat z informatyki. Zrobiłem trochę inżynierii oprogramowania i nauczyłem się podstawowych pojęć, takich jak wzorce projektowe, ale nigdy nie brałem udziału w dużym projekcie rozwoju oprogramowania. Miałem jednak projekt eksploracji danych. Moje pytanie brzmi: czy chcąc rozpocząć karierę jako specjalista ds. danych, czy powinienem najpierw ubiegać się o stanowisko analityka danych, czy najpierw powinienem uzyskać tytuł magistra inżyniera oprogramowania, może coś związanego z nauką danych, np. duże zbiory danych rozwój infrastruktury lub oprogramowania do uczenia maszynowego? Obawiam się, że mogę potrzebować dobrych umiejętności inżynierii oprogramowania do nauki danych i nie jestem pewien, czy można je zdobyć, pracując bezpośrednio jako absolwent danych. Co więcej, w tej chwili lubię Data Mining, ale co, jeśli chcę w przyszłości zmienić karierę na inżynierię oprogramowania? To może być trudne, jeśli tak bardzo specjalizuję się w informatyce. Nie byłem jeszcze zatrudniony, więc moja wiedza jest wciąż ograniczona. Wszelkie wyjaśnienia lub porady są mile widziane, ponieważ mam zamiar ukończyć magistra i chcę zacząć ubiegać się o to stanowisko

ODPOWIEDŹ: 1) Myślę, że nie ma potrzeby kwestionować, czy Twoje wykształcenie jest odpowiednie do kariery w informatyce. Stopień CS IMHO jest więcej niż wystarczający dla inżyniera danych z punktu widzenia inżynierii oprogramowania. Powiedziawszy to, wiedza teoretyczna nie jest bardzo pomocna bez dopasowania do praktycznego doświadczenia, dlatego zdecydowanie staram się wzbogacić moje doświadczenie, uczestnicząc w dodatkowych projektach szkolnych, stażach lub projektach open source (być może takich, które koncentrują się na danych / uczeniu maszynowym / sztucznej inteligencji ). 2) Uważam, że twoja obawa przed zbyt wczesnym skupieniem się na analizie danych jest bezpodstawna, o ile będziesz ćwiczyć inżynierię oprogramowania albo w ramach pracy w dziedzinie analizy danych, albo dodatkowo w wolnym czasie. 3) Uważam następującą definicję analityka danych za dość dokładną i mam nadzieję, że będzie ona pomocna w twoim przyszłym sukcesie zawodowym: Analityk danych to ktoś, kto jest lepszy w statystyce niż jakikolwiek inżynier oprogramowania i jest lepszy w inżynierii oprogramowania niż jakikolwiek statystyk.

P.S. Dzisiejsza ogromna liczba różnych zasobów na tematy związane z naukami o danych jest oszałamiająca, ale ten program open source do nauki danych może wypełnić pewne luki między odpowiednimi programami studiów licencjackich i magisterskich a rzeczywistością kariery naukowej w dziedzinie danych (lub przynajmniej zapewnić pewien kierunek dla dalsze badania i może odpowiedzieć na niektóre z Twoich obaw)

Od ogłoszeń o pracy, które widziałem, zależy odpowiedź: Są prace, które mają bardziej techniczny charakter (projektowanie projektów dużych zbiorów danych, przeprowadzanie analiz) lub dokładnie odwrotnie (wykonywanie analiz, przechowywanie itp. to inna praca). Powiedziałbym więc, że NIEKTÓRE umiejętności projektowania oprogramowania są niezwykle przydatne, ale nie potrzebujesz umiejętności tworzenia dużego programu w języku C # / Java. Dlaczego lubię niektóre umiejętności SW, to po prostu to, że Twój kod prawdopodobnie wygląda o wiele lepiej niż kod kogoś, kto nigdy nie programował ze względu na programowanie. Przez większość czasu ten drugi kod jest bardzo trudny do zrozumienia / debugowania dla osób postronnych. Czasami twoja analiza musi być zintegrowana z większym programem, zrozumienie potrzeb programów z pewnością pomaga.

Absolutnie. Zachowaj ostrość swoich umiejętności programistycznych. Możesz to zrobić w programie akademickim, jeśli sam zaimplementujesz wszystkie algorytmy, o których się uczysz. Zastanów się też nad odbyciem stażu