Машинно обучение: Наблюдавано обучение
Машинно обучение 101: Прогнозиране на употребата на наркотици с помощта на логистична регресия в R
Основи, функции за връзка и графики
Резюме
- Обобщени линейни модели (GLM)
- Три вида функция за връзка: Logit, Probit и допълнителен log-log (cloglog)
- Изграждане на логистична регресия за прогнозиране на употребата на наркотици и сравняване на тези три типа GLM
В курсовете по Machine Learning 101 професорите по статистика въвеждат GLM веднага след линейната регресия като следващото стъпало към това да станете специалисти по данни. GLM идва с няколко форми, като най-известните са logit, probit и cloglog.
Тези GLM са много подходящи за класификационни въпроси: да бъдеш или да не бъдеш, да гласуваш или да не гласуваш и да кликнеш или да не кликнеш.
За пълното описание на проекта и пълния R код, моля, проверете моя Github.
Основни положения
Обикновено GLM за двоични данни може да се изрази в следната форма:
където g представлява линейна връзка на предикторите (вдясно) на вероятността p, а g е функция, която преобразува p ∈[0,1] в ℝ.
Има три начина за свързване на компонентите отляво и отдясно.
Логит:
С думи лог формата на p.
Пробит:
С думи, обратната на кумулативната функция на плътност на нормалното разпределение.
Cloglog:
С думи, лог формата на отрицателната стойност на лог формата на вероятността да не се случи. объркани? Поне аз съм. Функцията за връзка за този е проста.
Добре, нека продължим напред и да изградим GLM модели, за да предвидим кой е по-уязвим към употребата на наркотици и да се научим да четем сюжети.
- Зареждане, почистване и разделяне на набора от данни
library(readr) drug_use <- read_csv(‘drug.csv’,col_names=c(‘ID’,’Age’,’Gender’,’Education’,’Country’,’Ethnicity’,’Nscore’,’Escore’,’Oscore’,’Ascore’,’Cscore’,’Impulsive’,’SS’,’Alcohol’,’Amphet’,’Amyl’,’Benzos’,’Caff’,’Cannabis’,’Choc’,’Coke’,’Crack’,’Ecstasy’,’Heroin’,’Ketamine’,’Legalh’,’LSD’,’Meth’,’Mushrooms’,’Nicotine’,’Semer’,’VSA’)) library(dplyr) drug_use <- drug_use %>% mutate_at(as.ordered, .vars=vars(Alcohol:VSA)) drug_use <- drug_use %>% mutate(Gender = factor(Gender, labels=c(“Male”, “Female”))) %>% mutate(Ethnicity = factor(Ethnicity, labels=c(“Black”, “Asian”, “White”, “Mixed:White/Black”, “Other”, “Mixed:White/Asian”, “Mixed:Black/Asian”))) %>% mutate(Country = factor(Country, labels=c(“Australia”, “Canada”, “New Zealand”, “Other”, “Ireland”, “UK”,”USA”))) #create a new factor variable called recent_cannabis_use drug_use = drug_use %>% mutate(recent_cannabis_use=as.factor(ifelse(Cannabis>=”CL3",”Yes”,”No”))) #create a new tibble that includes a subset of the original variable #data split into training and test sets drug_use_subset <- drug_use %>% select(Age:SS, recent_cannabis_use) set.seed(1) traint.indices = sample(1:nrow(drug_use_subset),1500) drug_use_train = drug_use_subset[traint.indices,] drug_use_test = drug_use_subset[-traint.indices,] dim(drug_use_train) dim(drug_use_test) [1] 1500 13 [1] 385 13
И така, комплектът от влакове има размери 1500*13, а тестовият комплект има размери 385*13.
2. Поставете логистична регресия
#use logit as the link function glm_fit = glm(recent_cannabis_use ~ .,data=drug_use_train,family=binomial(link= “logit”)) summary(glm_fit) Call: glm(formula = recent_cannabis_use ~ ., family = binomial(link = "logit"), data = drug_use_train) Deviance Residuals: Min 1Q Median 3Q Max -3.0024 -0.5996 0.1512 0.5410 2.7525 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.33629 0.64895 2.059 0.039480 * Age -0.77441 0.09123 -8.489 < 2e-16 *** GenderFemale -0.65308 0.15756 -4.145 3.40e-05 *** Education -0.41192 0.08006 -5.145 2.67e-07 *** CountryCanada -0.67373 1.23497 -0.546 0.585377 CountryNew Zealand -1.24256 0.31946 -3.890 0.000100 *** CountryOther 0.11062 0.49754 0.222 0.824056 CountryIreland -0.50841 0.69084 -0.736 0.461773 CountryUK -0.88941 0.39042 -2.278 0.022720 * CountryUSA -1.97561 0.20101 -9.828 < 2e-16 *** EthnicityAsian -1.19642 0.96794 -1.236 0.216443 EthnicityWhite 0.65189 0.63569 1.025 0.305130 EthnicityMixed:White/Black 0.10814 1.07403 0.101 0.919799 EthnicityOther 0.66571 0.79791 0.834 0.404105 EthnicityMixed:White/Asian 0.48986 0.96724 0.506 0.612535 EthnicityMixed:Black/Asian13.07740 466.45641 0.028 0.977634 Nscore -0.08318 0.09163 -0.908 0.363956 Escore -0.11130 0.09621 -1.157 0.247349 Oscore 0.64932 0.09259 7.013 2.33e-12 *** Ascore 0.09697 0.08235 1.178 0.238990 Cscore -0.30243 0.09179 -3.295 0.000984 *** Impulsive -0.14213 0.10381 -1.369 0.170958 SS 0.70960 0.11793 6.017 1.78e-09 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Интерпретациите на са ясни и значими променливи
включват: възраст, жена, образование, променлива за страната (ZJ, UK, USA), oscore, резултат и SS.
3. Пробит и запушване
#probit link function glm_fit_probit = glm(recent_cannabis_use ~ .,data=drug_use_train,family = binomial(link = “probit”)) prob_training_probit = predict(glm_fit_probit, type=”response”) #c-log-log” link glm_fit_clog = glm(recent_cannabis_use ~ .,data=drug_use_train,family = binomial(link = “cloglog”)) prob_training_clog = predict(glm_fit_clog, type=”response”)
4. Сравнете тези три сюжета
# compare logit and probit plot(prob_training_logit,prob_training_probit,xlab = “Fitted Values of Logit Model”,ylab= “Fitted Values of Probit Model”, main= “Plot 1: Fitted Values for Logit and Probit Regressions”, pch=19, cex=0.2,abline(a=0,b=1,col=”red”))
Както е добре известно, probit и logit прогнозират почти същите стойности, тъй като са разположени близо до линията от 45 градуса. Вероятно единствената разлика е в средния диапазон между 0,5 до 0,8, където пробит моделът прогнозира стойност малко под abline.
# compare logit and cloglog plot(prob_training_logit,prob_training_clog,xlab = “Fitted Values of Logit Model”,ylab= “Fitted Values of Cloglog Model”, main= “Plot 2: Fitted Values for Logit and Cloglog Regressions”, pch=19, cex=0.2,abline(a=0,b=1,col=”red”))
Това е интересен сюжет. C-loglog генерира прогнози с по-висока стойност в ранния етап, последвани от по-ниско разпръснати прогнози от logit в средния диапазон.
В машинното обучение логистичната регресия служи като 101 техника, която специалистите по данни могат да прилагат.
Приятно ви е да четете това?
Също така проверете другите ми публикации за изкуствен интелект и машинно обучение.