Blog

Docker i kontenery – marketingowy „hype” czy „real deal” ?

W dobie technokracji firmy z branży IT produkują więcej zabawek niż jesteśmy w stanie kupić, a tym bardziej użyć. Marketingowy „hype” przybiera na sile, a programiści – wiadomo – lubują się w nowych zabawkach. Rozróżnienie „real deal” od chwilowej mody może stanowić w naszej branży o życiu lub śmierci, a w każdym razie o powodzeniu lub fiasku naszego projektu.

Czym są kontenery?

Wyobraź sobie, że właśnie wynaleziono autobus. Do wczoraj każdy, kto chciał dojechać do pracy na określoną godzinę, musiał kupić sobie samochód. Dzięki temu zyskiwał mobilność, a po drodze do biura mógł zabrać ze do trzech lub czterech osób. Rozwiązanie wygodne, ale dość drogie. Co nam daje autobus? Mamy tylko jednego kierowcę i jeden pojazd, który jest w stanie pomieścić i dowieźć do pracy kilkadziesiąt osób. Żeby przetransportować tę samą liczbę osób potrzebowalibyśmy np. kilkunastu samochodów, w każdym z nich kierowcę; do tego korki, rachunki za paliwo itd.

Tym właśnie są kontenery w IT – sposobem na uzyskanie większej „gęstości” na serwerach. Jeden fizyczny serwer jest w stanie pomieścić więcej usług, przez co te stają się tańsze w utrzymaniu.

Containers Inception

Czytaj dalej Docker i kontenery – marketingowy „hype” czy „real deal” ?

VikingSMS – technologia zmniejszająca dystans między rekruterem a pracownikiem

O tym, jak bardzo nowoczesna technologia zmienia nasze życie… warto czasem przypomnieć. Zwłaszcza tym, którym przytrafi się ponarzekać na wolny transfer sieci WiFi, brak zasięgu sieci GSM, czy wreszcie, wolny komputer czy konsolę do gier, które najlepsze lata mają za sobą oraz wszystkim tym, którzy umilając sobie czas w podróży słuchając muzyki odtwarzanej z telefonu lub spędzają weekend oglądając na Netflixie maraton filmów z Alem Pacino w roli głównej.

Racząc się tymi dobrodziejstwami XXI wieku pamiętajmy, że właśnie teraz… gdzieś… powstaje firma, która za kilkanaście miesięcy, dzięki zastosowaniu najnowszych technologii, zmieni reguły gry jakiegoś rynku.

Czytaj dalej VikingSMS – technologia zmniejszająca dystans między rekruterem a pracownikiem

Eksploracja Danych w Marketingu Spersonalizowanym

Marketing spersonalizowany (lub marketing jeden do jednego) polega na dostosowania oferty produktowej do preferencji konkretnych klientów. Mamy do czynienia z tym problemem, przykładowo, podczas przygotowywania „gazetek” produktowych przesyłanych do klientów drogą e-mailową (personalizacji ulotek drukowanych raczej nie stosuje się ze względu na wysokie koszty). Aby zminimalizować CPS (ang. Cost Per Sale – Koszt Transakcji / Sprzedaży) należałoby w każdej ofercie przedstawić takie produkty, dla których prawdopodobieństwo, że zostaną zakupione przez danego klienta jest największe. Innym przykładem tego zagadnienia jest prezentowanie komunikatów typu „Inni klienci zakupili również produkty X, Y i Z” na stronach sklepów internetowych. Rodzi to pytanie – jak określić, które produkty spośród całej oferty (często tysiące lub więcej pozycji asortymentowych) mają największą szansę powodzenia u danego klienta? W praktyce stosuje się głownie dwa podejścia w różnych wariantach i kombinacjach.

Doradcy, czyli K-Najbliższych Sąsiadów

Pierwszym sposobem jest zastosowanie dla każdego klienta, dla którego przygotowujemy ofertę algorytmu K-Najbliższych Sąsiadów lub tzw. doradców.

Można tutaj stosować różne warianty funkcji pomiaru odległości, lecz podstawowa zasada pozostaje niezmienna: klienci są tym bliżej siebie, im więcej identycznych produktów znajdujemy w ich historii zakupów. Wynika z tego, że zawodowi hydraulicy kupujący podobny asortyment (rury, pakuły, zawory itp.) będą leżeli stosunkowo blisko siebie, a w znacznej odległość od gospodyń domowych – kupujących produkty z zupełnie innych grup.

Należy tutaj również uwzględnić pewne zjawisko i je odpowiednio kompensować. Mogą bowiem znaleźć się w bazie produkty, które kupowane są przez wszystkie grupy konsumentów. Przy obliczaniu odległości pomiędzy konsumentami powinno uwzględniać się prawdopodobieństwo wystąpienia danego produktu w całej populacji klientów i wyróżniać go lub obarczać pewną karą. Przykładowo:

  • Klient A i klient B kupili kiedyś cukier. Prawdopodobieństwo, że klient kupił kiedykolwiek cukier wynosi, przykładowo, 50% – produkt ten nie jest więc charakterystyczny dla konkretnej grupy klientów; jest raczej przykładem produktu dość popularnego i powinien mieć mniejszy wpływ na odległość pomiędzy klientami;
  • Klient A i klient B kupili kiedyś wkrętarkę udarową.  Prawdopodobieństwo zakupu tego produktu dla klienta wynosi 1,5% – produkt ten nie jest więc tak często kupowany jak cukier i powinien zostać wyróżniony – mieć większy wpływ na zmniejszenie odległości pomiędzy tymi klientami.

Kolejnym krokiem, po określeniu K najbliższych sąsiadów, jest odnalezienie takich produktów, które zostały jak najczęściej kupowane przez znalezionych doradców, a nie zostały jeszcze zakupione przez analizowanego klienta, do którego kierujemy korespondencję z ofertą.

Efekty pracy tego algorytmu mogą być zaskakująco trafne. Poniższa ilustracja pochodzi z artykułu opisującego podejście firmy Central Purchasing, Inc. do stworzenia rozwiązania przygotowującego oferty dla klientów. Oryginalny dokument w j. angielskim można znaleźć tutaj.

onetoonemarketing

We wspomnianym artykule przytoczono również zestawienie wyników pokazujących jak ogromny wzrost skuteczności zanotowano w porównaniu z marketingiem niespersonalizowanym – tak jeszcze popularnym wśród mniejszych firm.

personalized_marketing_gain

personalized_marketing_gain2

Produkty Powiązane – Analiza Koszyka

Kolejnym podejściem do problemu jest tzw. Analiza Koszyka. Opiszę je tylko skrótowo, aby pokazać alternatywę do podejścia poprzedniego.

Analiza koszyka polega na ustaleniu które produkty są najczęściej kupowane w grupie, co może wynikać z ich powiązania. Przykładowo cukier i kawa, wiertarka oraz zestaw wierteł itp. Reguły tych powiązań pomiędzy produktami można zapisać następująco:

cukier \to \!\, kawa oraz wiertarka \to \!\, zestaw wierteł

Takie relacje mogą zachodzić zupełnie przypadkowo, stąd potrzeba pomiaru parametrów takich powiązań. Stosuje się tutaj dwa podstawowe parametry – wsparcie, które mówi o tym jak często te produkty występują razem w koszyku oraz ufność, które mówi o tym ilu klientów, którzy zakupili produkt pierwszy, zakupiło również produkt drugi.

Przykładowo:

cukier \to \!\, kawa [wsparcie = 5%, ufność = 74%]

oznacza, że 5% procent wszystkich zakupów w sklepie zawierało oba powyższe produkty, a w 74% przypadków zakupu cukru, zakupiono również kawę. Taki współczynnik ufności świadczy o występowaniu jakiegoś powiązania pomiędzy produktami, a wiedza o tym może być użyta przy projektowaniu kampanii reklamowych, rozmieszczeniu regałów sklepu oraz promocji.

Jednym z najbardziej popularnych algorytmów określania asocjacji między produktami jest tzw. algorytm „Apriori„.

 

Eksploracja Danych w Diagnostyce Obrazowej – podsumowanie

Niniejszy wpis będzie próbą zwięzłego podsumowania bardzo ciekawego – w mojej ocenie – artykułu znalezionego na stronie http://www.dataminingcasestudies.com. Pełny artykuł w j. angielskim dostępny jest tutaj.

Artykuł ten nosi tytuł „Eksploracja Danych w Diagnostyce Obrazowej”  (ang. „Mining Medical Images”) i traktuje o wyzwaniach związanych z eksploracją danych na podstawie obrazów uzyskanych w drodze obrazowania medycznego. Implementacja skutecznych algorytmów w tej dziedzinie umożliwić ma stworzenie bardziej dokładnych systemów Komputerowego Wspomagania Diagnozy (ang. CAD – Computer Aided Diagnosis).

Czytaj dalej Eksploracja Danych w Diagnostyce Obrazowej – podsumowanie

Data Mining po polsku ?

flaga_pl

Wiadomo – Polacy nie gęsi, język swój mają. A skoro mają, to i używać go powinni. Nie jest to jednak takie proste w dziedzinie IT, która opanowana jest przez kraje anglosaskie i która naszpikowana jest angielskimi nazwami. Tłumaczenia bywają karkołomne (przytoczę tutaj żartobliwe międzymordzie) i znalezienie takiego, które i brzmi dobrze, i oddaje istotę rzeczy nie jest proste.

Czytaj dalej Data Mining po polsku ?

Czego oczy nie widzą …. czyli błąd przeżywalności

World War II era American bomber

W dzisiejszym poście chciałbym przytoczyć dwa przypadki prezentujące tzw. „błąd przeżywalności” (ang. survivorship bias). Z błędem tym możemy mieć do czynienia jeśli oprzemy swój model decyzyjny na analizie wyłącznie grupy, która w jakimś sensie „przetrwała” dane wydarzenie / eksperyment (moim zdaniem słowa „przetrwanie” nie należy rozumieć dosłownie, jednak w przytoczonych przypadkach chodzi właśnie o fizyczne przeżycie).

Dzisiaj tematyka wojskowa….

Czytaj dalej Czego oczy nie widzą …. czyli błąd przeżywalności

Czułość / wrażliwość i specyficzność klasyfikatora

Wrażliwość obliczamy wzorem TP / (TP + FN)

Wrażliwość określa ułamek zidentyfikowanych wystąpień klasy pozytywnej w całym zbiorze (ignoruje tzw. fałszywe pozytywy – czyli wystąpienia negatywne, które zostały zidentyfikowane jako pozytywne). Na wysokiej wrażliwości (w języku angielskim określanej zamiennie sensitivity lub recall) zależy nam w przypadkach, gdy strata wynikająca z niewykrycia pozytywnego (FN) wystąpienia – np. groźnej jednostki chorobowej – znacząco przeważa nad stratą wynikającą z zaklasyfikowania wystąpienia negatywnego jako pozytywne (FP) – np. przeprowadzenia specjalistycznego badania.

Specyficzność obliczamy wzorem TN / (FP + TN)

Specyficzność określa ułamek poprawnie zidentyfikowanych wystąpień klasy negatywnej. Można je interpretować jako dokładność, z jaką klasyfikator wyklucza wystąpienie określonej choroby u danego pacjenta.

Powyższe parametry odnoszą się do macierzy pomyłek danego klasyfikatora, która w formie liczbowej przedstawia prawidłowe i nieprawidłowe przypadki klasyfikacji oraz prawidłowe i nieprawidłowe przypadki niesklasyfikowania danego wystąpienia jako klasy.

 

Oryginalna klasa Przewidywana klasa
Pozytywna Negatywna
Pozytywna TP FN
Negatywna FP TN

Krzywa ROC

Krzywe ROC (ang. Receiver Operating Characteristics) używane są jako narzędzie pomagające w określeniu wydajności klasyfikatorów binarnych.

Krzywą ROC nazywamy wykres charakterystyczny dla danego klasyfikatora, przedstawiający wartości TP (ang. True Positives – Prawdziwe Pozytywy) oraz FP (ang. False Positives – Fałszywe Pozytywy) na osiach Y oraz X. Wykres taki zawiera wiele punktów dla różnych wartości progu decyzyjnego klasyfikatora (zwanego również punktem odcięcia), często przedstawianego jako kolor punktu.

Przykładową krzywą ROC wygenerowaną za pomocą programu Weka przedstawia poniższa ilustracja.

Na podstawie powyższego diagramu możemy stwierdzić, że badany klasyfikator jest bardziej dokładny niż przysłowiowy „rzut monetą”, którego – zgodnie z definicją – krzywa ROC powinna przybrać postać linii poziomej o nachyleniu 0,5, łączącej punkty (0,0) z (1,1).

roc

Pewną niedogodnością krzywych ROC jest to, że są kłopotliwe w przypadkach, gdy musimy porównać wydajność dwóch różnych klasyfikatorów. Z tego względu często używana jest wartość powierzchni pod wykresem krzywej ROC (widoczna również na powyższych ilustracjach). Aby wybrać bardziej dokładny klasyfikator wystarczy wybrać ten, którego pole pod krzywą ROC jest większe. Warto pamiętać, że pole pod wykresem ROC dla klasyfikatora losowego (50/50) jest równe 0,5, a klasyfikator o współczynniku poniżej tej wartości uznaje się za gorszy od losowego.

Perełki eksploracji danych – entropia a domyślne wartości atrybutów

Analizując zbiór danych nie zawsze posiadamy określone wartości dla wszystkich atrybutów. Często musimy radzić sobie z lukami oraz pewnymi brakami, a także z przekłamaniami – o czym nieco później. W przypadku brakujących wartości możemy chcieć je zastąpić wartościami domyślnymi.
Słowo „domyślnymi” jest tutaj kluczem. Przykładowo, analizując zbiór danych reprezentujący zawartość koszyków sklepowych klientów sieci supermarketów, widząc w owym koszyku „zupkę chińską” oraz czteropak przecenionego piwa domyślamy się, że klient jest raczej zaciskającym pasa studentem niż rozrzutnym milionerem. Analizując zakupy klientów salonu z luksusowymi limuzynami moglibyśmy przyjąć dokładnie odwrotne założenie. Innymi słowy, domyślnie przyjmujemy wartość o najniższej niesionej informacji – jeśli to możliwe oraz wskazane w danym przypadku.

Tyle teorii, teraz praktyka.

Eksplorując dane klientów jednej z firm usługowych (a raczej wstępnie zapoznając się z nimi) napotkaliśmy na pewne zjawisko. Objawiało się ono nadreprezentacją w naszym zbiorze danych 46-cio latków. Wymiar tego fenomenu przedstawia poniższy histogram wieku klientów.

Czytaj dalej Perełki eksploracji danych – entropia a domyślne wartości atrybutów

Skalowanie systemów informatycznych w sektorze publicznym

Skalowanie systemu to zjawisko zwiększania (lub zmniejszania) jego możliwości obliczeniowych na miarę aktualnych potrzeb. Nietrudno sobie wyobrazić, że serwery obsługujące ruch na portalu zakupowym będą znacznie bardziej obciążone w okresie przedświątecznym, niż krótko po np. Świętach Bożego Narodzenia. Gdyby zespół IT takiego sklepu przeoczył tę prawidłowość, firma mogłaby doświadczyć przeciążenia serwerów, stracić pieniądze, renomę oraz klientów. W nieodległej przeszłości dało się słyszeć o tego typu problemach (np. w momencie lawinowego wzrostu popularności portalu nasza-klasa.pl). Moje odczucie jest takie, że świadomość tego zagrożenia znacznie wzrosła w sektorze prywatnym, jednak ciągle daje się ono we znaki w sektorze publicznym.

Śledząc nagłówki polskich tytułów można napotkać informacje o problemach z wydajnością systemów informatycznych. Słyszeliśmy już o problemach z systemami: EWUŚ, Źródło, Emp@tia oraz z systemem do obsługi wyborów parlamentarnych (przykładowe artykuły podlinkowane zostały na końcu niniejszego artykułu). Jestem przekonany, że ta lista mogłaby być bardziej pokaźna po przeprowadzeniu nieco bardziej wnikliwego „śledztwa”.

Wspólnym mianownikiem wymienionych systemów wydaje się być owa mityczna „centralizacja”. Cóż ona oznacza? Dokładnie to, że zamiast rozwiązywać pewien problem w środowisku rozproszonym (w osobnych komisjach wyborczych, w urzędach gminy. miasta itp.) przenosi się ten sam problem do jednego, centralnego systemu informatycznego, a następnie liczy na to, że – przy zastosowaniu odpowiednio szybkich i pojemnych serwerów – system będzie wystarczająco wydajny. Praktyka pokazuje często, że jest inaczej. Co może być tego przyczyną?

Czytaj dalej Skalowanie systemów informatycznych w sektorze publicznym