Skip to content

marcelpetrick/machineLearningWithPython

Repository files navigation

machineLearningWithPython

notes and snippets from the VHS-course for machine learning with Python

[todo: add the notes taken with pen&paper] [todo: translate all the german words/phrases]

day1: ML-course (20190627)

pca: https://en.wikipedia.org/wiki/Kernel_principal_component_analysis

http://www.iangoodfellow.com/

unsupervised learning: k-means (clusterierung) and PCA - almost everything you will need

nachteil/problem: man muss vorher die gruppenanzahl angeben

EM: expectation maximisation

  • estimation of the amount of needed clusters is a np-complete issue

unsupervised learning

supervised learning

to read for myself:

reinforcement learning

  • third kind of ML (not part of this course)

exmaple in Python:

good hints for reading (in this order): - not that they really have to be bought from the big A

good coursera course: Andrew Ng: https://de.coursera.org/learn/machine-learning - also the founder of coursera

pip install --upgrade -user scipy numpy scklearn

IRIS data set: classify flowers

(lol: https://images.app.goo.gl/SdDZCh7gEP3JHLUw7 )

  • jupyter notebooks

pip install --user jupyter https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook - how to create and run the very first notebook (install this and create a notebook ..)

IDEs: Keras / TensorFlow / PyTorch

--> ? maybe this ? https://medium.com/syncedreview/andrew-ng-says-enough-papers-lets-build-ai-now-6b52d24bcd58

https://medium.com/syncedreview/andrew-ng-says-enough-papers-lets-build-ai-now-6b52d24bcd58 introduction for the reinforcement learning: https://hci.iwr.uni-heidelberg.de/system/files/private/downloads/541645681/dammann_reinfocement-learning-report.pdf

training set/test set features/feature engineering overfitting bias

mail for the guy: Pouyan.Mohajerani@gmail.com --> send something later

MACHINE LEARNING YEARNING - 118 pages Andrew Ng - very easy to udnerstand; but it looks like thereis no printed version: https://towardsdatascience.com/6-concepts-of-andrew-ngs-book-machine-learning-yearning-abaf510579d4 Andrew NG - Machine learning yearning: bookform (just pdf): https://github.com/ajaymache/machine-learning-yearning or as chapters on github https://github.com/ajaymache/machine-learning-yearning

----------------------------------------------------------

Second day of ML-course (20190704)

  • account for nvidio for cudnn (cudo) - 2 GiByte thingy
  • folder namend "ML" was prepared by the guy

what is overfitting?

resultat passt nur rein zufällig (?); testdaten passen, reale nicht

ist underfitting oposite to overfitting

test- und realdaten passen nicht

wir: hautpsächlich supervised learning (curved fitting)

  • versuch mit ax^2+bx+c auf 4 datenpunkte: immer underfitting

  • warum gerade 4er gerade bei sinx(x) overfitting: trifft genau die testdaten

TODO: check overfitting TODO: check underfitting

  • ML braucht Expertenwissen: mit diesem expert knowledge erzeugt man feautres -> feature engineering
  • feature engineering war hauptmethode bis man CNN (convolutional neuro networks) hatte
  • wie verwendet man aber expert knowledege (siehe Iris-Datenbank)?

Beispiel: Python notebook: IRIS.ipynb

-- einfach ein neues erzeugen; von cmd aus; mit perfektem PATH $ jupyter notebook (ENTER) dann: http://localhost:8888/tree dann das notebook laden (Jupyter: app dev in browser :))

do: menue: Kernel >> Restart&clear output (hints lead to https://www.kaggle.com/skalskip/iris-data-visualization-and-knn-classification )

  • dies ist eine volle KI-app

  • Anfang: load some libs

  • mit CTRL+ENTER Zelle evaluieren

  • was ist numpy? Lineare Algebra

  • lol: https://stackoverflow.com/questions/13187778/convert-pandas-dataframe-to-numpy-array

  • krass: dataset.describe()

  • über kaggle und competitions wird am letzten abend gesprochen: like online gambling

  • he says: wie glücksspiel; macht extrem süchtig

  • sklearn: new player; very important -- is sci kit learn

  • PCA

  • K means

  • k-NN --> all three are: shallow (seicht) learning; viele davon in SciKitLearn enthalten

  • Deep Learning

  • LabelEncoder: transofrmiert Versicolor, Virginica to 0, 1, 2 ..

  • die ausgabe der letzten zeile wird in den zellen des jupyter-nb gezeigt

  • was habenn wir? 150 daten: 4 features: und ein label

  • wir wollen fuer diesen datensatz fuer ein neues test-datum dann wissen, welche blumenart dies ist

  • warum als 0,1,2,3 gelabelt und nicht 0,1,2,7? plotten einfacher

  • aber falls man ein curve-fitting will, dann wäre es besser wenn sie gleichabständig sind

  • darunter steckt aber cost-function: wie schlecht ist ein fehler?

  • found myself: 5 cent per hour? https://aws.amazon.com/marketplace/pp/B06Y6BNHD3 krasser shit: https://aws.amazon.com/marketplace/pp/B07MFRDXTB?qid=1562259741087&sr=0-1&ref_=srh_res_product_title ... von fast kostenlos bis 3$/h umgebungen

  • wie macht man auswahl der testdaten? random 80% von Klasse 0, 50% von Klasse 0, ... und fügt sie dann zusammen

  • 10 krekbspatientetn und 1000 ohne patienten: 8/800 training, 2/200 für test

  • wird sich besser an gesunde anpassen --> class imbalance (todo check)

stratification: https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html --> schichten bilden

subplot: tabellnähnlicher plot

  • die drei farben sind die verschiedenen Iris-klassen

  • second feature plotted against first feature

  • plot: 1 versus 4; fast alle roten sind rechts, alle grünen sind mitte, blau sind rechts

  • oder plot 4 versus 3: auch ein paar fehler, aber viel weniger

  • ein learner sucht sich solche "gut trennbaren" geegenden im gesamten space so dass die geringste anzahl an fehlern auftauchtkurs@B112PC12 MINGW64 ~/Desktop/mpe/ml_course (master)

  • Voraussage angeben: y_pred = classifier.predict(X_test[:,[0,1,3]])

  • 3NN angewendet

  • classifier prediction: fast 97% genauigkeit accurarcy über test-set

  • falls man die nachbarn auf 50 nachbarn packt, kommt man auf accuracy of 80% ... ist schlechter

  • bei 100-nn nur 70%

  • welche features man wählt, ist extrem wichtig: 4 features

  • aber mit zwei features ist man schon ausreichend gut bedient --> erinnert an PCA (dimensionality reduction)

(wichtige) Frage: wie wählt man jetzt dieses K?

  • da sModel hat innere und auessere parameter

  • hyper-parameters passt man mit fit gut (automatisch) an: https://en.wikipedia.org/wiki/Hyperparameter_(machine_learning)

  • essen heute abend: das menü ist der hype-parameter; muss vorher festgelegt werden

  • hyperparameter: ist die wahl vom essen

  • parameter: wieviel von was - davon abhängig

  • hyperparameter-wahl kann auch schon overfitting bedeuten

  • aus trainignsdatensatz kann man auch einen teil herausnehmen: validation (dritte menge)

  • validation-parameter-set um hyperparameter anpassen

  • artikel auf linkedin: als weitere erläuterung

  • hyperparameter wählen: welches modell, ..

  • (lookup): cross validation

  • erst 1,2 als validation und ret test; dann 9,10 als valid vorheriger teil test: durchschnitt dieser ganzen validations ist dann ergebnis für k -> cross validation

  • 20% splits --> 5 fold validation

  • looks like nvidia gpu is best: but quick search found some converter https://stackoverflow.com/questions/10043974/how-to-run-my-cuda-application-on-ati-or-intel-card-in-software-mode

NEUES PROJEKT:

generic programming

dendrite, axon, synapse - collect and integrate signals and forward that

i do kaggle? https://www.kaggle.com/

https://www.kaggle.com/cdeotte/supervised-generative-dog-net

  • aktivierungsfunktion

  • mit 13 parametern kann man eine sehr vielgefaltete kurve erzeugen - nicht nur eine gerade (wie mit 3 punkten)

  • entscheidung treffen als CEO einer firma: preis eines produktes steigern -- mit leuten reden: marketing, finanzen, .... diese selbst lesen auch ihre "werte" vom "markt/nutzerbasis" -- preise gesteigert: stellt sich am ende des jahres als fehlentscheidung heraus: was macht man dann? -- marketing lag aber richtiger als finanzen: jetzt also marketing mehr vertrauen geben und finanzen weniger; marketing hat das aber auch nur weitergemeldet bekommen

  • (reaserch) back-propagation! <--- very important https://de.wikipedia.org/wiki/Backpropagation

  • sehr einfach algorithmus

  • Initialisation of NN - zufällige werte am Anfang -- dann in weiterer Iteration mit anderem Satz von Parametern machen -- Backprop (check) -- learning rate (check)

stuff for my own homelearning / certificates:

  • backprop macht selber keine änderung im netz: zeigt nur die direktino von änderungen -- gradient descent -- recursive gradient descent -- or adams -- or msdrop (massdrop)

  • learning rate als regulation --> form von regularisation

  • begriff von "epochs" (nachschlagen)

beispiel: 100k datenpunkte; 100k bilder von katzen und hunden - netzwerk trainieren

neues praxisbeispiel: Standard (Fully Connected) Neural Network

--> FCNN_MNIST_light.ipynb

MNIST dataset --> hangeschriebene Ziffern (knn - scikit) (KEras for fully connected neural network; for tensorflow) - Keras vereinfacht das Leben

  • Rest des Kurses nur noch Keras

60k bilder: ein bild hat 28x28 pixel 0..255 for luminance

one hot encoding? https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f

bild mit 28x28 pixel -> 768 werte im bild (jedes pixel ein feature) -> linearisiert: vektor von 768 werten -> diese werden dann 768 input nodes -> dann zwischen-schichten --> das ist wahl der hyperparamter -> alles mit allem verbunden -> am ende 10 nodes in einer schicht (wieder sichtbare schicht)

  • wenn mehr als eine versteckte schicht --> "deep"

  • wenn zuviele schichten, dann overfitting; also zentrale frage: wie traininert man dies jetzt?

  • 784 -> 400, 200, 10 -> diese schichten (?)

  • read: https://ml-cheatsheet.readthedocs.io/en/latest/layers.html

  • softmax layer

  • in notebook: "Training The Model" ist dann wirklich das training des modells, das eigentliche ML

  • in notebook: "Testing the Model" ist dann vergleich der vorhersagen mit dem model

  • accuracy von 92% am ende ...

  • mit 30 epochs dann 96% genauigkeit

  • auto encoder: alle werte eingeben; output sind auch alle werte; in der mitte bottleneck mit nur 20 werten -> zum training eineinziges bild -> gleiches bild wird erwartet; was in der mitte passiert ist dimensionality reduction -> nur 20 werte werden gebraucht --> ergebnis wie PCA (informationsflaschenhals -> durch die enge bekommt man die essenz) read: https://de.wikipedia.org/wiki/Autoencoder

homework

How to use validation data for Keras? ( https://stackoverflow.com/questions/46308374/what-is-validation-data-used-for-in-a-keras-sequential-model ) How to draw then the history data with Keras?

--> read and do: learning curves https://stackoverflow.com/questions/37664783/how-to-plot-a-learning-curve-for-a-keras-experiment how to plot them? https://en.wikipedia.org/wiki/Autoencoder

--> add this https://de.linkedin.com/in/pmohajerani

----------------------------------------------------------

tThird day of ML-course (20190711)

  • get those two archives and unzip them (inside the cats-vs-dogs)

  • vorher: ursprünglich parameter und Hyperparameter

  • Zifferklassifikation hatte keine Features, nur rohe Daten: wie soll man da welche bestimmen?

  • eigentlich Arbeit ist eine Linie (Kurve) zwischen den Gruppen zu zeichnen

  • (Question to myself: how to separate three classes from each other? always reducible to 1vs1 problem?) --> Anpassung der Kurven: fit (via Python, notebooks) - aber die Frage welchen Algo (ist Hyperparameter) man wählt, ist dem Dev überlassen

  • es gibt kein Backprop für HyperParameter

  • Thomas Bayes P (H|B) = P(B|H)*P(H)/P(B) https://de.wikipedia.org/wiki/Bayessches_Netz

looks great t read: https://towardsdatascience.com/@artem.oppermann

books: https://www.amazon.in/Life-3-0-Being-Artificial-Intelligence/dp/1101946598 https://www.amazon.in/Superintelligence-Dangers-Strategies-Nick-Bostrom/dp/0199678111

back to the mnist example: https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Running%20Code.html

google: AutoML - projekt (check this)

  • MNIST notebook: einfach mal einen weiteren layer einfuegen: sauschnell
  • for the visualisation: https://keras.io/visualization/ - also how to use the matplotlib
  • waurm ist 98% erkennung noch nicht gut genug? -- bei überweisungsträgererkennung wäre selbst 99,5% sauschlecht, weil einfach dann 1 von 200 falsch ist

convolutional neural networks

Lenet5: sehr gut für das MNIST problem mit 5 Layern https://medium.com/@pechyonkin/key-deep-learning-architectures-lenet-5-6fc3c59e6f4

-> subsampling um aus einem bild mehr bilder zu machen ( also called maxpooling) "By modern standards, LeNet-5 is a very simple network. It only has 7 layers, among which there are 3 convolutional layers (C1, C3 and C5), 2 sub-sampling (pooling) layers (S2 and S4), and 1 fully connected layer (F6), that are followed by the output layer. Convolutional layers use 5 by 5 convolutions with stride 1. Sub-sampling layers are 2 by 2 average pooling layers. Tanh sigmoid activations are used throughout the network. There are several interesting architectural choices that were made in LeNet-5 that are not very common in the modern era of deep learning."

LSTM model? https://machinelearningmastery.com/deep-learning-for-time-series-forecasting/

deep learning for coders: -----> https://course.fast.ai/

run this notebook now: http://localhost:8888/notebooks/3rdSession/Lenet5.ipynb

good introduction for job preparation: https://blog.usejournal.com/what-i-learned-from-interviewing-at-multiple-ai-companies-and-start-ups-a9620415e4cc

ensemble model

chapters 2,3,4: http://www.deeplearningbook.org/ for the theorethical foundations of ML

( maybe use this for understanding: https://github.com/girishkuniyal/Cat-Dog-CNN-Classifier )

https://de.wikipedia.org/wiki/Fluch_der_Dimensionalit%C3%A4t

( next: transfer learning )


own notes:

watch this: https://www.youtube.com/watch?v=cAICT4Al5Ow reading (especially the cat-vs-dg-example for the jupyter notebook)


fourth day of the course

read this: https://medium.com/cracking-the-data-science-interview/the-10-deep-learning-methods-ai-practitioners-need-to-apply-885259f402c1 do this: https://medium.com/abraia/getting-started-with-image-recognition-and-convolutional-neural-networks-in-5-minutes-28c1dfdd401 - also with colab page do this: https://eu.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187

multi-label image recognition? https://towardsdatascience.com/fast-ai-season-1-episode-3-a-case-of-multi-label-classification-a4a90672a889

https://towardsdatascience.com/image-detection-from-scratch-in-keras-f314872006c9 - also with hints how to make jupyter

laut meiner graphk mit 500 Epochen:

  • anfangs overfitting
  • aber halluzination: model lernt dinge, die nicht richtig waren
  • model hat gelernt, dass meiste katzen heller waren als Hunde -> aber das ist falsch, das ist Overfitting, keine richtige Erkenntnis
  • underfitting (bias): wenn man immernoch nicht zwischen katzen und hudnen unterscheiden kann
  • wie kann das model aber so schlecht lernen?
  • falsch gelernt und dies dann verstärkt

ok, really important!

----> https://medium.com/abraia/first-steps-with-transfer-learning-for-custom-image-classification-with-keras-b941601fcad5

How to detect cats in real life pictures: https://www.pyimagesearch.com/2016/06/20/detecting-cats-in-images-with-opencv/

new example: transfer learning

Wie lernt man Traktor fahren, wenn man schon Auto fahren kann?

#booom: read: https://www.learnopencv.com/understanding-alexnet/ read: https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a

important terms!

maxpooling !

back propagation !

generative adversairal networks

mobilenet - other network type (already decapitated for our example of transfer learning)

Pouyan: "Idee sollte immer intuitiv verständlich sein."

GANs: generator and one adversarial

https://skymind.ai/wiki/generative-adversarial-network-gan

https://www.analyticsindiamag.com/introduction-gans-generative-adversarial-networks/

wtf? https://forum.quartertothree.com/t/using-ai-to-improve-graphics-for-older-games-ersgan/140364

CNN löst probleme hauptsächlich mit Bildern (vision) was ist mit sprache? zeitlicher zusammenhang der worte. länge des zusammenhanges lässt sich nicht bestimmen

https://www.tensorflow.org/beta/tutorials/images/transfer_learning

RNN: https://de.wikipedia.org/wiki/Rekurrentes_neuronales_Netz LSTM: berühmtes RNN network

https://de.wikipedia.org/wiki/Long_short-term_memory http://colah.github.io/posts/2015-08-Understanding-LSTMs/

wettbewerbe: preis ausgeschrieben; leute werden fuer 10k euro lösung machen; einmalzahlung ...

codalab - https://competitions.codalab.org/ kaggle


before: machine platform crowd (mind) (product) (core)


own notes and reading hints

benchmarking - for buying/creating a build

https://www.pugetsystems.com/labs/hpc/TensorFlow-Performance-with-1-4-GPUs----RTX-Titan-2080Ti-2080-2070-GTX-1660Ti-1070-1080Ti-and-Titan-V-1386/ benchmark over different models: https://github.com/jcjohnson/cnn-benchmarks benchmark for inference: https://towardsdatascience.com/benchmarking-hardware-for-cnn-inference-in-2018-1d58268de12a cpu versus gpu: no chance https://medium.com/@andriylazorenko/tensorflow-performance-test-cpu-vs-gpu-79fcd39170c

kaggle

created myself an account: https://www.kaggle.com/marcelpetrick

inception model (important)

https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202 https://www.google.com/search?client=firefox-b-d&q=inception+network

https://cv-tricks.com/cnn/understand-resnet-alexnet-vgg-inception/ https://cv-tricks.com/object-detection/faster-r-cnn-yolo-ssd/

transfer learning

https://medium.com/@14prakash/transfer-learning-using-keras-d804b2e04ef8

LSTM

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

RNN

http://karpathy.github.io/2015/05/21/rnn-effectiveness/

1st hand experience

https://towardsdatascience.com/12-things-i-learned-during-my-first-year-as-a-machine-learning-engineer-2991573a9195 maybe do this? https://towardsdatascience.com/passing-the-google-cloud-professional-data-engineer-certification-87da9908b333

OO and development practice

https://towardsdatascience.com/how-a-simple-mix-of-object-oriented-programming-can-sharpen-your-deep-learning-prototype-19893bd969bd

general Python

profiling

https://toucantoco.com/en/tech-blog/tech/python-performance-optimization

kaggle

grandmaster: https://www.kaggle.com/abhishek reading: http://blog.kaggle.com/2016/07/21/approaching-almost-any-machine-learning-problem-abhishek-thakur/

About

notes and snippets from the VHS-course for machine learning with Python

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published