FOLLOW US

Dwa lata temu zaprezentowałem koncepcję macierzy kompetencji, którą opisałem w artykule,  możesz przeczytać go tutaj.

Od tamtej pory, zarówno w ramach swojej firmy, jak i w innych firmach korzystających z opisanych idei, sprawdzaliśmy, jak to działa w praktyce, jaką wartość przynosi organizacji i wszystkim osobom korzystającym z gromadzonych w niej informacji.

Przez cały ten czas myślałem o tym, w jaki sposób ulepszyć koncepcję macierzy kompetencji, ponieważ w trakcie używania uwidoczniły się jej braki. I tak:

  • Korzystanie z arkusza XLS nie ułatwia wykorzystania zgromadzonych danych. Dwa razy podchodziliśmy do stworzenia aplikacji, jednak konieczność uzupełnienia macierzy, która w niektórych zespołach miała ponad 100 pozycji nie była łatwa.
  • Macierz w czytelny sposób przedstawiała kompetencje oraz zainteresowania każdej osoby, niestety trudno było zagregować i przeanalizować dane na poziomie zespołów i projektów.
  • Brakowało nam perspektywy projektu, czyli odpowiedzi na pytanie “Jakie kompetencje wykorzystuje każda osoba w projekcie? Jakich kompetencji brakuje w zespole? Czy nie marnujemy potencjału osoby, nie korzystając z jej kluczowych kompetencji i zainteresowań?”
  • Brakowało nam “miękkiej” perspektywy, czyli prostego sposobu na pokazanie wartości, motywatorów, stylu osobowości z perspektywy indywidualnej oraz z poziomu zespołu.
  • Nie mogliśmy na arkuszu uruchomić wewnętrznego systemu rekomendacji.
  • Nie było możliwe nakładanie kolejnych wymiarów na kompetencje, które na przykład pozwoliłyby nam łączyć mentorów i osoby szukające wsparcia w rozwoju.
  • Trudno również to podejście dostosować do potrzeb warsztatowych i zrobić w wersji “papierowej”. Widzieliśmy tu duże pole do wykorzystania – na przykład w procesie rekrutacji.

Wskazane niedogodności oraz zapoznanie się z koncepcją oraz ciekawym przykładem jej wykorzystania  dały nam impuls, żeby opracować nową wersję macierzy kompetencji.

Poniżej znajdziesz opis nowej wersji macierzy kompetencji, która pozbawiona jest wad wskazanych powyżej i ostatecznie została zaimplementowana w formie modułu platformy TeamToolbox.

Nasza nowa koncepcja zakłada uproszczenie całego procesu i spojrzenie na rozwój każdej osoby z trzech perspektyw:

  • Kluczowych kompetencji, w której każda osoba wskazuje te kompetencje, w których czuje się najlepiej, które chce rozwijać i wykorzystywać w codziennej pracy. Ta perspektywa pokazuje nam to co TERAZ jest ważne dla każdej osoby. To w tym obszarze najczęściej będzie ona chciała pełnić rolę mentora. Informacje z tej perspektywy pozwolą poszukiwać projektów lepiej dopasowanych do indywidualnych potrzeb każdej z osób, wykorzystując jej aktualny potencjał.
  • Zainteresowań, czyli przestrzeni, w której znajdą się kompetencje, które będą podlegały rozwojowi. W rozwoju zainteresowań będziemy widzieli duży entuzjazm oraz wewnętrzną motywacje u ludzi. Tutaj będą oni szukali mentora, który wesprze ich w rozwoju. Informacje, które tutaj zgromadzimy pozwolą nam:
  • lepiej zaplanować i wykorzystać budżety szkoleniowe,
  • przygotować długofalową strategię rozwoju firmy.

  • Kompetencji wykorzystywanych w codziennej pracy, która pozwala nam spojrzeć na rzeczywiste wykorzystanie potencjału osób w pracy projektowej lub zespołowej.
Rys. 1 Koncepcja nowej macierzy kompetencji
Rys. 2 Nowe podejście w akcji - przykład.

Zaproponowane przez nas podejście ma wiele zalet.

I Szybkie i łatwe uzupełnianie w profilu swoich kluczowych kompetencji oraz zainteresowań 

W starej wersji musieliśmy uzupełniać wszystkich kompetencji w macierzy, w niektórych zespołach liczba kompetencji przekraczała 100.

 

W nowej wersji wybierzesz te kompetencje, które są dla Ciebie kluczowe i te które są faktycznie w obszarze Twoich zainteresowań. Przy czym nie ma tu żadnych ograniczeń na liczbę kompetencji.

Kluczowe kompetencje, czyli to w czym czujemy się dobrze, to co chcielibyśmy wykorzystywać w swojej codziennej pracy pokazuje nam perspektywę ważną dla każdej osoby – TERAŹNIEJSZOŚĆ

  • W tym obszarze poszukujemy projektów, w których wykorzystamy kluczowe kompetencje
  • Tutaj najczęściej pojawią się MENTORZY chętni do wspierania kolegów w rozwoju wybranej kompetencji.

Zainteresowania, to kompetencje, które chcemy rozwijać. Ta część modelu pokazuje nam widok na przyszłość.

 
  • To w tym obszarze jest przestrzeń na rozwój i przesuwanie zainteresowań do obszaru kluczowych kompetencji
  • W tym obszarze pojawią się kompetencje, w których rozwoju będziemy szukali wsparcia mentorów.
Rys 3. Ustawianie kluczowych kompetencji oraz zainteresowań na profilu
Rys 4. Ustawianie kluczowych kompetencji oraz zainteresowań z poziomu opcji w menu “SKILLS”
Rys. 5 Poziomy kompetencji - przykład

II Pokazanie rzeczywistego wykorzystania potencjału każdej osoby.  

Kompetencje wykorzystywane w projekcie to kompetencje, które wykorzystujemy w rzeczywistości pracując w swoich projektach i zespołach.

To całkowita nowość, która pozwala na zdefiniowanie na poziomie zespołu lub projektu tablicy, w której możemy:

  1. Zdefiniować kompetencje wymagane w projekcie/zespole, ich liczbę oraz poziom.
  2. W kolejnym kroku możemy dodać osoby do tablicy (np. zespół projektowy) – każdy z członków zespołu ustawia poziom kompetencji dla każdej wybranej w kroku 1 kompetencji.

  3. Zweryfikować jak potrzeby zdefiniowane w kroku 1 mają się do rzeczywistości i kompetencji wszystkich członków zespołu. Możemy w łatwy sposób pokazać luki w kompetencjach, które wymagają podjęcia konkretnych działań.
  4. Zdefiniować dla wybranych kompetencji (te w których mamy braki i które zostały zidentyfikowane w kroku 3) akcje rozwojowe wypracowane przez zespół, które pozwolą zwiększyć % pokrycia kompetencji.
  5. Praca zespołowa to nie tylko kompetencje “twarde”, ale także konieczność spojrzenia na kompetencje “miękkie”.  Ta perspektywa pozwoli nam skrócić proces formowania zespołu oraz zwiększyć prawdopodobieństwo, że w ogóle uda się zbudować zespół. Na poziomie tablicy możecie analizować style (w naszym przypadku oparte o model DISC) oraz motywatory poszczególnych osób wchodzących w skład zespołu. Nasza praktyka pokazuje:
  • Im większa różnorodność stylów, tym lepiej.
  • Im bardziej zbliżone motywatory i wartości, tym lepiej.
  • Im lepiej się znamy, tym relacja bardziej oparta będzie na zaufaniu.
Rys 6. Tabela kompetencji w zespole lub projekcie

III Łatwe wyszukiwanie osób o konkretnych kompetencjach.  

Każdy może łatwo znaleźć osobę, od której może uzyskać pomoc. Kompetencje tworzą listę, każda kompetencja może być przypisana do wielu kategorii.

Rys 7. lista kompetencji z informacją o poziomie kompetencji
Rys 8. Szczegóły kompetencji
Rys 9. Szczegóły konkretnej kategorii, która grupuje kategorie

IV Możliwość zdefiniowania poziomów kompetencji i słownika kompetencji, który jest dostosowany do kontekstu każdej organizacji/zespołu/projektu.

V Możliwość łączenie mentorów z osobami szukającymi wsparcia. 

VI Wewnętrzny system rekomendacji. Każdy może napisać rekomendacje dla dowolnej osoby w kontekście wybranej kompetencji.  

VII Uwzględnienie nie tylko “twardych” kompetencji, ale również aspektów miękkich poprzez pokazanie na poziomie tablic kompetencji stylów poszczególnych osób oraz ich motywatorów.

Do czego możesz wykorzystać moduł Kompetencji w TeamToolbox?

  • Do stworzenia kompleksowego systemu wspierającego rozwój pracowników oraz uwalnianie ich potencjału. Będziemy mogli spojrzeć na kompetencje z 3 różnych perspektyw:

– Kluczowe kompetencje, czyli spojrzenie na teraźniejszość.
– Zainteresowania, czyli widok na przyszłość.
Rzeczywistość projektową i zespołową.

  • Wsparcia Sprzedaży, ponieważ będziemy mogli szukać projekty, które będą dopasowane do kluczowych kompetencji.
  • Do analizy zagregowanych danych na poziomie zespołu/projektu/obszaru/firmy o mocnych stronach (kluczowe kompetencje), zainteresowaniach oraz kompetencjach wykorzystywanych w rzeczywistości projektowej/zespołowej. 
  • Rekrutacji (możecie skorzystać z papierowych wersji kart “kluczowe kompetencje”, “zainteresowania”, “motywatory”, “user DNA”)
  • W procesie formowania nowego zespołu w celu dobrania osób najlepiej dopasowanych do potrzeb zespołu/projektu
  • W procesie poszukiwania nowej osoby do zespołu
  • Do zbudowania programu mentoringowego ,w którym system będzie łączył mentorów i osoby szukające wsparcia
  • Do budowania planów rozwojowych na poziomie zespołów i poszczególnych osób.
  • Do stworzenia wewnętrznego systemu rekomendacji 

Proces definiowania kompetencji

Niezależenie, czy skorzystacie z oprogramowania, czy z wersji papierowej możecie skorzystać z tego pomysłu na rozwój i uwalniania potencjału ludzi korzystając z następującego procesu: 

  1. Zdefiniuj kompetencje, które są dla Ciebie kluczowe (perspektywa kluczowych kompetencji) oraz zainteresowania (perspektywa zainteresowań).
  2. Dla wybranych kompetencji możesz wskazać te, w których możesz pełnić rolę mentora lub w których szukasz wsparcia.
  3. Na poziomie projektu/zespołu lider może warsztatowo przepracować kwestie rozwoju (perspektywa projektu) według następującego schematu:
  • Zdefiniujcie jako zespół listę kompetencji, która jest wymagana do realizacji projektu Dla każdej z kompetencji wyznaczcie liczbę osób potrzebną do zrealizowania projektu na każdym z poziomów np. 2 ekspertów 1 początkujący
  • Każda z osób dodana do tablicy uzupełnia poziom dla każdej z kompetencji

4. Sprawdźcie status każdej kompetencji weryfikując czy zespół ma wystarczające kompetencje w        stosunku do zdefiniowanych w punkcie 3a kompetencji.

5. Dla każdej z kompetencji możemy zdefiniować zadania rozwojowe, których celem jest zwiększenie      pokrycia wybranej kompetencji.

Dodatkowe informacje

Możecie zaprezentowaną idee wykorzystać w pracy z swoimi zespołami korzystając z post-it, kartek papieru, flamastrów,  flipchartu i podejścia warsztatowego. Tutaj znajdziecie prezentację z meetupu oraz gotowe materiały do wydrukowania (karty kompetencji, zainteresowań, motywatorów oraz opis procesu do wykorzystania i dostosowania do Waszego kontekstu).

Możecie również skorzystać z udostępnionej przez nas aplikacji i wesprzeć nas w jej rozwoju – więcej informacji znajdziesz na www.teamtoolbox.io – moduł kompetencji). Plany na jej rozwój mamy bardzo ciekawe 😉 Co nam się marzy?

Chcielibyśmy rozszerzyć moduł kompetencji dając możliwość:

  • Udostępniania przez firmę profili osób, które będą bez projektu. W ten sposób chcielibyśmy umożliwić firmom nawiązywania w bezpieczny, prosty i transparentny sposób współpracy bez konieczności korzystania z pośredników.
  • Generowania nowych szans sprzedażowych dla firm, które zdecydują się udostępnić wybrane przez siebie profile. Dzięki temu inni użytkownicy aplikacji będą mogli wyszukiwać udostępniane profile i kontaktować się ze wskazaną przez firmę osobą. Nawiązywać nowe relacje biznesowe w modelu B2B bez pośredników*.
  • Stworzenia rozproszonej “wirtualnej ławki”, dzięki czemu zainteresowane firmy będą mogły budować zespołu korzystając nie tylko ze swoich kompetencji, ale również wyszukując wśród osób i zespołów udostępnionych przez inne firmy korzystające z platformy.
  • Nie będziemy używali “sztucznej inteligencji”. Celem naszego rozwiązanie jest wsparcie rozwoju i uwalnianie potencjału ludzi w organizacjach. Technologia ma wspierać ten proces, a nie zastępować ludzi. Będziemy wspierali użytkowników w podejmowaniu decyzji pokazując im dostępne informacje.

* Nie chcemy być wirtualnym pośrednikiem, nie będziemy pobierali żadnej prowizji za skojarzenia firmy, która ma potrzeby i firmy, która dysponuje zespołem lub osobą spełniającą potrzeby Klienta.  

Piotr Medyński

Founder & co-CEO w Isolution, Founder & CEO Teamtoolbox, Founder Wizards, Community Organizer – meetup Management 3.0 Warsaw

Jestem przedsiębiorcą 😉
Lubię pracować z ludźmi, eksperymentować, tworzyć coś nowego i zmieniać świat.

Masz pytanie? Potrzebujesz pomocy? A może chcesz dowiedzieć się więcej o rozwiązaniach, jakie wypracowaliśmy?

#współpraca #zaangażowanie to dwie podstawowe wartości jakimi kierujemy się w naszej organizacji każdego dnia. Mówiąc o wartościach mamy na myśli konkretne zachowania jakie nam towarzyszą.

Jako społeczność #IsolTeam angażujemy się w różnego rodzaju akcje społeczne i charytatywne

MANAGEMENT3.0 Warsaw

Główną i już od ponad 4 lat akcją, którą tworzy Patrycja z działu People & Culture, Piotrek nasz Project Manager i Piotrek nasz Prezes jest organizacja meetupów grupy Management 3.0. Warsaw. W ramach działalności poza firmowej angażujemy się w tworzenie społeczności, której celem jest zmiana podejścia do zarządzania w organizacjach i zdobywanie wiedzy na temat nowych trendów oraz rozwiązań, które to zarządzanie pomagają wnieść na inny, bardziej efektywny poziom. W tym czasie zorganizowaliśmy ok 90 darmowych spotkań dla ludzi z całej polski. Możecie nas znaleźć na platformie Meetup oraz na Facebooku.

Programiści Dzieciom

Kolejnym obszarem na jaki mocno postawiliśmy to dzielenie się tym co potrafimy najlepiej – czyli programowanie. Chcieliśmy naszą wiedzę nie tylko użyć do projektów komercyjnych, ale stworzyć coś, co może odmienić dziecięce marzenia. Mamy na swoim koncie autorski program “Programiści Dzieciom”, który stworzyliśmypo godzinach  w trzyosobowym teamie. Wierzymy, że warto dzielić się wiedzą – pro bono. W ramach tego programu przeszkoliliśmy na terenie naszej firmy kilkanaścioro dzieci z podstaw programowania.

dokosza.pl – segregacja odpadów

W naszej firmie mocno zwracamy uwagę na ekologię. Chociażby segregując śmiec w naszej siedzibiei, organizując różne akcje namawiające naszych pracowników do dbania o nią razem z nami. I ta nauka nie poszła DO KOSZA 😊 Podczas piątego Hackathonu w marcu 2020 roku, nasi pracownicy stworzyli aplikację, która pomaga wielu użytkownikom w odpowiednim sortowaniu odpadów. Aplikacja jest darmowa i można ją znaleźć tutaj.

Dni Otwarte Isolution

Dodatkowo, organizujemy (o ile nam sytuacja na świecie pozwala), dni otwarte dla dzieciaków z różnych miejsc, aby odwiedzały nasza firmę i poznawały tajniki życia firmy z IT. Naszym celem jest pokazanie, że świat IT to wiele obszarów, a dążąc do celu możemy osiągnąć bardzo dużo.

EduScrum

Prócz akcji w które fizycznie jesteśmy zaangażowani,wspieramy nowatorskie podejście do edukacji opartej o wiedzę wyniesioną z branży IT, takie jak EduScrum, propagujące wdrażania metodyki Scrum w szkołach.

Mapa Firm

Jesteśmy pomysłodawcą Mapy Firm. Inicjatywy skupiającej najlepszych pracodawców, którzy chcą wyróżnić się kulturą organizacyjną. Swój projekt ze względu na trudny czas, zawiesiliśmy z początkiem pierwszego lockdownu, jednak wierzymy, że przeszliśmy już najtrudniejszą drogę i planujemy na nowo wskrzesić naszą inicjatywę.


Ale to nie wszystko… 🙂

Tłumaczenie książki

W ramach naszego #IsolTeam, postanowiliśmy ułatwić dostęp do metod, które stosujemy w naszej organizacji i wspólnie z pracownikami, a w szczególności Piotrem – testerem oraz jednym z uczestników program CoodCool- Marcinem, który stał się naszym pracownikiem przetłumaczyliśmy książkę Jimmy’iego Janlen’a “Zasady i Praktyki Podejmowania Decyzji”, którą znajdziecie tutaj.

Market TeamToolbox

Dzięki Marketowi Inicjatyw, z którego korzystamy w ramach naszej firmowej aplikacji TeamToolbox, wspieramy nie tylko firmowe inicjatywy CSRowe, ale także fundacje i akcje, które są dla nas ważne i z których pomocy korzystają nasi bliscy oraz znajomi w trudnych życiowo sytuacjach.


Podsumowując już zbliżający się ku końcowi rok, zaangażowaliśmy się w cztery duże akcje polegające na wsparciu osób potrzebujących środków na leczenie. W ramach aplikacji TeamToolbox nasi pracownicy przekazywali swoje uzbierane punkt za docenienie, a my jako firma przekazaliśmy środki pieniężne. Wspieramy projekty, które zgłaszają nasi pracownicy. Pomogliśmy min. w zbieraniu środków na operację serca, dla bliskiej osoby jednego z naszych pracowników oraz na wsparcie leczenia córki naszego kolegi.



W ramach #IsolTeam, jak co roku z okazji “Mikołajek” wsparliśmy dom dziecka. Podeszliśmy do tematu dwutorowo. Środki, które przeznaczaliśmy dotychczas na drobne upominki dla dzieci naszych pracowników (po wspólnym uzgodnieniu z nimi #autonomia) przeznaczyliśmy na zakup najbardziej potrzebujących rzeczy dla jednego z Warszawskich Domów Dziecka.


Dodatkowo, nasze Isolowe elfy przygotowały dla każdego dziecka personalizowany prezent mikołajkowy w ramach akcji, która sami skoordynowali.

 

Tego typu akcje, z okazji różnych świąt w naszej firmie odbywają się cyklicznie.

Wierzymy, że właśnie takimi gestami wspólnie możemy zmieniać otaczający nas świat i sprawiać, że Ci którzy potrzebują pomocy mogą na nas liczyć.

Patrycja Feldman

People & Culture Senior Specialist 

Każdego dnia z uśmiechem na twarzy wstaję do pracy. Tą energią staram się również zarażać innych.  Słuchając i będąc blisko ludzi wiem, co możemy wspólnymi siłami ulepszyć.

Każda firma tworząca oprogramowanie doskonali swój proces wytwarzania oprogramowania, każda ma na to inny pomysł. Nie jest to zadanie łatwe, ponieważ zależy od wielu składowych np. dziedziny biznesowej, kultury organizacji, modelu współpracy, technologii i wielu wielu innych.

W tym artykule, przedstawimy nasze podejście do realizacji projektów (zasady pracy), które stara się wykorzystać najlepsze praktyki zaczerpnięte z Agile, Scrum, Kanban, Lean, CRISP DNA, Management 3.0 dostosowane do naszego kontekstu oraz nasze autorskie pomysły. Cały czas szukamy usprawnień i poprawy jakości naszej pracy.

W ISOLUTION mamy podział na zespoły merytoryczne np. Programiści, Analitycy, PMO/Scrum Master, Testerzy. Zespół projektowy budujemy w oparciu o ludzi z różnych zespołów merytorycznych. Każdy projekt tworzy specyficzną, zależną od kontekstu projektu “kulturę projektu”.

Rys. 1 Organizacja projektu

Każdy uczestnik projektu pełni w ramach projektu 1 lub wiele ról, z którymi wiążą się konkretne odpowiedzialności. Zarówno role projektowe, jak i odpowiedzialności są wypracowywane per projekt.

Dodatkowo każdy projekt na początek stara się skorzystać z:

  • wcześniej wytworzonych w ramach innych projektów rozwiązań (Rejestr Rozwiązań) np. moduł do wysyłania e-mail, szkielet aplikacji RWA/PWA, integracja z PayPal/Slackiem/JIRA, CI/CD itd.

  • Dobrych Praktyk, które pozwalają nam czerpać z wcześniejszych doświadczeń np.  DoD, DoR, zadanie < 1 MD itd.

  • zasad prowadzenia projektów, które określają ramy dla każdego zespołu, pozwalające inicjalnie rozpocząć projekt i dalej dostosować go do własnego kontekstu.

Każdy projekt korzysta z dowolnego zestawu Dobrych Praktyk, Zasad Realizacji projektów oraz gotowych rozwiązań. Oczywiście dostosowuje je do własnych potrzeb, rozszerza. Rejestr Rozwiązań oraz Dobre Praktyki to nasze wewnętrzne, budowane przez lata doświadczenie. W dalszej części artykułu skupię się na opisaniu Zasad Prowadzenia Projektów, które stanowi swoisty Manifest.

Rys. 2 Organizacja projektu - szczegóły

Tworząc zasady zgodnie z którymi chcemy pracować tworząc innowacyjne cyfrowe produkty dla naszych Partnerów staraliśmy się skupić na tym, żeby gwarantowały one dobrą jakość pracy oraz dostarczenie wartości biznesowej. Poniżej nasz Manifest z krótkim omówieniem.

I Projekt jest ważny dla Klienta

Chcemy mieć pewność, że projekt/produkt jest ważny dla Klienta, że ma wszystkie niezbędne zasoby na realizację projektu. Szczególnie istotne jest dla nas wyznaczenie przez Klienta konkretnej osoby, która będzie pełniła rolę Product Ownera.

II Pracujemy w metodykach zwinnych.

Bierzemy to co najlepsze z podejść SCRUM, Agile, Kanban, CRISP, Lean. Współpracę opieramy na partnerskich relacjach w oparciu o umowę Agile.

  • Rozliczamy się na podstawie TS po każdym Sprincie.

  • Klient może zrezygnować ze współpracy w każdym momencie z miesięcznym okresem wypowiedzenia.

III Nie jesteśmy najtańsi cenowo, ale najtańsi kosztowo.

Oznacza to, że nie chcemy konkurować najniższą stawką, a najniższym końcowym kosztem stworzenia produktu i dostarczenia wartości, która będzie wspierała biznes naszych Klientów.

IV Transparentność

Budujemy z Klientem relacje partnerskie oparte na zaufaniu. Klient ma ciągły dostęp do wszystkich artefaktów projektu. Na bieżąco jest informowany o stanie realizacji projektu. Istotne dla nas parametry projektu to: % realizacji zakresu, % realizacji budżetu, poziom zadowolenie z pracy zespołu (Happiness Index).

V Zespół jest ważny

Rozwój naszego zespołu oraz jego zadowolenie z pracy jest dla nas bardzo ważne. Wierzymy, że dobrze zbudowany, zmotywowany i zaangażowany zespół jest w stanie nawet średni pomysł przekształcić w świetne rozwiązanie.

Dbamy o to by proces formowania zespołu uwzględniał potencjał i kompetencje każdej osoby, jej styl osobowości, motywatory. Chcemy zapewnić zespołowi bezpieczeństwo psychologiczne oraz środowisko zapewniające możliwość popełnia błędów. Z naszego punktu widzenia projekty są robione przez ludzi, którzy są członkami zespołów projektowych. Zadbanie o dobre środowisko pracy dla nich jest krytyczne.

  • Zespół ma prawo do popełniania błędów.

Tworzenie produktów cyfrowych jest niepowtarzalne. Zespół musi mieć komfort pracy w warunkach, które daje przestrzeń na popełnianie błędów szybciej. Chcemy, żeby cały zespół skupiał się na jakości i dostarczaniu wartości, a nie ciągłym strachu przed popełnieniem błędu.

  • Wierzymy w efekt synergii.

Zespół to siła. Dobrze zbudowany zespół stanowi wartość. Cenimy bardziej zespół od indywidualności.

  • Mówimy o problemach, gdy je zauważamy.

Budujemy zespoły proaktywne, odpowiedzialne i zaangażowane. Stosujemy zasadę, że o problemach mówimy od razu, nie czekamy do ostatniej chwili.

  • Oszacowanie zespołu jest “święte”.

Ufamy, że zespół szacuje najlepiej jak potrafi w danym momencie, dysponując określoną wiedzą na temat zadania.

  • Pojemność osoby = 32h

Każda osoba ma na tydzień 32h pojemności, pozostałe godziny do wykorzystania na rytuały i komunikację.

VI Codzienna praca odbywa się wg. jasnych zasad

Lubimy jasne zasady. Stosując je możemy budować relacje oparte na zaufaniu i skupić się na jakości oraz dostarczaniu wartościowych produktów.

  • Backlog zadań na sprint jest stały.

Po zaplanowaniu Sprintu nie pozwalamy zmieniać zakresu. Jeżeli jest taka potrzeba, zmieniamy podejście na oparte o Kanban.

  • Każde zadanie jest zapisane i oszacowane.

Tylko takie zadanie dopuszczane są do realizacji.

  • Oszacowane zadania zajmują mniej niż 1 MD.

W szacowaniu zadań bierze udział cały zespół. Z naszej praktyki wynika, że wydzielanie mniejszych zadań możliwych do zrealizowania w 1 dzień roboczy, ułatwia planowanie prac i ich przebieg.

  • Dzień pracy developera (8h) to realnie 5 h pracy

Badania wskazują, że przy zadaniach kreatywnych efektywny czas pracy to max 5-6 h. Wierzymy w to. Wierzymy, że dostarczając naszym klientom wartościowe produkty musimy być kreatywni, wypoczęci i zaangażowani. Musimy mieć czas na chwilę przerwy, zabawy i relaksu.

  • Znamy kryteria odbioru zadania DoD 

Zasady wg. których uznajemy zadanie za odebrane ustalamy przed, a nie po realizacji.

  • Wypełniamy TS codziennie

Chcemy być w pełni transparentni wobec naszych Klientów. Codzienne wypełnianie TS przez wszystkich pozwala dbać o budżet przedsięwzięcia.

  • Codziennie dostarczamy działające oprogramowanie

Stosując CI/CD/Devops automatyzujemy procesy związane z wytwarzaniem oprogramowania.

  • DEMO robi Klient

Odbioru prac dokonuje nasz Klient. To on prowadzi DEMO.

  • Planowanie

Klient bierze udział w planowaniu. Jego zaangażowanie jest dla nas krytyczne.

  • Priorytety

To Klient decyduje o tym co jest ważne z punktu widzenia biznesu. To on reguluje kolejność i tempo prac.

  • Sprint

Standardowo pracujemy w Sprintach. Realizujemy w nim tyle zadań, ile wynika z pojemności zespołu.

  • Błąd w szacowaniu

Tworzenie produktów cyfrowych jest niepowtarzalne. To zadanie kreatywne, realizowane w zespole. Dlatego istotne jest dla nas zapewnienie zespołowi środowiska do pracy kreatywnej, w której nie będą bali się popełniać błędy szybciej, uczyć się na błędach, usprawniać proces, dbać o jakość, poprawiać i ulepszać kod. W tym celu pracujemy stosując zasadę, że w przypadku pojawienia się przekroczenia terminu realizacji Klient zgadza się na wydłużenie czasu realizacji lub zdejmuje zadanie z realizacji (opłacając dotychczasowy czas) i wrzucając zadania z powrotem do backlogu.

  • Oczekiwanie na prace 

Dbamy o dostarczenie wartości dla naszych Klientów i jakość naszej pracy. Dbamy też o rozwój naszego biznesu.

W przypadku oczekiwania na dostarczenie artefaktów przez Klienta (środowisko, wykonanie testów) ustalamy z Klientem jak wykorzystać ten czas. Klient płaci za ten czas.

 

Przedstawione powyżej zasady to model  do którego dążymy. Nie zawsze udaje się zastosować wszystkie zasady w każdym projekcie. Chcemy je jednak jasno komunikować i rozmawiać z nimi z naszymi partnerami.

Organizacja prac projektowych jest elementem naszej kultury. Będziesz mógł o niej przeczytać więcej w kolejnym wpisie na blogu oraz na naszej stronie. #staytuned



Happiness Index daje: przestrzeń do przekazywania dwustronnego feedbacku w trybie ciągłym, wpływa na budowanie trwalszych relacji na linii pracownicy-pracodawca, podnosi poziom zaangażowania, przyczynia się do obniżenia rotacji, co w efekcie przekłada się na budowanie przewagi konkurencyjnej firm, które Happiness Index mierzą. Co więcej, w dobie wszechobecnej pracy zdalnej daje większe poczucie bezpieczeństwa, a także przestrzeń do dialogu oraz realnego wsparcia, którego wielu z nas w tym czasie potrzebuje.

Zacznijmy jednak od początku. Co to jest ten Happiness Index i o co w nim chodzi?

Źródło koncepcji Happiness Indexu

Koncepcja Happiness Indexu wywodzi się… z Buthanu. Kraju, w którym w 1972 roku po raz pierwszy zaczęto mówić o szczęściu jako o mierzalnym czynniku, który w kontekście zadowolenia z życia jest ważniejszy niż dobrostan, komfort i ekonomiczny wzrost kraju, w którym się żyje. 

Od kilku lat Happiness Index jest obecny globalnie w kontekście warunków do życia w poszczególnych państwach, ale także z powodzeniem jest mierzony w kontekście pracy, w której spędzamy większość naszego życia. Dlaczego poczucie szczęścia jest takie ważne?

Szczęście w pracy

Zadowolenie z pracy przekłada się na większą pewność siebie, skuteczniejsze podejmowanie decyzji, a w związku z tym również na produktywność. Kiedy jesteśmy zadowoleni, kiedy czujemy się dobrze w pracy,  szybciej i lepiej wykonujemy swoje zadaniałatwiej budujemy relacje w zespole, który w efekcie lepiej pracuje. Angażujemy się również chętniej w życie firmy i utożsamiamy się z nią. Szybciej również uczymy się i rozwijamy.

O co chodzi w Happiness Index'ie?

W zależności od specyfiki firmy oraz branży możemy przyjmować różne wymiary zadowolenia, które wpływają na nasze poczucie szczęścia. Możemy mierzyć np.:

  • zadowolenie z pracy w firmie,

  • zadowolenie z pracy z danym klientem/w danym zespole,

  • zadowolenie z wykonywanych zadań.

Najlepsze efekty uzyskamy porównując wyniki w dłuższych okresach czasu zarówno w kontekście danej osoby, całego zespołu, jak i całej firmy.

Jak mierzyć Happiness Index?

To zależy do tego, jaki mamy cel. Warto go mierzyć nie rzadziej niż raz na miesiąc. Optymalnie raz w tygodniu. Dlaczego? Czekając zbyt długo z reakcją, możemy przegapić najlepszy moment na interwencję i w efekcie stracić zaufanie, zaangażowanie, a w skrajnym przypadku nawet samego pracownika.

Jak reagować na Happiness Index?

Szybko. Pozytywny efekt może przynieść nawet sama próba nawiązania rozmowy i sygnał, że widzimy i zajmujemy się sprawą. Nie zawsze będziemy w stanie sami coś poradzić na pojawiające się wyzwanie, ale dzięki szybkiej reakcji pokażemy, że nam zależy. To czasami wystarczy, co jest ważne zwłaszcza w sytuacji, w której z obiektywnych względów nie damy rady poradzić sobie z danym wyzwaniem.

5 praktycznych wskazówek na koniec

  1. Zastanów się, jakie czynniki mają największy wpływ na poziom zadowolenia w Twojej organizacji i w oparciu o nie skonstruuj swój Happiness Index (HI).

  2. Szybko reaguj na pojawiające się spadki poziomu zadowolenia. Zauważaj jednak  także wzrosty. Osoby z wysokim, lub rosnący Happiness Indexem chętniej zaangażują się w życie firmy, zespołu i mogą stanowić dla Ciebie silne źródło wsparcia.

  3. Transparentna komunikacja to podstawa. Ludzie docenią Twoje zaangażowanie nawet w sytuacji, w której finalnie niewiele da się zrobić.

  4. Mów o tym, co udało się zrobić dzięki HI. Poproś o to w miarę możliwości również osoby, które uzyskały wsparcie. Dzięki temu ludzie chętniej będą ustawiać swoje Happiness Index’y.

  5. Podczas pracy zdalnej skorzystaj z Happiness Indexu nie tylko do zbierania feedbacku, ale również okazywania wsparcia, zainteresowania oraz rozmowy na temat potrzeb, które pojawiają się wraz z pracą zdalną.

Więcej informacji na temat narzędzi wspierających pracę zdalną, które możesz wykorzystać do pracy ze swoim zespołem, znajdziesz tutaj.

Wstęp

Branża ubezpieczeniowa oferuje bardzo szeroką gamę produktów, takich jak ubezpieczenia indywidualne, grupowe, komunikacyjne i wiele innych. Każde z nich wymaga przestrzegania innych procedur, wymogów prawnych oraz analizy różnego typu informacji zarówno przy sprzedaży polis, jak i przy wypłacie należnych roszczeń.

Generuje to wiele procesów, które obsługiwane ręcznie zajmują dużo czasu. Stąd wynika rosnące zainteresowanie tej branży wykorzystaniem algorytmów sztucznej inteligencji.

Nawet częściowa automatyzacja obsługiwanych w firmie procesów może znacząco zmniejszyć czas pracy nad pojedynczą ofertą ubezpieczeniową. Pozwoli także na optymalizację jej parametrów i zmniejszenie kosztów wynikających z ewentualnych roszczeń.

W tym artykule chciałabym przedstawić kilka obszarów, w których można wdrożyć algorytmy sztucznej inteligencji oraz przykładowe wyniki, jakie udało nam się uzyskać w niektórych z nich.

Wykorzystanie algorytmów sztucznej inteligencji w ubezpieczeniach

W przypadku szkody komunikacyjnej ustalenie kwoty wypłacanej z ubezpieczenia wymaga analizy stopnia uszkodzenia każdej części auta. Często rzeczoznawca dokonuje oceny na podstawie zdjęć przedstawiających poszczególne części samochodu. Następnie na tej podstawie szacowana jest wysokość wypłacanego świadczenia.

Wykorzystanie algorytmów analizy obrazów i sztucznej inteligencji może wspomóc rzeczoznawcę w procesie oceny stopnia uszkodzenia konkretnych części samochodu.

Aplikacja Proof of Concept, którą stworzyliśmy wraz z zespołem, pozwala na zidentyfikowanie i oznaczenie konkretnych części samochodu znajdujących się na zdjęciach oraz przypisanie każdej z nich estymowanego stopnia uszkodzenia. Dodatkowymi funkcjami, dostępnymi z poziomu aplikacji, mogłyby być: znalezienie najbliższego serwisu, wezwanie lawety, czy znalezienie samochodu zastępczego.

[Wykorzystane zdjęcie samochodu: : https://www.pxfuel.com/en/free-photo-qfmwd]

Tworzenie ofert ubezpieczeniowych dla nowych klientów wymaga analizy wielu czynników. Dla ubezpieczeń grupowych są to na przykład: struktura osób zatrudnionych w firmie, profil działalności, region, w którym firma ma siedzibę.

Dodatkowo sprzedawca musi przestrzegać szeregu reguł przy konstruowaniu takiej oferty, tak aby była ona zarówno korzystna dla firmy jak i atrakcyjna dla klienta.

W tym przypadku sztuczna inteligencja może zostać wykorzystana jako swoisty system rekomendacji, który pomoże sprzedawcy dobierać odpowiednie opcje dla konkretnego klienta. System taki umożliwia znaczne przyspieszenie i ułatwienie pracy przy konstruowaniu oferty.

Poniżej znajdują się przykładowe  wyniki rekomendacji w przypadku, gdy znamy wiek i płeć klienta (51 letni mężczyzna, 37 letnia kobieta, 39 letni mężczyzna). W tym rozwiązaniu sprzedawca zaznacza kilka opcji (wiersz: masked), a na tej podstawie system proponuje inne, które powinny znaleźć się w polisie (wiersz: recommendation).

Pierwszy wiersz w każdej z grup oznacza oryginalną polisę, która została zaakceptowana przez klienta.

Dodatkowo na podstawie historycznych danych pokazujących, jakie polisy są akceptowane przez  klientów, a jakie nie, mógłby on jeszcze lepiej dobierać konfigurację proponowanych ofert, zwiększając tym samym skuteczność sprzedaży nowych polis.

Propozycje zmiany warunków polisy ubezpieczeniowej najczęściej są przedstawiane, gdy zbliża się termin końcowy obecnej umowy lub kiedy coś złego dzieje się z polisą (np. występuje dużo zdarzeń, generujących większe niż przewidywaliśmy wypłaty odszkodowań). W takich przypadkach najczęściej proponuje się::

– podwyższenie składek z zachowaniem dotychczasowych warunków polisy,

– zachowanie wysokości składki, ale ze zmianami w zakresie polisy zgodnie z rekomendacjami przedstawionymi przez underwritera na podstawie historii zdarzeń.

Wykorzystanie algorytmów sztucznej inteligencji w tym procesie mogłoby wspomóc pracę nad skonstruowaniem nowej oferty, poprzez wskazanie co w danej polisie najlepiej byłoby zmienić tak, aby zminimalizować ryzyko dla firmy ubezpieczeniowej przy jednoczesnym zachowaniu jak najbardziej korzystnej oferty z punktu widzenia Klienta.

Podsumowanie

W artykule przedstawiłam przykładowe zastosowanie algorytmów sztucznej inteligencji w branży ubezpieczeniowej. Warto podkreślić, że poza omówionymi powyżej przypadkami, można wymienić również inne, takie jak: chatbot obsługujący klientów, szacowanie ryzyka, czy wykrywanie prób oszustw i wyłudzeń.

Te trzy przykłady mogą być wykorzystane zarówno w branży ubezpieczeniowej, jak i w wielu innych np. w branży finansowej, co opisałam szerzej w artykule Wykorzystanie AI w branży finansowej.

Wszystkich zainteresowanych zapraszam do rozmowy przez mój profil na LI, a także śledzenia naszych wpisów na blogu Isolution oraz naszych firmowych profilach na LI i FB.

Katarzyna Roszczewska

Rozpoczynając przygodę z algorytmami sztucznej inteligencji, warto postawić sobie dwa podstawowe pytania:

  1. Jaki problem chcielibyśmy rozwiązać?
  2. Jak zbudować model, który nam to umożliwi?

Jeśli chodzi o pierwsze pytanie, to ogranicza nas jedynie wyobraźnia i dostępność danych, które możemy wykorzystać do uczenia modelu. Jeśli chodzi o pytanie drugie to wybór modelu zależy w znacznej mierze od rozwiązywanego problemu, zasobów sprzętowych jakimi dysponujemy oraz czasu, w jakim chcielibyśmy skończyć nasze zadanie.

Najlepiej to pokazać na przykładach. Załóżmy, że chcemy stworzyć algorytm  wspomagający poprawną segregację odpadów na podstawie zdjęcia. Jeśli chodzi o sam dobór algorytmu, to w tym przypadku mamy kilka opcji. Możemy wykorzystać lasy losowe drzew decyzyjnych lub maszynę wektorów nośnych po uprzednim wyekstrahowaniu odpowiednich cech z obrazu. Możemy też wykorzystać splotowe sieci neuronowe, które operują bezpośrednio na danych obrazowych. Architekturę takiej sieci możemy zaprojektować sami,na wstępie warto jednak rozważyć adaptację gotowego modelu, co pozwoli nam zaoszczędzić dużą ilość czasu. Ja do rozwiązania przyjętego problemu zdecydowałam się wykorzystać wstępnie nauczone modele sztucznych sieci neuronowych. Jak będzie to wyglądało w praktyce? Przeprowadzę Was przez ten proces krok po kroku.

Analiza i przygotowanie danych

Zbiór danych, z którego postanowiłam skorzystać, znajduje się na stronie: Garbage Classification. Zawiera on zdjęcia odpadów podzielonych na 6 kategorii: karton, szkło, metal, papier, plastik i odpady zmieszane. Ostatnia kategoria zawiera zdjęcia przedmiotów, które w większości mogłyby zostać przyporządkowane do 5 pozostałych grup. Z tego względu wykluczamy ją z dalszej analizy. Poniżej przedstawiony został wykres, na którym widać liczbę zdjęć dostępnych dla każdej z klas.

Bardzo ważnym etapem przygotowania zbioru danych jest jego podział na co najmniej dwa podzbiory: treningowy i walidacyjny. Jeszcze lepszą praktyką jest stworzenie trzech rozłącznych zbiorów danych: treningowego, walidacyjnego i testowego. W tym przypadku rezultaty prezentowane na zbiorze testowym są reprezentatywne i pokazują rzeczywistą skuteczność systemu dla nowych, niewidzianych przez niego wcześniej zdjęć. W moim przypadku 60% zdjęć posłużyło do treningu, 20% stanowiło zbiór walidacyjny, a kolejne 20% trafiło do zbioru testowego. Poniżej znajdują się przykładowe zdjęcia dla każdej z klas. Każde zdjęcie ma rozmiar 512 x 384 pikseli. W przypadku wykorzystywania gotowej sieci neuronowej bardzo ważne jest dostosowanie rozmiaru obrazów w zbiorze do rozmiaru danych wejściowych akceptowanych przez sieć. W przypadku sieci Xception[1] rozmiar warstwy wejściowej to 299 x 299, natomiast w przypadku sieci VGG16[2] rozmiar ten wynosi 224 x 224. Z tego też względu przed przystąpieniem do nauki modelu musimy przeskalować nasze obrazy.

Przygotowanie i trenowanie modeli

Do rozwiązania problemu jaki sobie postawiłam, wykorzystałam dwie, popularne architektury sieci: VGG16 oraz Xception. Obydwa wybrane przeze mnie modele uczone były na zbiorze  ImageNet[1], który zawiera zdjęcia obiektów należących do 1000 klas. W związku z powyższym warstwa wyjściowa, odpowiedzialna za klasyfikację wejściowego obrazu posiada 1000 wyjść. W przypadku analizowanego przeze mnie problemu wielkość warstwy wyjściowej powinna wynosić 5. Poniżej znajduje się kod, który umożliwia przystosować wstępnie przetrenowany model do mojego zbioru danych.

# model adaptation
20   base_net = tf.keras.applications.xception.Xception(weights='imagenet')
21   # base_net=tf.keras.applications.vgg16.VGG16(weights='imagenet')
22   base_net_input = base_net.get_layer(index=0).input
23   base_net_output = base_net.get_layer(index=-2).output
24   base_net_model = models.Model(inputs=base_net_input, outputs=base_net_output)
25   
26   for layer in base_net_model.layers:
27      layer.trainable = False
28   
29   new_xception_model = models.Sequential()
30   new_xception_model.add(base_net_model)
31   new_xception_model.add(layers.Dense(5, activation='softmax', input_dim=2048))

Ze względu na niezbyt duży zbiór danych przy uczeniu modelu zastosowałam zwiększenie liczby danych uczących (ang.data augmentation). Poniżej znajduje się fragment kodu, odpowiedzialnego za trening wybranego modelu

# hyperparameters
34   base_learning_rate = 0.0001
35   opt = optimizers.SGD(lr=1e-3, decay=1e-6, momentum=0.9, nesterov=True)
36   
37   new_xception_model.compile(optimizer=opt,
38                             loss='sparse_categorical_crossentropy',
39                             metrics=['accuracy'])
40   
41   # data preparation and augmentation
42   train_data_gen = ImageDataGenerator(
43      rescale=1. / 255,
44      shear_range=0.2,
45      zoom_range=0.2,
46      horizontal_flip=True)
47   
48   valid_data_gen = ImageDataGenerator(rescale=1. / 255)
49   
50   train_generator = train_data_gen.flow_from_directory(
51      directory='training_data',
52      target_size=img_dim,
53      color_mode="rgb",
54      batch_size=batch_size,
55      class_mode="sparse",
56      shuffle=True,
57      seed=42
58   )
59   
60   valid_generator = valid_data_gen.flow_from_directory(
61      directory='validation_data',
62      target_size=img_dim,
63      color_mode="rgb",
64      batch_size=batch_size,
65      class_mode="sparse",
66      shuffle=True,
67      seed=42
68   )
69   
70   # model training
71   garbage_recognition_model = new_xception_model.fit_generator(generator=train_generator,
72                                                               validation_data=valid_generator,
73                                                               epochs=epochs,
74                                                               callbacks=[checkpoint, tensorboard_callback, earlyStop]
75                                                               )
76   

Podczas trenowania wybranych modeli zastosowałam wczesne zatrzymanie uczenia (ang. early stopping). Polega ona na tym, że jeśli skuteczność rozpoznawania zdjęć ze zbioru walidacyjnego nie wzrasta przez określoną liczbę epok, to uczenie zostaje przerwane. Stosowanie tego typu podejścia zmniejsza ryzyko dopasowania modelu do danych uczących (ang. overfitting). Poniżej przedstawione zostały krzywe uczenia dla zbioru treningowego i walidacyjnego. Widoczne jest, że w tym przypadku znacznie lepiej poradziła sobie sieć Xception, pozwalając na uzyskanie ponad 80% skuteczność rozpoznawania zdjęć ze zbioru walidacyjnego.

Skuteczność stworzonych rozwiązań

Jak wspominałam wcześniej określenie rzeczywistej skuteczności naszego modelu najlepiej wykonać na nowym zbiorze danych, które nie brały udziału w uczeniu naszych modeli. Dlatego też poniżej przedstawiłam wyniki, jakie udało się uzyskać na zbiorze testowym. Zbiór ten zawierał 480 zdjęć. Wyniki potwierdzają wniosek, że w tym przypadku znacznie lepiej poradził sobie model bazujący na wstępnie przetrenowanej sieci Xception. Uzyskała ona skuteczność 83%, czyli o niemal 10 punktów procentowych więcej niż model oparty o architekturę VGG16.

VGG16

ACC = 74%

Xception

ACC = 83%

Podsumowanie

Artykuł pokazuje, w jaki sposób wykorzystać wstępnie przetrenowane architektury sieci w konkretnym problemie, który chcemy rozwiązać. Opisuje on pokrótce proces analizy i przygotowania danych, zaadaptowania gotowych modeli do swoich potrzeb oraz metody oceny skuteczności stworzonego rozwiązania.

Jest to pierwszy z serii artykułów przeznaczony dla osób chcących rozpocząć swoją przygodę z wykorzystywaniem algorytmów sztucznej inteligencji. Serdecznie zapraszam do śledzenia naszych wpisów na blogu Isolution oraz naszych firmowych profili na LI i FB, a także do zapisania się do naszego newslettera.

Według raportu dotyczącego wykorzystania sztucznej inteligencji w obszarach BSFI[1] (bankowość, usługi finansowe, ubezpieczenia) wartość tego obszaru rynku wynosiła2.5 miliarda dolarów w 2017 roku. Prognozy pokazują, że do 2024 może ona osiągnąć nawet 25 miliardów dolarów. Firmy z obszaru szeroko pojętych usług finansowych inwestują w rozwiązania wykorzystujące sztuczną inteligencję, które pozwalają na zwiększenie ich zysków poprzez budowanie atrakcyjnej i konkurencyjnej oferty, a także optymalizację procesów. W tym artykule chciałabym opowiedzieć o tym, dlaczego sztuczna inteligencja stała się tak popularna na przestrzeni ostatnich kilkudziesięciu lat oraz pokazać, w jakich obszarach według mnie może być ona wykorzystana w branży finansowej.

AI, dlaczego teraz?

Termin “sztuczna inteligencja” został użyty po raz pierwszy w roku 1956 przez Johna McCarthy’ego, który określił nim “konstruowanie maszyn, o których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów inteligencji”. Od momentu zdefiniowania sztucznej inteligencji do momentu, w którym zaczęliśmy ją aktywnie wykorzystywać do rozwiązywania zagadek, a z czasem problemów biznesowych, minęło nieco ponad 40 lat. W roku 1997, wielokrotny mistrz świata w szachach Garry Kasparov został pokonany przez komputer. To był moment, w którym pojawiło się wiele dyskusji wokół sztucznej inteligencji i jej możliwych zastosowań. Nieco ponad 20 lat później, w 2019 roku, sieć neuronowa DeepCubeA[2] ułożyła kostkę rubika w 1.2 s,, wykonując to zadanie trzykrotnie szybciej od najlepszych w tej dziedzinie ludzi. To był dowód na to, jak bardzo algorytmy sztucznej inteligencji rozwinęły się przez ostatnie lata oraz przykład możliwości, jakie daje AI w zakresie optymalizacji procesów.

W dzisiejszych czasach algorytmy sztucznej inteligencji wykorzystywane są do rozwiązywania coraz większej liczby problemów z różnych dziedzin naszego życia, od rozpoznawania obrazów po autonomiczne kierowanie pojazdami. W ostatnich latach obserwujemy coraz większe zainteresowanie tym tematem przez firmy z wielu branż. Jednak skoro termin ten jest znany już od niemal 70 lat, to dlaczego dopiero teraz mamy do czynienia z tak ogromnym postępem w tym zakresie? Powodów jest kilka:

Wykorzystanie algorytmów sztucznej inteligencji w bankowości

Branża finansowa charakteryzuje się dostępem do ogromnych zasobów danych. Wykorzystanie algorytmów z zakresu sztucznej inteligencji pozwala na stworzenie rozwiązań, które będą stanowiły o konkurencyjności firmy na rynku, a także pozwolą na optymalizację procesów.

Jakich konkretnie? Oto kilka pomysłów:

a. system rekomendacji

Rekomendowanie odpowiednich produktów obecnym lub potencjalnym klientom w oparciu o analizę ich zachowań, jest bardzo ważnym elementem sprzedaży i dosprzedaży wielu firm, między innymi banków. . Poza oczywistymi zyskami finansowymi idzie za tym również potencjalne zadowolenie klientów, którzy nie czują się zarzucani losowymi reklamami produktów, a traktowani indywidualnie.

Doskonałym przykładem pokazującym, jak dużą rolę w zdobywaniu klientów i ich zaufania do marki pełni personalizacja, jest serwis Netflix. Algorytmy uczenia maszynowego Netflixa na podstawie dostępnych informacji nie tylko proponują nam tytuły, które potencjalnie będziemy chcieli obejrzeć, ale również dobierają zwiastuny filmów oraz seriali, które widzimy na stronie głównej zaraz po zalogowaniu.  Jeśli nasz profil pokazuje, że lubimy filmy z udziałem Henry’ego Cavila, prawdopodobnie zobaczymy propozycję serialu z Jego udziałem, a na stronie głównej pojawi nam się jego zwiastun z postacią aktora[3]

Analogicznie, w branży bankowej proponowanie odpowiednich produktów może być oparte na szeregu informacji, takich jak: profil behawioralny konsumenta czy informacje o produktach, które mamy w ofercie.

b. personalny asystent

Kolejnym przykładem zastosowania algorytmów sztucznej inteligencji do rozwiązań usprawniających pracę banku, ale też budujących pozytywną opinię o nas wśród klientów, jest chatbot, lub w bardziej rozbudowanej wersji, personalny asystent. Zaletą systemów tego typu jest ich całodobowa dostępność oraz natychmiastowa odpowiedź na najczęściej zadawane przez klientów pytania. Daje to szereg korzyści, z których za najważniejsze można uznać:

Dodatkowo w takim rozwiązaniu możliwe jest proponowanie klientowi najkorzystniejszych dla niego ofert w kontekście jego preferencji i nawyków, a także pomoc w zarządzaniu jego budżetem domowym np. poprzez wyszukiwanie i wysyłanie informacji o subskrypcjach, o których być może zapomniał.

c. wspomaganie operacji giełdowych

Innym przykładem wykorzystania algorytmów w kontekście sektora finansowego jest wspomaganie decyzji giełdowych, Każdy inwestor zanim podejmie decyzję o inwestycji, staje przed koniecznością analizy szeregu czynników mających wpływ na cenę akcji i przyszłe zyski.

Algorytmy sztucznej inteligencji pozwalają na skrócenie czasu monitorowania tych niekiedy setek czynników, wskazują również informacje istotne z punktu widzenia potencjalnych działań, które chcemy podjąć.

Odpowiednio przygotowane rozwiązania umożliwiają rozpoznawanie wzorców występujących na rynku, a także prognozowanie cen interesujących nas akcji.

d. szacowanie ryzyka

W branży finansowej jednym z najważniejszych czynników bezpośrednio przekładającym się na posiadany kapitał jest odpowiednie oszacowanie różnego rodzaju ryzyk, takich jak na przykład:

W tym obszarze również możliwe jest wykorzystanie algorytmów sztucznej inteligencji, które pomogą nam na podstawie danych dotyczących klienta takich jak chociażby jego historia finansowa czy wiarygodność kredytowa oszacować potencjalne ryzyko wejścia z nim we współpracę lub udzielenia mu pożyczki. Warto tutaj dodać, że w tym przypadku możliwe jest wykorzystanie również różnego typu danych alternatywnych, takich jak: regularność w dokonywaniu opłat nie uwzględnionych w historii finansowej czy  publicznie dostępne dane z mediów społecznościowych, które budują wiarygodność potencjalnego klienta bądź współpracownika. W tym przypadku ważne jest również to, aby podejmowane przez nas decyzje były transparentne dlatego konieczne jest wykorzystanie modeli interpretowalnych. Wykorzystanie tego typu modeli przy szacowaniu chociażby wiarygodności kredytowej wpływa na budowanie zaufania klientów do firmy, ze względu na to, że podejmowane decyzje są sprawiedliwe, nie zależą od interpretacji człowieka i są w pełni weryfikowalne.

e. wykrywanie prób oszustw i wyłudzeń

Kolejnym kluczowym obszarem, w którym warto rozważyć wykorzystanie algorytmów sztucznej inteligencji jest detekcja potencjalnych oszustw lub wyłudzeń finansowych. W tym przypadku tak jak w przypadku szacowania ryzyk każda źle podjęta decyzja generuje duże straty finansowe oraz zachwianie zaufania klientów do marki. Tutaj też bardzo ważne jest stworzenie profilu zachowań typowych dla klienta w oparciu o jego historię finansową. Na tej podstawie możliwe jest odróżnienie zleceń bankowych generowanych przez klientów od tych, które generują boty czy wykrywanie podejrzanej aktywności na koncie klienta.

Podsumowanie

Przykłady przedstawione powyżej są jedynie skrótowym opisem możliwych zastosowań sztucznej inteligencji w branży finansowej, jednak dają dobry punkt odniesienia. Temat ten jest bardzo obszerny, dlatego jeden artykuł nie wystarczy, żeby pokazać pełnię możliwości, jakie dają algorytmy sztucznej inteligencji w kontekście zastosowania w branży finansowej. Z tego też względu planujemy publikację kolejnego artykułu, w którym mój kolega z zespołu opowie o konkretnych przypadkach i projektach, które mieliśmy okazję realizować dla klientów z tego obszaru. Wszystkich zainteresowanych zapraszamy do śledzenia naszych wpisów na blogu Isolution oraz naszych firmowych profilach na LI i FB.

[1] https://www.gminsights.com/industry-analysis/artificial-intelligence-ai-in-bfsi-market

[2] https://www.theregister.co.uk/2019/07/16/ai_rubiks_cube/

[3] https://netflixtechblog.com/artwork-personalization-c589f074ad76

W poprzednim wpisie poruszyłem temat autoenkoderów. Warto wdrożyć tę wiedzę w życie. Wyobraźmy sobie system, gdzie komunikacja między serwisami odbywa się za pomocą Kafki. W trakcie życia systemu okazało się, że niektóre z tych zdarzeń są całkiem szkodliwe. Musimy je wykryć i przerzucić na osobny proces, gdzie zostaną dokładnie zbadane.

Wyjdźmy od paru założeń:

Przetwarzanie zdarzeń z Kafka Streams

Kafka Streams jest biblioteką pozwalająca na przetwarzanie danych pomiędzy topikami. Pierwszym krokiem jest wpięcie się do [all_events] i zbudowanie topologi procesu.

Filtrując po kluczu, zdarzenia kierowane są na dedykowane topiki, gdzie zostaną odpowiednio obsłużone.

Autoenkoder w DL4J

Biblioteka pozwala na wykorzystanie gotowych modeli zbudowanych w Kerasie. Jest to fajne rozwiązanie, gdy zespół AI pracuje w TF/Keras i on odpowiada za budowę i dostosowywanie modeli. W tym przypadku pójdziemy inną drogą, stworzymy i wytrenujemy autoenkoder w Javie.

Zdarzenia mają analogiczną budowę i wartości, jak w przykładzie z poprzedniego wpisu. Podzielone zostały na dwa pliki CSV [normal_raw_events.csv] oraz [anomalous_raw_events.csv]

Przychodzące dane są nieznormalizowane. Budujemy dedykowany NormalizerMinMaxScaler, który przeskaluje wartości do zakresu [0.0-1.0].

Wytrenowany normalizer posłuży jako pre-procesor dla dedykowanego iteratora, który porusza się po pliku [normal_raw_events.csv].

Autoenkoder będzie posiadał analogiczną budowę jak przywołany przykład w Kerasie.

Model i normalizer zostaje zapisany. Docelowo powinny znaleźć się na dedykowanym zasobie, z którego działająca aplikacja pobrałaby i zbudowała swoją konfiguracje.

Wytrenowany model może wykazać się średnim błędem rekonstrukcjidla typowych zdarzeń na poziomie 0.0188, natomiast dla anomalii na poziomie 0.0834. Rzucając MSE dla 100 zdarzeń z dwóch grup na wykres, możemy określić próg odcięcia na poziomie [threshold=0.045].

Kafka Stream Autoenkoder Transformer

By zapiąć model w topologie procesu wykorzystam interfejs ValueTransformer zaimplementowany w klasie AnomalyDetection. W konstruktorze powołujemy do życia model wraz z normalizerem oraz klasy pomocne w obliczeniu błędu rekonstrukcji.

Metoda transform otrzymuje zebrane w oknie zdarzenia. Muszą zostać one zmapowane na format zrozumiały dla modelu [INDArray]. Dla każdego ze zdarzeń obliczany jest błąd rekonstrukcji. Te, które przekroczą próg otrzymują klucz ANOMALOUS.

Podsumowanie

Materiały

Mateusz Frączek, R&D Division Leader

Anomalie w systemach zdarzają się rzadko. Na straży “biznesowej poprawności” stoją warstwy walidacji, które patrząc na parametry zdarzeń, są w stanie wyciągnąć je z procesu. Żądanie wypłaty gotówki w niestandardowym dla właściciela karty miejscu, czy odczyt z sensora przekraczający normy można weryfikować bazując na profilach, czy danych historycznych. Co jeśli jednak zdarzenie na pierwszy rzut oka nie odbiega tak bardzo od normy?

Wielowymiarowa natura danych

Anomalie nie są łatwe do wykrycia. Często wartości przyjętych cech subtelnie odbiegają od prawidłowego rozkładu, a czasem ich odchylenie od normy jest zauważalne dopiero przy uwzględnieniu serii zdarzeń i charakterystyk czasowych. W takich przypadkach standardowym podejściem jest analiza cech pod kątem np. ich wzajemnej korelacji. Bardzo fajnie do tego problemu podszedł Mirek Mamczur w swoim wpisie.

Na nasze potrzeby wygenerujemy sztuczny zbiór danych, gdzie jedną z klas uznamy za anomalie. Zdarzenia będą posiadały 15 cech, które skupione zostaną dosyć blisko siebie z odchyleniem standardowym na poziomie 1.75.

By zmusić model do większego wysiłku możemy wymusić generowanie danych bliżej, zmniejszając [center_box].

Autoenkoder (undercomplete)

Ciekawą cechą tej architektury jest jej umiejętność zakodowania danych na ich reprezentacje z mniejszą liczbą cech (latent representation). W trakcie nauki miarą wiernego odtworzenia danych wejściowych jest błąd rekonstrukcji.

Mając n-wymiarowy x, enkoder f(x) = h kompresuje x do jego m-wymiarowej postaci h gdzie m< n. Dekoder będzie się starał odtworzyć dane do oryginalnej liczby wymiarów g(h) = ~x. Miarą wierności odtworzenia jest wartość funkcja straty L(x , g(f(x))), im ona mniejsza, tym nasze ~x jest bliższe x.

Idąc tym tropem, gdy do nauki modelu przyjmiemy prawidłowe zdarzenia w naszym systemie, model powinien wyciągnąć z nich cechy i na ich bazie odtworzyć zdarzenie z pewnym przybliżeniem. Gdy do modelu trafi zdarzenie anormalne, błąd rekonstrukcji powinien być zauważalnie większy ze względu na inną charakterystykę danych.

Keras

Przy pomocy Pandas’a budujemy DataFrame zawierający dane testowe. Po przeskalowaniu 20% z nich przeznaczonych zostanie na walidacje.

W przypadku niektórych modeli i problemów, które rozwiązują, (np. klasyfikacja z wykorzystaniem CNN) zwiększenie głębokości może pomóc wydobyć z danych większą ilość informacji. Zbyt głębokie Autoencodery nauczą się kopiować X w Y bez zbudowania ich skompresowanej reprezentacji, na której nam zależy. Warto na tym przykładzie sprawdzić, jak będzie się zmieniał MSE, gdy zwiększymy głębokość oraz gdy zredukujemy liczbę neuronów.

Model został przetrenowany na 100 epokach. Powyżej tej wartości nie wykazywał tendencji do poprawy i wynik ustabilizował się na poziomie

0.017–0.018 MSE.

Na wykres naniesiemy próg odcięcia [threshold=0.035] powyżej którego będziemy klasyfikować zdarzenia jako podejrzane.

Taki kawałek kodu po modyfikacjach może zostać wpięty do systemu i służyć jako walidator. Wszystko z MSE ≥threshold poleci na dedykowaną kolejkę podejrzanych zdarzeń wymagających analizy, reszta będzie obsługiwaną standardowym flow.

Podsumowanie

W przykładach wykorzystałem sztucznie wygenerowany zbiór danych przeznaczony do klasteryzacji. Dane dla dwóch klas posiadały cechy z zauważalnym rozrzutem między sobą, co pomagało modelowi w trakcie nauki wykryć różnice w Wrealnych sytuacjach tylko niektóre z cech będą odbiegać od normy. Autoenkodery są jedną z możliwości oceny zdarzenia i powinniśmy stosować je razem z innymi algorytmami.

Materiały

Mateusz Frączek, R&D Division Leader

W dzisiejszych czasach większość przedsiębiorców zdaje sobie sprawę z potencjału marketingowego jaki niesie ze sobą wykorzystywanie najnowszych rozwiązań technologicznych oraz dostrzega konieczność rozwoju i inwestowania w nie. Kluczową składową sukcesu w biznesie, która pozwala generować zyski i zmniejszać wydatki, jest umiejętność bieżącego podążania za rynkiem i dopasowanie do jego realiów. Niekiedy jednak przedsiębiorcy nie wyobrażają sobie w jaki sposób mogliby wykorzystać nowe, skomplikowane technologie i jak mogą one być zastosowane w procesach biznesowych ich działalności, które wydają się nie mieć żadnego związku z hasłami takimi jak sztuczna inteligencja. Coraz więcej nowych możliwości i rozwiązań pojawia się obecnie niemal z miesiąca na miesiąc i aby sporządzić wyczerpującą listę możliwości, potrzeba by napisać raczej książkę zamiast artykułu. Warto zatem skorzystać z konsultacji, jakie możemy zaoferować, aby wspólnie wypracować nowe rozwiązania, dające wartość w kontekście Państwa biznesu. Na naszym blogu pojawiają się wpisy o zastosowaniach sztucznej inteligencji w różnych branżach i szczerze zachęcam do zapoznania się z nimi. Zaś w tym artykule postaram się przybliżyć kilka kluczowych zagadnień, które stanowią pierwszy krok na drodze do wdrożenia sztucznej inteligencji w każdej firmie.

 Do nowych technologii, które z całą pewnością są warte wzięcia pod uwagę, należą sztuczne sieci neuronowe oraz uczenie maszynowe. Dają one niesamowite możliwości w przetwarzaniu różnego rodzaju danych, usprawniając wiele czynności, czy też dając wartościowe spostrzeżenia, które można wykorzystać do zwiększenia zysków. Do takich spostrzeżeń, uzyskanych dzięki algorytmom sztucznej inteligencji należeć mogą przykładowo wnioski w postaci – “do tego typu klientów musimy adresować inne rozwiązania, aby zwiększyć sprzedaż”. Wspomniane dane to mogą być dokumenty, obrazy, dźwięki, nagrania, czy też tabele bazy danych. Ważne jest jednak, aby zbudować świadomość osób chętnych do inwestowania w tę kategorię algorytmów, odnośnie do wymagań, jakie muszą zostać spełnione, aby inwestycja ta była skuteczna. Warto odpowiedzieć sobie skrupulatnie na kilka pytań, a pierwszym z nich jest – jakie dane posiadam? Aby znaleźć odpowiedź na to pytanie, warto wypisać sobie procesy zachodzące w firmie. Nie zawsze na pierwszy rzut oka widać, że posiadając magazyny z kamerami, posiadamy co najmniej 2 źródła danych. Po pierwsze dane magazynowe, które można wykorzystać do optymalizacji rozłożenia towaru i jego pobierania w odniesieniu do terminów transportów. Po drugie, dane w postaci obrazu z kamer, które można wykorzystać np. w celach bezpieczeństwa. 

Dane, które posiadasz, zazwyczaj poddawane są ewaluacji zgodnie z poniższą listą. Bardzo istotna w tym miejscu informacja, że dane nie muszą być idealne! Istnieją sposoby na to, aby radzić sobie z błędami, brakami w danych itp., jednakże zawsze lepiej jest dążyć do ideału, a na pewno dobrze przygotowane dane przełożą się na sprawność pracy z nimi oraz wyniki, jakie dzięki ich przetwarzaniu będzie można osiągnąć.

Przyjmuje się, że im bardziej złożony problem chcesz rozwiązać, tym więcej danych potrzebujesz. Dzisiejsze rozwiązania dają naprawdę niesamowite możliwości, w niektórych przypadkach, nawet z bardzo niewielką ilością danych, które muszą po prostu oddawać charakterystykę Twoich działań. Niemniej Istnieją pewne zasady (oparte na doświadczeniu) mówiące o absolutnym minimum. Przykładowo, korzystając ze wspomnianego wcześniej magazynu, jest to 1000 transakcji, które zostały obsłużone. Wszystko to bardzo mocno zależy jednak od konkretnego przypadku i warto już na tym etapie zasięgnąć rady ekspertów. Z punktu widzenia osób technicznych, ważne jest również, aby znać granice, po których przekroczeniu model nie będzie dawał już lepszych wyników, a wręcz zacznie spadać poziom jego stabilności. Nie znaczy to bynajmniej, że w takim momencie nie warto już gromadzić danych. Dane pozwalają nam na znajdowanie w historii pewnych zależności i wzorców na bazie, których chcemy również przewidywać przyszłe zdarzenia. I tu kolejna ważna uwaga. Możemy starać się przewidywać pewne ogólne prawdy niezależne, kiedy wystąpiły. Czy był to rok 2000, czy 2017. Lato, czy zima. Możemy także szukać czegoś, co jest zależne od wielu innych czynników, które chcemy powiązać z czasem ich występowania. Dlatego tak istotne jest nie tylko przechowywanie archiwalnych danych, ale również zbieranie tych jak najbardziej aktualnych.

Jeżeli chcemy precyzyjnie przewidywać pewne istotne fakty, bardzo ważne jest, aby zbiór danych był stosownie zbilansowany, tzn. musi być jak najbardziej równomierny rozkład ilości rekordów w każdej z klas. Choć tu ważna uwaga, mogą zaistnieć przypadki, kiedy nie będzie możliwości uzyskania takiego równomiernego rozkładu i nie powinno się tego zmieniać, ponieważ w uzasadnionych przypadkach sam ten fakt może również nieść za sobą jakiś rodzaj informacji do wykorzystania w modelu. Z reguły jednak sztuczne bilansowanie zbioru powoduje jedynie uzyskanie bezużytecznego modelu.

Miejsce drugie tego punktu nie jest przypadkowe, ponieważ jeżeli posiadamy wystarczająco dużo danych, problem niezbalansowanej próbki nie jest już tak istotny. W badaniach udowodniono, że żadna z metod bilansujących nie może równać się z efektem uzyskiwanym poprzez dodanie większej ilości danych. 

Możliwość uzupełniania przez pracownika pól tekstowych w formularzach generuje wiele potencjalnych problemów na poziomie spójności danych w bazie, a także późniejszego ich przetwarzania. Wszędzie tam, gdzie nie ma co najmniej walidacji albo w najlepszym przypadku możliwości wyboru wartości ze słowników, bardzo często spotykane są np. literówki, czy też wartości wpisywane bez staranności jak np. wiek: 200 lat. Przyczyny takich sytuacji należy szukać w brakach wypracowanych standardów, szablonów oraz słowników, z których mogliby korzystać pracownicy. Jest to aspekt bardzo istotny, żeby zweryfikować zgodność danych z rzeczywistością i jak najszybciej wychwycić błędy oraz wdrożyć wspomniane rozwiązania eliminujące ponowne występowanie takich problemów, ponieważ dane, które nie oddają realiów, będą skutkowały mało wiarygodnymi wynikami.

Puste, nieuzupełnione pola tabel powodują, że dany rekord może okazać się bezużyteczny, pomimo posiadania być może innych, bardzo wartościowych informacji. Widać więc, że jest to strata potencjału, na jaką szkoda sobie pozwolić. Takie sytuacje najczęściej wynikają z podobnych powodów, jakie zostały przedstawione w punkcie trzecim.

W Jaki sposób unikać wspomnianych strat i radzić sobie w sytuacji, kiedy jeden, lub wiele powyższych punktów nie zostaje spełnionych? Rozwiązaniem jest przede wszystkim wypracowanie odpowiednich standardów funkcjonowania firmy, ale co jest jeszcze ważniejsze, wprowadzenie ich i konsekwentne stosowanie. Poprzez ten artykuł chciałbym rozpocząć serię ukierunkowaną na dzielenie się wiedzą związaną z projektami z zakresu sztucznej inteligencji. W portfolio naszego zespołu posiadamy szereg doświadczeń zarówno w sferze komercyjnej, jak i naukowo badawczej. W każdym przypadku serdecznie zapraszamy do kontaktu, ponieważ informacje w tym artykule, są jedynie wierzchołkiem góry lodowej, jaką jest wiedza na temat rozpoczynania projektów z wykorzystaniem uczenia maszynowego i sieci neuronowych. Nawet jeśli po tej lekturze masz wrażenie, “to nie dla mnie”, niekoniecznie jest tak w rzeczywistości. 

Krzysztof Sapiejewski – Data scientist