# Primi appunti di R per l'utilizzo delle principali tecniche di Machine Learning
# Steps: Question -> input data -> features -> algorithm -> parameters -> evaluation
# Campione numeroso: 60% training, 20% test, 20% validation
# Campione medio: 60%-75% training, 25%-40% test
# Campione ristretto: solo training, poi cross validation su un campione
# Indici di valutazione:
# 1. Sensitivity (sensibilità): True Positive / (True Positive + False Negative)
# 2. Specificity (specificità): True Negative / (False Positive + True Negative)
# 3. Positive Predictive Value: TP / (TP + FP)
# 4. Negative Predictive Value: TN / (FN + TN)
# 5. Accuracy: (TP + TN) / (TP + FP + TN + FN)
# 6. MSE (valori continui): 1/N(Σᵢ Predictionᵢ - Truthᵢ)²
# 7. RMSE (Root Mean Square Error): √MSE
# R: caret package
library(caret)
# 1. Pre-process (cleaning)
# valori mancanti, variabili correlate (valutare analisi componenti principali)
# 2. Creo le partizioni
library(kernlab)
data(spam) # dati per l'esempio (prevedere spam da testo mail)
dati <- createDataPartition(y=spam$type, p=0.75, list=FALSE)
training <- spam[dati,] # dati per fare la previsione
testing <- spam[-dati,] # dati per testare la previsione
# Alternative a createDataPartition():
# createFolds() per creare n partizioni per diversi test
# createResample() per utilizzare ogni dato in più di un insieme
# createTimeSlices() per le serie storiche (tiene conto del tempo, quindi utilizza i dati più recenti per il test)
# 3. Creo il modello, faccio la previsione sul test
# modello di regressione multipla generalizzata sul campione
modello <- train(type~., data=training, method="glm")
modello$finalModel # vedo i coefficienti
# previsioni sul resto del campione
previsioni <- predict(modello, newdata=testing)
# Es. di altri metodi:
# Trees, alberi di decisione (method="rpart")
# Random forests, n alberi di decisione (method="rf")
# 4. Model comparison (confusion matrix)
# vedo in quanti casi ho previsto correttamente e gli indici
confusionMatrix(previsioni, testing$type)
Categories
Bash
(3)
BOT
(2)
C#
(1)
Cluster Analysis
(1)
Data Cleaning
(6)
Data Ingestion
(2)
Data Science Specialization
(10)
Data Visualization
(15)
ggplot2
(1)
Hadoop
(1)
Hashnode
(3)
Machine Learning
(5)
MapReduce
(1)
Maps
(1)
Markdown
(7)
Market Basket Analysis
(1)
MATLAB
(1)
Matplotlib
(3)
Numpy
(2)
Octave
(1)
Pandas
(3)
Python
(17)
R
(22)
Regression
(7)
scikit-learn
(1)
Seaborn
(1)
Shell
(3)
Shiny App
(1)
SSIS
(3)
Statistical Inference
(2)
T-SQL
(8)
Unix
(3)
No comments:
Post a Comment