Прогнозная модель для вывода процента «вероятности»? - PullRequest
0 голосов
/ 31 января 2020

Предположим, я хочу предсказать процентную вероятность (1-100%), что студент 3-го курса заканчивает колледж. У меня есть набор данных для обучения со 100 наблюдениями, каждый из которых содержит примеры студентов, классифицированных как «с высокой вероятностью выпускников». У меня есть другой набор данных, состоящий, скажем, из 500 наблюдений (где мы не знаем, закончили ли они какие-либо).

Мой вопрос таков: как бы я go узнал о вероятности для всех 500 учеников, которая описывает, какова вероятность того, что они закончат школу, на основе ряда характеристик (где-то от 1 до 5 функций, таких как баллы за оценки). , живете в кампусе или вне кампуса и т. д. c.) на модели, обученной по первому набору данных? Какие подходы вы бы предложили?

1 Ответ

0 голосов
/ 31 января 2020

Я бы порекомендовал вам использовать OneClassSVM , что является обнаружением выброса без присмотра. Поскольку ваши данные об обучении содержат только образцы из одного класса, то есть с высокой вероятностью окончания обучения, регрессия Logisti c или нейронная сеть могут здесь не работать. Лучше учитывать, что любые данные, которые у вас есть, не являются выбросами, а другая категория, которая вряд ли будет выпускаться как выбросы. После того, как вы адаптируете модель OneClassSVM, вы можете использовать функцию solution_function , чтобы получить расстояние со знаком до разделяющей гиперплоскости, которое будет положительным для внутреннего и отрицательным для внешнего. Кроме того, вы можете использовать сигмовидную функцию, чтобы получить вероятности. Я показал пример ниже:

from sklearn.svm import OneClassSVM
X = [[0], [0.44], [0.45], [0.46], [1]]
clf = OneClassSVM(gamma='auto').fit(X)

def sigmoid(x):
    return 1/(1+np.exp(-x))

prob = clf.decision_function([[0.455]]) # Not an outlier 
sigmoid(prob)
#array([0.50027839])

prob = clf.decision_function([[5]])     # An outlier 
sigmoid(prob)
#array([0.11356841])

Надеюсь, это поможет!

...