Analisi della rete organizzativa basata sull'intelligenza artificiale |  di Barna Lipics |  Maggio 2024

 | Intelligenza-Artificiale

Fondere l'analisi di rete e la psicologia organizzativa può essere un entusiasmante viaggio interdisciplinare. Ad esempio Casciaro et al. (2015) sostengono l'integrazione della rete e delle prospettive psicologiche nella borsa di studio organizzativa, evidenziando che tali approcci interdisciplinari possono arricchire significativamente la nostra comprensione dei comportamenti e delle strutture organizzative. Sottolineano che la combinazione di queste prospettive rivela dinamiche complesse all’interno delle organizzazioni che altrimenti rimarrebbero oscurate, soprattutto in aree come la leadership, il turnover e le prestazioni del team. Questa fusione non solo fa avanzare modelli teorici, ma suggerisce anche implicazioni pratiche per la gestione organizzativa, sollecitando un’ulteriore esplorazione delle aree e delle metodologie sottorappresentate (Casciaro et al., 2015).

Brass (2012) sottolinea l’importanza di riconoscere come gli attributi personali e le strutture di rete influiscono collettivamente sui risultati organizzativi, suggerendo che una duplice attenzione alle connessioni strutturali e alle caratteristiche individuali è cruciale per una visione più profonda delle dinamiche organizzative.

Ma perché è interessante?

Perché secondo Briganti et al. (2018), che ha esaminato uno specifico argomento psicologico, l’empatia, ha concluso che le persone centrali all’interno della rete sono cruciali nel prevedere le dinamiche complessive della rete, evidenziando il loro significato nella comprensione delle interazioni (empatiche).

Quindi, in breve, la letteratura ha già dimostrato che esaminare le persone chiave di una rete può aiutarci a prevedere i fattori dell’intera rete.

Come costruire una rete?

Bene, potresti scegliere un modo tradizionale per esplorare le interconnessioni di un'organizzazione, ad esempio questionari, focus group, interviste, ecc. I focus group e le interviste sono difficili da scalare. La validità dei dati della ricerca nelle scienze sociali è stata oggetto di una profonda e seria preoccupazione negli ultimi decenni (Nederhof e Zwier, 1983) – e questo è stato espresso nel 1983! Le indagini tradizionali spesso soffrono di diversi tipi di pregiudizi. Queste potrebbero essere le difficoltà con i sondaggi psicologici:

  • bias di desiderabilità sociale (Nederhof, 1985) la tendenza degli intervistati a rispondere alle domande in un modo che sarà visto favorevolmente dagli altri
  • bias di recency (Murdock, 1962) quando le informazioni più recenti vengono ricordate meglio o hanno maggiore influenza sulle percezioni rispetto ai dati precedenti
  • effetto alone (Thorndike, 1920) quando un'impressione generale di una persona influenza il modo in cui ci sentiamo e pensiamo al suo carattere. In sostanza, la tua impressione generale di una persona (“È simpatico!”) influenza le tue valutazioni dei tratti specifici di quella persona (“È anche intelligente!”).
  • pregiudizio egoistico (Zuckerman, 1979) attribuendo eventi positivi al proprio carattere ma attribuendo eventi negativi a fattori esterni, preservando così l'autostima.

Si potrebbe lavorare con valutazioni cieche (Rosenthal e Fode, 1963), o passare a metodi qualitativi che sono ottime opzioni fornendo più profondità e dettagli su un argomento (Braun e Clarke, 2006), catturando meglio le complessità (Denzin e Lincoln, 2011). . I metodi qualitativi soffrono anche di limitazioni come la difficoltà di unificare e organizzare i risultati, la distorsione del ricercatore (Malterud, 2001), la distorsione della conferma dei ricercatori (Nickerson, 1998), ma nell'era dei LLM, con un'adeguata guida e automazione, queste limitazioni possono essere superato.

Presenterò un semplice metodo basato su LLM per estrarre le relazioni di rete dal linguaggio naturale. Poiché lo scopo di questo articolo è la presentazione del metodo, non un risultato psicologico, utilizzerò dati sintetici: con GPT4o genererò 5 persone virtuali con professioni e personalità. Farò loro tre domande con il minor numero possibile di argomenti fissi:

  • Racconta la storia della tua giornata lavorativa media. La tua storia deve essere molto dettagliata, compresi compiti, persone e tutto ciò che ti viene in mente. Non esiste una risposta buona o cattiva.
  • Racconta una storia in cui ti sei sentito davvero male al lavoro. Non esiste una risposta buona o cattiva, ma per favore rendila il più dettagliata possibile.
  • Racconta una storia in cui ti sei sentito benissimo e hai avuto successo sul lavoro. Non esiste una risposta buona o cattiva, ma per favore rendila il più dettagliata possibile.

Che il gioco abbia inizio

Abbiamo bisogno di alcuni dettagli sulla nostra squadra immaginaria per generare dati testuali realistici al nostro input.

Ho passato questo messaggio al LLM:

Generate 5 virtual personas to me. They work on the same project. They should have
- first name
- age
- profession/position at the company
- a short description of their personalities.
Their personalities should have negative sides as well.
At least one pair should be in a manager-subordinate relationship.

Ha generato le seguenti persone:

Name: Emily
Age: 29
Profession/Position: Project Manager
Personality Description: Emily is highly organized and decisive, often seen as the backbone of the team.
She is empathetic and approachable but can sometimes be overly controlling and resistant to deviating from her planned schedules.
Emily's insistence on efficiency can occasionally overlook the need for creative freedom.

Name: Josh
Age: 34
Profession/Position: Lead Software Engineer
Personality Description: Josh is tech-savvy and a problem solver with a passion for new technologies.
He is introverted and sometimes struggles with communication, which can lead to misunderstandings with teammates.
His calm demeanor is an asset, although it sometimes appears as disinterest in team discussions.

Name: Leah
Age: 26
Profession/Position: Junior Software Engineer
Personality Description: Leah is creative and energetic, full of ideas and great at networking.
However, her enthusiasm can sometimes manifest as impatience with slower-paced tasks or details.
She can be overly ambitious, pushing the team towards unfeasible goals.

Name: Carlos
Age: 42
Profession/Position: Financial Analyst
Personality Description: Carlos is meticulous and deeply knowledgeable about finances
but tends to be pessimistic and overly critical, which can dampen team morale.
His cautious nature sometimes slows down decision-making processes, frustrating more dynamic team members.

Name: Fiona
Age: 38
Profession/Position: UX/UI Designer
Personality Description: Fiona is creative and a great listener, making her designs user-friendly.
However, she can be overly sensitive to criticism and sometimes takes feedback personally.
She tends to avoid conflict, which can lead to unresolved issues in the team dynamics.

Ora ho chiesto al LLM di agire come queste persone e ho posto le tre domande indicate. Dato che sto parlando con una modella, con il mio suggerimento mi assicuro di includere alcune informazioni sulle relazioni interpersonali. Per risparmiare spazio e tempo di lettura, esamineremo solo una persona. Richiesta di esempio:

You need to act now like Emily. 
You are taking part in an online HR assessment.
Here are some data about your profession, personality, etc:

Name: Emily
Age: 29
Profession/Position: Project Manager
Personality Description: Emily is highly organized and decisive, often seen as the backbone of the team. She is empathetic and approachable but can sometimes be overly controlling and resistant to deviating from her planned schedules. Emily's insistence on efficiency can occasionally overlook the need for creative freedom.

In this assessment, you, Emily, are asked these three questions:
- Tell the story of your average workday. Your story needs to be very detailed, including tasks, people - and anything that comes to your mind. There is no good or bad answer.
- Tell a story where you felt really bad at work. There is no good or bad answer - but please make it as detailed as you can.
- Tell a story where you felt great and successful at work. There is no good or bad answer - but please make it as detailed as you can.

Your team consists of the following people, if you have any relationship with them, please include in your answers:
<Description of other teammates>

I risultati per Emily:

1. Average Workday:
My typical day starts with a quick review of my to-do list, which I prepare the night before.
I arrive at the office by 8 AM, settle in, and start with a 30-minute session to review the progress on ongoing projects against their timelines.
At 8:30 AM, I hold a brief stand-up meeting with the team, which includes Josh, Leah, Carlos, and Fiona, to catch up on their progress and address any immediate concerns.

After the stand-up, I typically meet with Carlos to discuss budget updates or financial issues.
His insights are crucial, though I occasionally need to guide the conversation to keep it from veering into
overly pessimistic territory, which helps us stay focused on solutions rather than problems.

Mid-morning is usually reserved for one-on-one sessions with team members needing guidance.
For instance, I often spend time with Fiona reviewing design timelines.
She appreciates clear, empathetic feedback which I strive to provide, though I must balance this with the need to maintain our project schedule.

Lunch is a quick affair, often at my desk, as I catch up on emails and plan for the afternoon.
Post-lunch, I review Leah's latest marketing initiatives or software developments. Leah's energy is infectious,
though her ambition sometimes requires tempering to align with our practical deliverables.

My afternoons often involve strategic planning sessions, where I work with Josh
to align our technology needs with business goals.
His technical expertise is invaluable, though I sometimes mediate
to ensure his ideas are clearly communicated to the rest of the team.

I end my day by updating our project management tools, responding to any final emails,
and preparing the next day’s priority list. Before leaving,
I always walk around to say a quick goodbye to the team, ensuring I leave on a personal note.

2. Negative Experience:
A particularly challenging day occurred when we were nearing a major project deadline.
Tensions were high, and despite my efforts to keep the team on track, a critical integration flaw was discovered.
The error was in a section Josh had worked on; his usual calm demeanor made it difficult to gauge his concern,
which initially seemed like disinterest. This misunderstanding escalated under pressure.

I felt overwhelmed and responsible, fearing the mistake would reflect poorly on my ability to manage.
It was a stark reminder that my need for control and perfection could blind me to the team's stress levels.
That day ended with us missing a deadline, a first for me, which deeply upset me.

3. Positive Experience:
One of my proudest moments was leading the team during the launch of a new product that was pivotal to our company’s expansion.
The project had complex components, requiring tight coordination between all departments.
Despite the challenges, including balancing Carlos' cautious financial strategies
with Leah's ambitious marketing plans, we executed a flawless launch.

The success was made sweeter by the positive feedback from upper management and the client’s satisfaction.
It reinforced the value of my organizational skills and my ability to gently
but effectively guide the team through high-pressure situations.
That day, I truly felt accomplished, seeing the tangible results of our hard work and my leadership.

Il resto delle istruzioni e dei risultati può essere trovato qui: llm-network-extraction/ at main · sugartrauma/llm-network-extraction (github.com)

Estrazione delle interazioni

Ora che abbiamo l'input per la nostra analisi di rete, dobbiamo estrarre le relazioni dalle interazioni menzionate.

You are a social network extraction tool.
You are given an input marked in <input> tag.

Extract the relationships between people mentioned in the <input> text and
structure them into a CSV format with columns:
- source
- target
- edge_type
- interaction_type

The relationships can be of two types: knowledge and personal.
The interaction types for knowledge can be "gives knowledge" or "receives knowledge,"
For personal, the interaction_type can be "positive interaction" or "negative interaction."

Example input:
<input>
Josh helps Leah with coding challenges, sharing his expertise regularly.
Emily and Fiona often collaborate creatively and have a positive working relationship.
</input>

Example output:
source,target,edge_type,interaction_type
Josh,Leah,knowledge,gives knowledge
Emily,Fiona,personal,positive interaction

The relationship must be represented only once.
You must not represent an edge in the opposite direction.
Bad example:
source,target,edge_type,interaction_type
Josh,Leah,knowledge,gives knowledge
Leah,Josh,knowledge,receives knowledge

Good example:
source,target,edge_type,interaction_type
Josh,Leah,knowledge,gives knowledge

<input>
Input comes here
</input>

Il LLM ha duplicato alcune relazioni come:

Josh, Leah, conoscenza, dà conoscenza
Leah, Josh, conoscenza, riceve conoscenza

Li ho deduplicati e ho avviato l'analisi della rete vera e propria.

Anche se parlo fluentemente Python, volevo mostrare le capacità di GPT4o anche ai non programmatori. Quindi ho usato LLM per generare i miei risultati con questo prompt:

Please build a network in Python from this data. 
There should be two types of edges: "knowledge", "personal".
You can replace the textual interaction_types to numbers, like -1, 1.
I need this graph visualized.
I want to see the different edge_types with different type of lines and the weights with different colors.

Ho riprovato molte volte, GPT4o non è riuscito a risolvere il compito, quindi con i buoni vecchi metodi, ho generato una visualizzazione grafica scrivendo il codice Python:

import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

cleaned_data = pd.read_csv(<file_destination>)
# For knowledge, we don't punish with negative values if there is no sharing
# For personal relationships, a negative interaction is valued -1
for idx, row in cleaned_data.iterrows():
if row("edge_type") == "knowledge":
# If the source received knowledge, we want to add credit to the giver, so we swap this
if row("interaction_type") == "receives knowledge":
swapped_source = row("target")
swapped_target = row("source")
cleaned_data.at(idx, "target") = swapped_target
cleaned_data.at(idx, "source") = swapped_source
cleaned_data.at(idx, "interaction_type") = 1
elif row("edge_type") == "personal":
cleaned_data.at(idx, "interaction_type") = -1 if row("interaction_type") == "negative interaction" else 1

# Aggregate weights with a sum
aggregated_weights = cleaned_data.groupby(("source", "target", "edge_type")).sum().reset_index()

# Filter the data by edge_type
knowledge_edges = aggregated_weights(aggregated_weights('edge_type') == 'knowledge')
knowledge_edges("interaction_type") = knowledge_edges("interaction_type").apply(lambda x: x**2)
personal_edges = aggregated_weights(aggregated_weights('edge_type') == 'personal')
personal_edges("interaction_type") = personal_edges("interaction_type").apply(lambda x: x**2 if x >=0 else -(x**2))

# Normalize the weights for knowledge interactions since it has only >= 0 values, so the viz wouldn't be great
if not knowledge_edges.empty:
min_weight = knowledge_edges('interaction_type').min()
max_weight = knowledge_edges('interaction_type').max()
knowledge_edges('interaction_type') = knowledge_edges('interaction_type').apply(
lambda x: 2 * ((x - min_weight) / (max_weight - min_weight)) - 1 if max_weight != min_weight else 0)

# Create separate graphs for knowledge and personal interactions
G_knowledge = nx.DiGraph()
G_personal = nx.DiGraph()

# Add edges to the knowledge graph
for _, row in knowledge_edges.iterrows():
G_knowledge.add_edge(row('source'), row('target'), weight=row('interaction_type'))

# Add edges to the personal graph
for _, row in personal_edges.iterrows():
G_personal.add_edge(row('source'), row('target'), weight=row('interaction_type'))

custom_cmap = LinearSegmentedColormap.from_list('red_green', ('red', 'yellow', 'green'))

# Find the knowledge center
knowledge_center = knowledge_edges.groupby("source").sum().idxmax().values(0)
least_knowledge_node = knowledge_edges.groupby("source").sum().idxmin().values(0)

# Draw the knowledge interaction graph with arrows
plt.figure(figsize=(12, 8))
pos = nx.spring_layout(G_knowledge, k=0.5, iterations=50)
nx.draw_networkx_nodes(G_knowledge, pos, node_size=100, node_color='lightblue')
knowledge_weights = (d('weight') for u, v, d in G_knowledge.edges(data=True))
nx.draw_networkx_edges(G_knowledge, pos, edgelist=G_knowledge.edges(), edge_color=knowledge_weights, edge_cmap=custom_cmap, edge_vmin=-1, edge_vmax=1, width=2, arrows=True)
nx.draw_networkx_labels(G_knowledge, pos, font_size=14)
plt.title('Knowledge Interactions')
plt.annotate(f'Knowledge Center: {knowledge_center}', xy=(1.05, 0.95), xycoords='axes fraction', fontsize=14, color='darkred')
plt.annotate(f'Least knowledge sharing: {least_knowledge_node}', xy=(1.0, 0.85), xycoords='axes fraction', fontsize=14, color='darkred')
plt.axis('off')
plt.show()

# Find the personal center
personal_center = personal_edges.groupby("source").sum().idxmax().values(0)
least_personal_center = personal_edges.groupby("source").sum().idxmin().values(0)

# Draw the personal interaction graph
plt.figure(figsize=(12, 8))
pos = nx.spring_layout(G_personal, k=0.5, iterations=50)
nx.draw_networkx_nodes(G_personal, pos, node_size=100, node_color='lightblue')
weights = (d('weight') for u, v, d in G_personal.edges(data=True))
nx.draw_networkx_edges(G_personal, pos, edgelist=G_personal.edges(), edge_color=weights, edge_cmap=custom_cmap, edge_vmin=-1, edge_vmax=4, width=2, arrows=True)
nx.draw_networkx_labels(G_personal, pos, font_size=14)
plt.title('Personal Interactions')
plt.annotate(f'Personal Center: {personal_center}', xy=(1.05, 0.95), xycoords='axes fraction', fontsize=14, color='darkred')
plt.annotate(f'Least positive person: {least_personal_center}', xy=(1.05, 0.85), xycoords='axes fraction', fontsize=14, color='darkred')
plt.axis('off')
plt.show()

I risultati per la rete di condivisione della conoscenza:

Grafico generato tramite matplotlib dai dati pubblici dell'autore

Possiamo scoprire che, ad eccezione di Carlos, tutti sono abbastanza vicini nell'ecosistema di condivisione della conoscenza. Emily è il nodo con il peso più in uscita nel nostro grafico.

Cosa possiamo fare con quei dati?
1. Dovremmo assolutamente mantenere Emily in azienda: se dobbiamo scegliere una persona che dia il massimo impegno dai benefit e riceva un impegno a lungo termine, quella dovrebbe essere Emily.
2. Carlos è un analista finanziario, il che è abbastanza lontano dal lavoro vero e proprio del team. Potrebbe non essere un problema il fatto che non condivida così tante informazioni. La parte cruciale potrebbe essere vista nell'altra parte del grafico, che non abbiamo: quanta conoscenza condivide nel team finanziario. Quindi fai attenzione a interpretare i risultati che potrebbero sembrare negativi a prima vista.

I risultati per la rete della positività/negatività delle interazioni:

Grafico generato tramite matplotlib dai dati pubblici dell'autore

Si può vedere che Leah, il nostro ingegnere software junior, è la persona più positiva in base al numero di interazioni positive.
1. Come azione, potremmo avviare un programma di tutoraggio per lei, per poter rendere virale il suo atteggiamento positivo e facilitarla ad acquisire esperienza professionale per aumentare la sua affidabilità in tutte le aree di lavoro.
2. Emily è la persona con le interazioni meno positive e più negative. In qualità di project manager, non c'è da meravigliarsi che i PM spesso debbano prendere decisioni difficili. D'altra parte, ciò potrebbe richiedere un doppio controllo per vedere se la negatività delle sue interazioni deriva dai suoi doveri di PM o dalla sua reale personalità.
Ancora una volta, non dare per scontato il peggio a prima vista!

Riepilogo

In questo articolo ho condiviso un nuovo metodo per estrarre e analizzare i social network organizzativi con LLM e analisi dei grafici.
Non dimenticare, questi sono dati sintetici, generati da GPT4o: ho mostrato la tecnologia piuttosto che i risultati reali relativi alla psicologia. Questa parte potrebbe essere il prossimo obiettivo della mia ricerca se avrò accesso a dati reali.
Si spera che questo piccolo progetto possa fungere da facilitatore per una ricerca più approfondita in futuro.

Spero che l’articolo ti sia piaciuto, sentiti libero di commentare.

Fonti:

Ottone, DJ (2012). Una prospettiva dei social network sulla psicologia organizzativa. Manuali di Oxford in linea. doi:10.1093/oxfordhb/9780199928309.013.0021

Braun, V. e Clarke, V. (2006). “Utilizzo dell'analisi tematica in psicologia.” Ricerca qualitativa in psicologia3(2), 77–101. Questo articolo discute come l’analisi tematica nella ricerca qualitativa può scoprire dati ricchi e dettagliati.

Briganti, G., Kempenaers, C., Braun, S., Fried, EI, & Linkowski, P. (2018). Analisi di rete degli elementi di empatia dall'indice di reattività interpersonale nei giovani adulti del 1973. Ricerca in psichiatria, 265, 87–92. DOI: 10.1016/j.psychres.2018.03.082

Casciaro, T., Barsade, SG, Edmondson, AC, Gibson, CB, Krackhardt, D., & Labianca, G. (2015). L'integrazione delle prospettive psicologiche e di rete nella borsa di studio organizzativa. Scienza dell'organizzazione, 26(4), 1162–1176. DOI: 10.1287/orsc.2015.0988

Denzin, NK e Lincoln, YS (a cura di). (2011). “Il saggio manuale della ricerca qualitativa”. Saggio. Questo manuale discute i punti di forza della ricerca qualitativa nel catturare le complessità del comportamento umano e dei fenomeni sociali.

Malterud, K. (2001). “Ricerca qualitativa: standard, sfide e linee guida.” Lancetta358(9280), 483–488.

Murdock, BB (1962). “L'effetto della posizione seriale del richiamo libero.” Giornale di psicologia sperimentale64(5), 482–488.

Nederhof, AJ e Zwier, AG (1983). “La “crisi” nella psicologia sociale, un approccio empirico”, European Journal of Social Psychology, 13: 255–280.

Nederhof, AJ (1985). Metodi per affrontare i pregiudizi sulla desiderabilità sociale: una revisione. Giornale europeo di psicologia sociale, 15(3), 263–280. doi:10.1002/ejsp.2420150303

Nickerson, RS (1998). “Bias di conferma: un fenomeno onnipresente in molte forme”. Rassegna di psicologia generale2(2), 175–220.

Rosenthal, R., & Fode, KL (1963). “L'effetto del bias dello sperimentatore sulle prestazioni del ratto albino.” Scienza comportamentale8(3), 183–189.

Thorndike, EL (1920). “Un errore costante nelle valutazioni psicologiche.” Giornale di psicologia applicata4(1), 25–29.

Zuckerman, M. (1979). “L'attribuzione del successo e del fallimento rivisitata, ovvero: il pregiudizio motivazionale è vivo e vegeto nella teoria dell'attribuzione.” Giornale della personalità47(2), 245–287.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *