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

Post on 12-Feb-2017

211 views 0 download

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

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

Agnieszka Pocha

Uniwersytet Jagielloński

28.04.2015

Plan

Wprowadzenie

Obróbka danychAnalizaWstępne przetwarzanie

Uczymy modele!

Jak zacząć?

Podsumowanie

Czym zajmuje się uczenie maszynowe?

D

wczytywanie danych

I tekstoweI csvI arkusze kalkulacyjneI libsvmI zserializowane obiektyI XMLI JSON

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()

metody histogramowe

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)

skalowanie, centrowanie, wybielanie

klątwa wymiarowości

redukcja wymiarów

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

redukcja wymiarów

I manifold learning

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 ’)

Uczmy modele!

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

dostaliśmy: 0.666015625

overfitting

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

wybór hiperparametrów

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

wybór hiperparametrów

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()

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

Co warto umieć na wstępie?

I algebra liniowaI rachunek prawdopodobieństwa i statystykaI programowanie

I pythonI numpyI scipyI scikit-learnI pandas

I inne

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

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

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

Pytania?

Dziękuję za uwagę.