4 Pluspunkte 0 Minuspunkte

Ich plane die Entwicklung eines KI Programms zur Unterstützung bei der Personalrekrutierung. Dabei sollen die Fertigkeiten der Bewerber in verschiedene Kategorien unterteilt und für jede Kategorie entsprechende Punkte vergeben werden. Jeder Datensatz bekommt dann eine Bewertung von 0 (ungeeignet/uninteressant) oder 1 (geeignet/interessant).

Netzwerk, Virtualisierung, Backup, Windows, Linux | Bewertung
--------------------------------------------------------------
4         3                0       3        4       1
2         4                3       2        4       0
2         3                6       3        2       1
...

Nun möchte ich in der Lage sein, einen neuen Datensatz einzugeben:

Netzwerk, Virtualisierung, Backup, Windows, Linux | Bewertung
--------------------------------------------------------------
3         3                5       2        1       ?

Dabei soll das KI Programm automatisch eine Bewertung anhand meiner bisherigen Bewertungen vornehmen und die Bewerber anzeigen, die das höchste Potenzial zeigen. Wie gehe ich am besten vor, um ein solches System zu entwickeln?

von  

1 Antwort

3 Pluspunkte 0 Minuspunkte

Du kannst ein LSTM (Long short term memory) Netzwerk auf "binary_crossentropy" trainieren. Hier ein Beispiel. Zuerst versiehst du die Trainingsdaten mit Labels.

import numpy as np
from tensorflow.keras.models import Sequential, model_from_json, load_model
from tensorflow.keras.layers import LSTM, Dense
 
original_data = np.array([
    [1, 0, 1, 1, 1, 0, 1, 1],
    [1, 1, 0, 0, 1, 1, 0, 0],
    [0, 1, 0, 1, 1, 1, 0, 1],
    [1, 1, 1, 0, 0, 0, 1, 0],
    [1, 0, 0, 1, 1, 1, 0, 0],
    [1, 0, 1, 1, 1, 0, 0, 1],
    [0, 0, 1, 1, 0, 1, 0, 0],
    [1, 0, 1, 1, 0, 1, 1, 0],
    [1, 0, 1, 1, 1, 1, 1, 0],
    [1, 0, 1, 0, 1, 1, 1, 0]
])
 
original_labels = np.array([1, 0, 1, 0, 1, 1, 0, 0, 1, 0])

data_with_labels = np.column_stack((original_data, original_labels))

data = data_with_labels[:, :-1]
labels = data_with_labels[:, -1] 

Das Modell könnte so aussehen.

model = Sequential()
model.add(LSTM(16, input_shape=(data.shape[1], 1)))
model.add(Dense(1, activation='sigmoid'))

Und trainieren kannst du es mit.

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(data, labels, epochs = 100, batch_size = 1, verbose = True)

von (716 Punkte)