万物皆数学,一切皆是概率,机器学习的思路是丢给机器data(图像,音频,文本)让机器自己学习并且举一反三预测新的知识,当然要预测对才是学得好的表现。
经过近半年的学习,看了不少资料和视频,将machine learning的学习笔记做一简单整理,机器学习发生离不开四个要素,分别是好的model和有效的算法,好的计算机硬件,高质量数据,诸多的机器学习平台:
一、好的model和有效的算法
基本的机器学习分监督学习,非监督学习和半监督学习,还有之后的迁移学习和强化学习
最开始要接触的模型都是从监督学习和非监督学习开始的:
监督学习模型有linear regression,logistic regression,SVM, KNN, Bayes等,基于数据的离散还是连续的又分为分类和回归两种分类器,每个模型都对应有两种分类器;
非监督学习一般用到的是k-means算法,将数据聚类成几个簇,非监督学习中对数据的预处理中常用到的是PCA降维
模型的算法(也就是评价模型好坏)有基于结果是连续数据的LSM(最小二乘法),极大似然以及基于结果是非连续的二分类和softmax,基于数据不对称的混淆矩阵和ROC curve
二、好的计算机硬件
机器学习中最近比较火的深度学习在图像和音频方面达到很高的准确率,其实深度学习并非最近才被提出来,其算法的思想核心BP在上世纪60年代就被提出,几经周折都未能暂露头角,但是计算机的性能变革都引起了机器学习的革命,目前的CPU以及任务比较大数据量较多需要的GPU是机器学习发展的关键。
三、高质量数据
机器学习是数据驱动的,数据对于机器学习的计算结构尤为重要,但是往往现实中的数据不是理想的可以直接拿过来就可以被使用的,数据的不对称,缺失,失衡,高纬度等都需要对其进行预处理,包括去均值,归一化,降维等操作。
四、诸多的机器学习平台
python是机器学习目前比较好的程序,且有很多机器学习的库和包都是可以免费使用的,如机器学习算法的sklearn库,语言处理NLTK库,sklearn囊括了机器学习的所有算法,在了解了每种学习算法的数学原理后不需要自己从头开始些代码,只需要调用包就可以达到很好的准确率了,而且sklearn所有的算法维护的都很好,在格式上非常一样(如下表):
estimator.fit(X_train,y_train) | |
estimator.predict(X_test) | estimator.transform(X_test) |
classification | preprocessing |
regression | Dimensitionality reduction |
svm | feature extration |
clustering | feature selection |
knn |
除此以外,还有很多基于最近较火的深度学习的框架, 比较适合学习的是theano和tensorflow。
Theano | Torch | Tensorflow:) | caffe | |
Language | python | Lua | python | C++,python |
data parallel | Yes | Yes | Yes | Yes |
model parallel | Yes | Yes | Yes(best) | Yes |
good at RNN | Best | bad | ||
feature | fit for academy | no python suport | popular on DL and computer |
以上四点大概描述了ML的学习工具和学习步骤,raw data->data preprecessing->特征选择->模型预测