Sunday, August 6, 2017

Progress with machine learning

Half a year has passed since my last post. I have accomplished a lot of things:

  • Completed Machine learning specialization by Yandex and MFTI on Coursera and cs231n course;
  • Got a job in a bank;
  • Finished my first stand-alone project on machine learning;
Machine learning specialization
This specialization covered all main topics in machine learning - classification, regression, clustering, nlp, recommender systemsand so on. I think that this is one of the best courses for beginners. As a final project I made a little site with sentimental analysis functionality - I have gathered ~25k customer reviews on mobile phones, trained a model and created a little site, where user can input a review and receive the result of analysis - whether the review is positive or negative.
cs231n is Stanford's course on deep learning. It was amazing and extremely useful.

Job in a bank
Finding a job, when you radically change a career if difficult, but after some time I was able to find a job in a bank. Now I work in a department, which works on cross-selling - trying to sell bank products to people, who already have some product of this bank.
I'm building a model which predicts probability with which customers will activate the card, which bank sends to them. And I'm doing it alone! So it is challenging and interesting.
Analysis and prototype are done in Python, but the solution in production will use SAS. So I have a lot of things to learn and explore.

Stand-alone project
In my spare time I try to learn as many new things as I can. There are many ways of doing it, one of them is building pet projects. I have spent several weeks on it, but the result was worth it.
Here is the link. The site looks like this:

This is a little site (also working on mobile), where a user can draw a digit and machine learning models will try to recognize it. There are two models: FNN written on numpy and CNN on Tensorflow. Both were inspired by cs231n. But models don't simply recognize the images, they are also trained on new images to improve their accuracy.

I collected the data by myself - I drew 1000 images, ~100 of each digit. Then I created the models and trained them on this data. This was my first experience in:

* Collecting, processing and storing the data by myself;
* Building a site and using Flask;
* Building models, which can be trained on additional data;
* Working with Amazon cloud;
* Augmenting images;
* Building new good TF structure for my purpose;

I have described the models and the project workflow on site, you can find the links in the navigation bar at the top.

Friday, January 20, 2017

Learning. Machine learning.

I spent most of the last several months on studying programming and machine learning. This is difficult in many ways:
  • Previously I had only a limited experience with programming, and now I need it. So I decided to study Python, which is a great, popular and not difficult to learn. It took me 1-1,5 months to learn enough to start studying machine learning. I went through a great book "Automate the boring staff with Python", it was amazing. Then I read some useful articles, practiced on sites offering exercises and so on;
  • I had to renew my knowledge of linear algebra, calculus and other mathematical stuff. This is really necessary for understanding of machine learning algorithms;
  • Also I needed statistics and theory of probabilities. While I have already renewed my understanding of statistics when I was preparing for Lean Six Sigma exams, theory of probabilities was never my forte. So it required some efforts to study it;
  • Of course analytic skills are also necessary.
And machine learning by itself is very challenging. There many areas in machine learning and they differ from each other. Of course, while programming you could use libraries for fast and easy use of many algorithms, but if you need to reach better accuracy and performance than average, you have to understand how these algorithms work, what is the math and logic behind them.

Starting machine learning is easy thanks to a variety of guides and learning materials. Understanding it is much more difficult. I hope I'll be able to do it.

Meanwhile I am in process of building my portfolio to show my skills and knowledge in this sphere.