Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in...

28
Od surowych danych do gotowego modelu - uczenie maszynowe w pigulce Agnieszka Pocha Uniwersytet Jagielloński 28.04.2015

Transcript of Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in...

Page 1: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Od surowych danych do gotowego modelu -uczenie maszynowe w pigułce

Agnieszka Pocha

Uniwersytet Jagielloński

28.04.2015

Page 2: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology
Page 3: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Plan

Wprowadzenie

Obróbka danychAnalizaWstępne przetwarzanie

Uczymy modele!

Jak zacząć?

Podsumowanie

Page 4: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Czym zajmuje się uczenie maszynowe?

D

Page 5: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology
Page 6: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

wczytywanie danych

I tekstoweI csvI arkusze kalkulacyjneI libsvmI zserializowane obiektyI XMLI JSON

Page 7: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology
Page 8: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

zbalansowanie klas (klasyfikacja)

n_cats = y[y==cat].shape [0]n_birds = y[y==bird]. shape [0]cat_plt = plt.bar([cat], n_cats , color=cat_colour)bird_plt = plt.bar([bird], n_birds , color=bird_colour)plt.legend(handles =[cat_plt , bird_plt],

labels =[’cats’, ’birds ’])plt.show()

Page 9: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

metody histogramowe

Page 10: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology
Page 11: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

metody histogramowe

X_b = X[y==bird]X_c = X[y==cat]

random_index = np.random.randint(0, n_features)

plt.figure(figsize =(15, 9))vals_b , bins_b = np.histogram(X_b[:, random_index ])vals_c , bins_c = np.histogram(X_c[:, random_index ])

cats_hist = plt.bar(vals_c , bins_c [:-1], color=cat_colour)

birds_hist = plt.bar(vals_b , bins_b [:-1], color=bird_colour)

Page 12: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

skalowanie, centrowanie, wybielanie

Page 13: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

klątwa wymiarowości

Page 14: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

redukcja wymiarów

I analiza głównych składowych (PCA)

Page 15: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

redukcja wymiarów

I manifold learning

Page 16: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

macierz korelacji

corr_matrix = np.corrcoef(X)fig , ax = plt.subplots(figsize =(10, 10))corr_plot = ax.imshow(corr_matrix)cbar = fig.colorbar(corr_plot , ticks=[-1, -0.5, -0.25,

0, 0.25, 0.5, 1], orientation=’vertical ’)

Page 17: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Uczmy modele!

from sklearn.neighbors import KNeighborsClassifiermodel = KNeighborsClassifier(n_neighbors =6)model.fit(X, y)print model.score(X, y)

dostaliśmy: 0.666015625

Page 18: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

overfitting

Page 19: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

overfitting

from sklearn.cross_validation import StratifiedKFoldskf = StratifiedKFold(y, n_folds =2)for train_index , test_index in skf:

X_tr , X_te = X[train_index], X[test_index]y_tr , y_te = y[train_index], y[test_index]model = KNeighborsClassifier(n_neighbors =6)model.fit(X_tr , y_tr)print model.score(X_te , y_te)

dostaliśmy 0.5791015625 i 0.580078125

Page 20: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

wybór hiperparametrów

I grid search (przeszukiwanie po siatce)I random search (przeszukiwanie losowe)I procesy gaussowskie (modelowanie funkcji θ → error)

Page 21: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

wybór hiperparametrów

Page 22: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

wybór hiperparametrów

skf = StratifiedKFold(y, n_folds =2)results = {}for train_index , test_index in skf:

X_tr , X_te = X[train_index], X[test_index]y_tr , y_te = y[train_index], y[test_index]for n_nghs in [2, 3, 9, 15, 30, 50]:

clf = KNeighborsClassifier(n_neighbors=n_nghs)clf.fit(X_tr , y_tr)score = clf.score(X_te , y_te)if n_neighbours not in results.keys():

results[n_neighbours] = []results[n_nghs ]. append(score)

for key in results.keys():results[key] = np.mean(results[key])

param = sorted(results.keys())score = [results[key] for key in param]plt.bar(param , score)plt.show()

Page 23: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

With all the knowledge combined

Pierwsze podejście

KNN n neighbors=6, surowe dane, 2 foldy, 1 batch, 0.58

3 foldy, 5 batchów, surowe dane

KNN, sąsiadów=3, 0.671

3 foldy, 5 batchów, dane po redukcji wymiarów do 500 (PCA)

SVM, c =1000, jądro rbf, gamma = 0.0001, 0.752

Lasy losowe, liczba drzew = 100, maksymalna liczba cech = 22,0.733

Page 24: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Co warto umieć na wstępie?

I algebra liniowaI rachunek prawdopodobieństwa i statystykaI programowanie

I pythonI numpyI scipyI scikit-learnI pandas

I inne

Page 25: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Jak zacząć?

I kursy on-lineI coursera

I Machine Learning z Andrew NgI edXI Khan Academy (podstawowa matematyka)I Stanford

I książkiI C.M. Bishop Pattern Recognition and Machine LearningI T. Hastie, R. Tibshirani, J. Friedman The Elements ofStatistical Learning. Data Mining, Inference, and Prediction

I K.P. Murphy Machine Learning. A Probabilistic PerspectiveI internet

I http://kaggle.comI http://stats.stackexchange.com/I http://fastml.com

Page 26: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Podsumowanie

I czym zajmuje się uczenie maszynoweI zbalansowanie klas, miaryI metody histogramowe badania danychI skalowanie, centrowanie, wybielanie danychI klątwa wymiarowości, redukcja wymiarówI overfittingI wybór hiperparametrów

Page 27: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Obrazki

I dokumentacja scikit-learnaI draw.io

I https://kaggle2.blob.core.windows.net/competitions/kaggle/3649/media/cifar-10.png

I manifold learning: https://upload.wikimedia.org/wikipedia/commons/f/fd/Lle_hlle_swissroll.png

I klątwa: http://america.pink/images/1/1/2/7/0/9/6/en/1-curse-dimensionality.jpg

Page 28: Agnieszka Pocha - Od surowych danych do gotowego modelu - uczenie maszynowe w pigułce - Women in Technology

Pytania?

Dziękuję za uwagę.