Günümüzdə hər kəsin maraqlandığı, amma bir çox adamın detallı təsvir edə bilmədiyi “Data Science” sahəsi mövcuddur. İnsanlar çox hallarda bunu ya IT, ya da riyaziyyat/statistika kimi təqdim edirlər və əslində müəyyən dərəcədə də haqlıdırlar. Bir də, “Data Engineering” var və bu məsələləri bir az da qəlizləşdirir.
Əvvəlcə “Data Science” və “Data Engineering” arasındakı fərqləri “Big Data İnstitute” təşkilatının kiçik infoqrafikası ilə nəzərdən keçirək:
Gördüyünüz kimi, hər ikisinin üst-üstə düşən və fərqli cəhətləri var. Bir çox hallarda Oracle DBA-lər, ümumiyyətlə SQL-də query-lər yazan şəxslər “Data Scientist” kimi qəbul edilsələr də onlar ən yaxşı halda “Data Engineer” sayıla bilərlər. Ümumiyyətlə isə “Data Engineer” ciddi proqramlaşdırma biliklərinə malik olmalı, Java, Python, Scala, R kimi dillərdə proqramlaşdıra biləməli, Hadoop, Spark kimi (distributed) sistemləri tənzimləyə və istifadə edə bilməlidir.
Mövzu “Data Science” olduğundan ona daha çox vaxt ayırıb daha detallı məlumat vermək istəyirəm.
Data scientist əsasən yuxarı səviyyəli analizlə məşğul olmalı, ciddi riyazi-statistik və modelləşdirmə biliklərinə, eyni zamanda da yaxşı proqramlaşdırma biliklərinə malik olmalı, müxtəlif Machine Learning və AI (Süni intellekt) modellərini tətbiq edə və formalaşdıra (buna ingilisce “training the model” deyirlər, sadəcə öz dilimizdə uyğun söz tapmadım), eyni zamanda modellərdən çıxan nəticələri interpretasiya edə və tətbiq edə bilməlidir. Ümumi olaraq isə, Data scientist və Data engineer bir yerdə çalışmalıdırlar. Qəbul olunan qeyri-rəsmi standart budur ki, hər təşkilatda 1 Data scientist üçün 2-3 Data engineer işləməlidir.
Data scientist-in bilməli olduqlarını (ən azı orta səviyyədə) aşağıdakı kimi qruplaşdırmaq olar:
- Ehtimal nəzəriyyəsi və Statistika – əksər modellərdə ehtimallar istifadə olunur. Növbəti bölmələrə daha çox önəm vermək lazımdır:
- Təsviredici (Descriptive) and İnferensial (İnferential) statistika
- Ekpriment dizaynı (Experimental design) – əsasən quasi-experimentlər üçün
- Riyaziyyat – bütün modellər riyazi optimallaşdırmadır. Riyaziyyatın aşağıdakı alt-sahələri daha vacibdir:
- Funksiyalar
- Çoxdəyişənli riyazi analiz (Multivariable Calculus)
- Xətti cəbr (Linear Algebra)
- Programlaşdırma – Coxlu hesablamalar aparmaq lazim olduğunu nəzərə alsaq bunsuz işimiz mümkün deyil. Aşağıdakı dillər minimumdur:
- Python
- R
- Bir qədər html/css və javascript
- Machine Learning (ML):
- Supervised learning
- Unsupervised learning
- Reinforcement Learning
- Deep learning – əslində ML-in tərkib hissəsi olsa da bunu ayrıca qeyd etmək lazımdır
- Data ilə iş (Data wrangling)
- Ümumilikdə databazalar və onların iş prinsipi: relyasion və NoSQL (daha detallı – gələn postlarda!)
- SQL DML – ən azı SQL-də query yazmağı bacarmaq lazimdır
- Bir qədər də NoSQL
- Digər arzu olunan proqram alətləri: Excel, Tableau
- Sahə biliyi (domain knowledge) – araşdırılan və modelləşdirilən sahəni bilmək və başa düşmək mütləqdir.
Qeyd olunan sahələrin bəziləri üzrə lazım olan bilikləri daha detallı göstərmək olar vermək olar. Gəlin baxaq.
Statistika
Təsviredici göstəricilər: mean, median, mode, variance, semivariance, standard deviation, quartiles, etc.
Ehtimal paylamaları (distributions): uniform, normal, lognormal, chi-square, F, gamma, beta, GEV, binomial, poisson/exponential, etc.
Hypothesis testing: Z-test, t-test, chi-square association testing, F test – ANOVA, Mann-Whitney, McNemar, Kruskal-Wallis, Wilcoxon, Kolmogorov-Smirnov, etc.
Eksperiment dizaynı: A/B testing, power law/sample size, control variables, SMART experiments
Programlaşdırma
OOP (Object oriented programming) – obyekt yönümlü proqramlaşdırma: Bununla bağlı sonra daha geniş post yazmağa çalışacam.
Python: numpy, scipy, pandas, sklearn, keras+(bir az tensorflow və ya theano), statsmodels, matplotlib, seaborn, dash və ya bokeh, Ipython, etc.
R: dplyr, ggplot2, etc.
Html/css və javascript: D3js, AJAX, jQuery
Machine Learning
Supervised learning: regression, classification
Unsupervised learning: clustering, dimensionality reduction
Reinforcement learning: Q-learning, TD-learning, Genetic algorithms
Öyrənmək istəsək, haradan başlayaq?
Ən keyfiyyətli online mənbələr kimi aşağıdakıları göstərmək olar. Nümunə olaraq MİT-nin bəzi uyğun kurslarının adlarını qeyd edirəm, amma hamısında oxshar axtarış etməklə məlumat tapmaq olar.
MIT Open Course Ware: https://ocw.mit.edu/index.htm
- Introduction to Computer Science and Programming in Python
- Introduction to Computational Thinking and Data Science
- Linear Algebra
- Introduction to Probability and Statistics
- Multivariable Calculus
- Artificial Intelligence
Stanford online: https://online.stanford.edu/courses
Udacity: https://www.udacity.com/
Coursera: https://www.coursera.org/
Kaggle: https://www.kaggle.com/
http://machinelearning.az