/ / Знайти номер стовпця, який задовольняє умові на основі іншого вектора - r, машинне навчання, класифікація, поріг

Знайдіть номер стовпця, який задовольняє умові на основі іншого вектора - r, машинне навчання, класифікація, поріг

Я намагаюся підготувати класифікатор для класів "Хіт", "Міс" на основі змінних User, Planning Horizon, Materialта деякі інші. Більшість з них є категоріальними змінними, за винятком Planning Horizon (ціле)

У мене незбалансовані дані, тому я намагаюся використовувати порогове значення для вибору остаточного результату моделі (Замість того, щоб просто використовувати імовірність 0,5 за замовчуванням)

Перемінна User має найбільший вплив на результат класу, тому я намагаюся використовувати різні пороги для кожного користувача. Я замислююсь про використання наївного байєса задньої ймовірності P (Клас | Користувач).

Питання в тому, як я можу застосувати ці різні правила для вихідної матриці моделі:

"Матриця порогових значень", різний поріг для кожного користувача:

User    P("Hit"|User)
A           0.80
B           0.40
C           0.61

І результати класифікатора (P (Hit) та P (Miss)) та остання колонка (Final Prediction) - це те, що мені потрібно побудувати.

User    P("Miss")   P("Hit")    Final Prediction
B           0.79    0.21        Miss
B           0.20    0.80        Hit
A           0.15    0.85        Hit
C           0.22    0.78        Hit
A           0.90    0.10        Miss
B           0.80    0.20        Miss

Зверніть увагу, що перший рядок отримує MISS, оскільки P (Miss) нижче P (Hit | User = B)

Відповіді:

0 для відповіді № 1

Я б об'єднав свою порогову матрицю, а потім створив Final Prediction стовпець від руки ось так.

df <- read.table(text="User P("Miss") P("Hit") "Final Prediction"
B 0.79 0.21 Miss
B 0.20 0.80 Hit
A 0.15 0.85 Hit
C 0.22 0.78 Hit
A 0.90 0.10 Miss
B 0.80 0.20 Miss",
header=TRUE, sep=" ", check.names=FALSE)

thm <- read.table(text="User P("Hit"|User)
A 0.80
B 0.40
C 0.61",
header=TRUE, sep=" ", check.names=FALSE)

thmdf <- merge(thm, df)

thmdf["My Final Prediction"] <-
ifelse(thmdf$`P(Hit)` < thmdf$`P(Hit|User)`,
"Miss",
"Hit")

thmdf