一文了解机器学习知识点及其算法(附python代码)

来源:数据城堡

时间:2016-09-09 14:05:50

作者:

机器学习发展到现在,已经形成较为完善的知识体系,同时大量的数据科学家的研究成果也让现实问题的处理有了相对成熟的应对算法。

所以对于一般的机器学习来说,解决问题的方式变的非常简单:熟悉这些基本的算法,并且遇到实际的问题能够系统地运用这些思想来解决。

按学习方式划分的机器学习知识架构

机器学习细分方法

这篇文章将对机器学习算法进行分类的详细描述,并介绍几个常用的机器学习算法(附python代码),这些足够解决平时的大多数问题。

回归算法(Regression Algorithms)

回归是关注变量之间关系的建模,利用模型预测误差测量进行反复提炼。回归方法是统计工作,已纳入统计机器学习。这可能是令人困惑,因为我们可以用回归来引用各类的问题及各类算法,回归其实是一个过程。

普通最小二乘法 Ordinary Least Squares

逻辑回归 Logistic Regression

逐步回归 Stepwise Regression

多元自适应回归 MARS

局部散点平滑估计 LOESS

基于实例的方法(Instance-based Algorithms)

基于实例的学习模型是使用那些对于模型很重要训练数据,这类方法通常使用基于示例数据的数据库,用新数据和数据库数据以一种相似度方式从中找到最佳匹配,从而作出预测。出于这个原因,基于实例的方法也被称为赢家通吃所有的方法和基于记忆的学习。重点放在存储实例之间的相似性度量表现上。

k最邻近算法 k-Nearest Neighbour ,kNN

学习矢量量化 Learning Vector Quantization ,LVQ

自组织映射 Self-Organizing Map ,SOM

局部加权学习 Locally Weighted Learning ,LWL

正则化方法(regularization Algorithms)

正则化方法是其他算法(回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。基于正则化方法的扩展 (典型是基于regression回归方法) 可能比较复杂,越简单可能会利于推广,下面列出的正则化方法是因为它们比较流行 强大简单。

岭回归数值计算方法 Ridge Regression

至少绝对的收缩和选择算子 LASSO

弹性网络 Elastic Net

决策树算法(Decision Tree Algorithms)

决策树方法是建立一种基于数据的实际属性值的决策模型。决策使用树型结构直至基于一个给定记录的预测决策得到。决策树的训练是在分类和回归两方面的数据上进行的。

分类回归树 Classification and Regression Tree ,CART

迭代二叉树3代 Iterative Dichotomiser 3 ,ID3

卡方自动交互检测 CHAID

多元自适应回归样条 MARS

梯度推进机 Gradient Boosting Machines ,GBM

单层决策树 Decision Stump

贝叶斯方法(Bayesian Algorithms)

贝叶斯分析方法(Bayesian Analysis)提供了一种计算假设概率的方法,这种方法是基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身而得出的。其方法为,将关于未知参数的先验信息与样本信息综合,再根据贝叶斯公式,得出后验信息,然后根据后验信息去推断未知参数的方法。

朴素贝叶斯 Naive Bayes

平均单依赖估计 AODE

贝叶斯置信网络 Bayesian Belief Network ,BBN

内核方法(Kernel Methods)

最有名的当属支持向量机的方法, 内核方法更关注将数据映射到高维空间向量,在那里可以进行一些分类或回归问题的建模。

支持向量机 Support Vector Machines ,SVM

径向基函数 Radial Basis Function ,RBF

线性鉴别分析 Linear Discriminate Analysis ,LDA

聚类算法(Clustering Algorithms)

聚类方法, 类似回归,是属于描述问题和方法的类别,聚集方法通常被建模于基于几何中心centroid-based和层次组织等系统。所有的方法都是有关使用数据中固有的结构,这样以便更好将数据组织为存在最大共性的分组。

聚类类似于分类,但与分类的目的不同,是针对数据的相似性和差异性将一组数据分为几个类别。属于同一类别的数据间的相似性很大,但不同类别之间数据的相似性很小,跨类的数据关联性很低。

k-Means聚类方法

期望最大化算法 Expectation Maximisation ,EM

关联规则学习(Association Rule Learning)

关联规则的学习方法是提取那些能解释观察到的变量之间的数据关系的规则。这些规则可以用于在大型多维数据集里,以便能发现重要的和商业上对某个组织或公司有用的的关联。

关联规则的挖掘过程主要包括两个阶段:第一阶段为从海量原始数据中找出所有的高频项目组;第二极端为从这些高频项目组产生关联规则。关联规则挖掘技术已经被广泛应用于金融行业企业中用以预测客户的需求,各银行在自己的ATM 机上通过捆绑客户可能感兴趣的信息供用户了解并获取相应信息来改善自身的营销。

Apriori 算法

Eclat 算法

人工神经网络(Artificial Neural Network)

人工神经网络模型的灵感来自于生物神经网络的结构和功能。他们是一类的模式匹配,常用于回归和分类问题。

神经网络作为一种先进的

因为各种各样的问题类型有数百种分支的算法。一些经典的流行的方法:

感知器神经网络 Perceptron

反向传播 Back-Propagation

霍普菲尔网络 Hopfield Network

自组织映射 Self-Organizing Map ,SOM

学习矢量量化 Learning Vector Quantization ,LVQ

深度学习(Deep Learning)

深度学习方法是一个现代的人工神经网络方法升级版,利用丰富而又廉价的计算,建立更大和更复杂的神经网络,许多方法都是涉及半监督学习(大型数据中包含很少有标记的数据)。

受限波尔兹曼机 Restricted Boltzmann Machine ,RBM

深度置信网络 Deep Belief Networks ,DBN

卷积神经网络 Convolutional Neural Network,CNN

堆栈式自动编码器 Stacked Auto-encoders

降维方法(Dimensionality Reduction)

类似群集clustering方法, 降维是寻求和利用数据的内在结构,但在这种情况下,使用无监督的方式只能较少的信息总结或描述数据。以监督方式使用是有用的,能形成可视化的三维数据或简化数据。

主成分分析 Principal Component Analysis ,PCA

偏最小二乘回归 Partial Least Squares Regression ,PLS

萨蒙映射 Sammon Mapping

多维尺度 Multidimensional Scaling ,MDS

投影寻踪 Projection Pursuit

模型融合算法(Ensemble Algorithms)

由多个独立训练的弱模型组成,这些模型以某种方式结合进行整体预测。大量的精力需要投入学习什么弱类型以及它们的组合方式。这是一个非常强大的很受欢迎的技术类别:

Boosting/AdaBoost

自展输入引导式聚合 Bootstrapped Aggregation

堆栈泛化 Stacked Generalization

梯度Boosting机器 Gradient Boosting Machines ,GBM

随机森林 Random Forest

经过上面的描述,机器学习的主流算法基本都已经包括了。但是你肯定会想,这样的分类是否真的科学?诚然,笔者并没有找到完全科学的分类方式,按有无监督的情况来进行分类似乎更准确一些。但是那只说明了算法本身的特征,而我们更需要的是从算法的功能用途来进行分类,这样我们在遇到某一类问题时可以直接利用这些算法切入。

还有一些情况需要说明,比如支持向量机(SVM),既可以用于分类,也可用于回归分析,很难归于某一类。又比如一些具体的领域,如计算机视觉 (CV)、自然语言处理(NLP)、推荐系统等,复杂的实际情况更难使解决问题的算法归于某一类,很可能是多种问题的集合。

这么多的算法,全部融会贯通真的是一件极其困难的事情,就算你全部掌握,也很难在具体问题中做出选择。而对于实际的问题的处理,目前都有了主流的方法,以下10种算法是现在最流行的机器学习算法(含python代码),几乎可以解决绝大部分的问题。

1.线性回归 Linear Regression

线性回归是利用连续性变量来估计实际数值(例如房价,呼叫次数和总销售额等)。我们通过线性回归算法找出自变量和因变量间的最佳线性关系,图形上可以确定一条最佳直线。这条最佳直线就是回归线。这个回归关系可以用Y=aX+b 表示。

Python 代码:

#Import Library

#Import other necessary libraries like pandas, numpy...

from sklearn import linear_model

#Load Train and Test datasets

#Identify feature and response variable(s) and values must be numeric and numpy arrays

x_train=input_variables_values_training_datasets

y_train=target_variables_values_training_datasets

x_test=input_variables_values_test_datasets

# Create linear regression object

linear = linear_model.LinearRegression()

# Train the model using the training sets and check score

linear.fit(x_train, y_train)

linear.score(x_train, y_train)

#Equation coefficient and Intercept

print('Coefficient: \n', linear.coef_)

print('Intercept: \n', linear.intercept_)

#Predict Output

predicted= linear.predict(x_test)

2.逻辑回归 Logistic Regression

逻辑回归其实是一个分类算法而不是回归算法。通常是利用已知的自变量来预测一个离散型因变量的值(像二进制值0/1,是/否,真/假)。简单来说,它就是通过拟合一个逻辑函数来预测一个事件发生的概率。所以它预测的是一个概率值,它的输出值应该在0到1之间。

Python 代码:

#Import Library

from sklearn.linear_model import LogisticRegression

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create logistic regression object

model = LogisticRegression()

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Equation coefficient and Intercept

print('Coefficient: \n', model.coef_)

print('Intercept: \n', model.intercept_)

#Predict Output

predicted= model.predict(x_test)

3.决策树 Decision Tree

既可以运用于类别变量(categorical variables)也可以作用于连续变量。这个算法可以让我们把一个总体分为两个或多个群组。分组根据能够区分总体的最重要的特征变量/自变量进行。

Python 代码:

#Import Library

#Import other necessary libraries like pandas, numpy...

from sklearn import tree

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create tree object

model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini

# model = tree.DecisionTreeRegressor() for regression

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Predict Output

predicted= model.predict(x_test)

4.支持向量机 SVM

给定一组训练样本,每个标记为属于两类,一个SVM训练算法建立了一个模型,分配新的实例为一类或其他类,使其成为非概率二元线性分类。一个SVM模型的例子,如在空间中的点,映射,使得所述不同的类别的例子是由一个明显的差距是尽可能宽划分的表示。新的实施例则映射到相同的空间中,并预测基于它们落在所述间隙侧上属于一个类别。

Python 代码:

#Import Library

from sklearn import svm

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create SVM classification object

model = svm.svc() # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail.

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Predict Output

predicted= model.predict(x_test)

5.朴素贝叶斯 Naive Bayes

朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

Python 代码:

#Import Library

from sklearn.naive_bayes import GaussianNB

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create SVM classification object model = GaussianNB() # there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

6.K邻近算法 KNN

这个算法既可以解决分类问题,也可以用于回归问题,但工业上用于分类的情况更多。 KNN先记录所有已知数据,再利用一个距离函数,找出已知数据中距离未知事件最近的K组数据,最后按照这K组数据里最常见的类别预测该事件。

Python 代码:

#Import Library

from sklearn.neighbors import KNeighborsClassifier

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create KNeighbors classifier object model

KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

7.K-均值算法 K-means

首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然 后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。

Python 代码:

#Import Library

from sklearn.cluster import KMeans

#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset

# Create KNeighbors classifier object model

k_means = KMeans(n_clusters=3, random_state=0)

# Train the model using the training sets and check score

model.fit(X)

#Predict Output

predicted= model.predict(x_test)

8.随机森林 Random Forest

随机森林是对决策树集合的特有名称。随机森林里我们有多个决策树(所以叫“森林”)。为了给一个新的观察值分类,根据它的特征,每一个决策树都会给出一个分类。随机森林算法选出投票最多的分类作为分类结果。

Python 代码:

#Import Library

from sklearn.ensemble import RandomForestClassifier

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create Random Forest object

model= RandomForestClassifier()

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

9.降维算法 Dimensionality Reduction Algorithms

我们手上的数据有非常多的特征。虽然这听起来有利于建立更强大精准的模型,但它们有时候反倒也是建模中的一大难题。怎样才能从1000或2000个变量里找到最重要的变量呢?这种情况下降维算法及其他算法,如决策树,随机森林,PCA,因子分析,相关矩阵,和缺省值比例等,就能帮我们解决难题。

Python 代码:

#Import Library

from sklearn import decomposition

#Assumed you have training and test data set as train and test

# Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k =min(n_sample, n_features)

# For Factor analysis

#fa= decomposition.FactorAnalysis()

# Reduced the dimension of training dataset using PCA

train_reduced = pca.fit_transform(train)

#Reduced the dimension of test dataset

test_reduced = pca.transform(test)

10.Gradient Boost/Adaboost算法

GBM和AdaBoost都是在有大量数据时提高预测准确度的boosting算法。Boosting是一种集成学习方法。它通过有序结合多个较弱的分类器/估测器的估计结果来提高预测准确度。这些boosting算法在DataCastke 、Kaggle等数据科学竞赛中有出色发挥。

Python 代码:

#Import Library

from sklearn.ensemble import GradientBoostingClassifier

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create Gradient Boosting Classifier object

model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

责任编辑:陈卓阳

python重点知识归纳_一文了解机器学习知识点及其算法(附python代码)相关推荐

  1. python 回归去掉共线性_一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  2. python训练手势分类器_使用Pytorch训练分类器详解(附python演练)

    [前言]:你已经了解了如何定义神经网络,计算loss值和网络里权重的更新.现在你也许会想数据怎么样? 目录: 一.数据 二.训练一个图像分类器 使用torchvision加载并且归一化CIFAR10的 ...

  3. python初中必背语法_初中英语语法知识点总结 中考必背重点知识归纳

    初中英语语法知识点总结 中考必背重点知识归纳 很多人想知道初中英语有哪些重要的语法知识点,中考有哪些必背的知 识点呢 ? 下面小编为大家整理一下 ! 初中英语语法重点知识归纳名词的所有格 : 表所有关 ...

  4. 这或许是你见过的最全面的 Python 重点知识总结

    这是一份总结 Python 重点知识点点文章. 由于有太多的东西,本篇点篇幅有点长,这也是我"缝缝补补"总结了好久的东西,强烈建议收藏.关注.点赞,再慢慢看~ [注]完整版代码.数 ...

  5. 肖博高中数学高考数学重点知识归纳之三角函数与解三角形

    肖博高中数学高考数学重点知识归纳 三角函数与解三角形解答题往往处于高考数学试卷解答题第一题的位置,难度中等,以考查基础知识和基本能力为主.根据历年阅卷情况,此题的得分率并不是太高,主要原因是审题不严谨 ...

  6. 初中数学知识点总结_初中数学知识点总结 中考必背的重点知识归纳

    很多人想知道初中有哪些重点知识,初中数学在中考中有哪容易考的知识点呢?下面小编为大家介绍一下! 数学中考知识点系统总结 专题一 数与式 考点1.1.实数的概念及分类 1. 实数的分类 有理数:整数(包 ...

  7. 最全面的Python重点知识汇总,建议收藏!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨网络,由法纳斯特整理 这是一份来自于 SegmentFault ...

  8. 你见过的最全面的Python重点知识总结!

    这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结了太多的东西,所以篇幅有点长,这也是作者"缝缝补补"总结了好久的东西,强烈建议收 ...

  9. 最全面的Python重点知识汇总,建议码住

    这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结了太多的东西,所以篇幅有点长,这也是博主"缝缝补补"总结了好久的东西. Py2 ...

最新文章

  1. c++ 指针常量,常量指针
  2. python规范化字符串_python中正确的字符串编码规范
  3. python中模块sys与os的一些常用方法
  4. xxx定律-poj-3782
  5. CF1039D-You Are Given a Tree【根号分治,贪心】
  6. C#利用反射将Datatable转化为指定实体类ListT
  7. python 标准库 —— io(StringIO)
  8. ios7中的UILabel自适决定大小
  9. 五 C# 多线程研究 使用Mutex类来同步方法及其与Monitor类和Lock之间的区别
  10. C# 使用Graphics对象的方法绘制粗边图形/圆/椭圆/线段
  11. windows bat批处理基础命令学习教程(转载)
  12. 产品读书《创业维艰:如何完成比难更难的事》
  13. 如何将pdf转换成ppt演讲稿
  14. php ssl 465,帝国CMS邮件无法发送 SSL465端口无法发送的问题解决办法
  15. opencv机器视觉入门
  16. 人体脂肪的形成及如何消耗
  17. 俄语计算机考研,研友分享:俄语考研91分的经验体会
  18. java int溢出,结果只会保留低32位,高位会抛弃掉
  19. 第11章:图像金字塔
  20. 一个月体验,终于懂了程序员为什么喜欢用MacBook!

热门文章

  1. 双冒号作用运算符以及命名空间详解
  2. podman安装及使用命令
  3. paping psping 那些事
  4. HTML+CSS部分知识点整合(结合案例实际运用归纳)
  5. 赛普拉斯代理商与芯片ic是如何收购成功的
  6. 计算小于n的质数的个数
  7. 10000字常用统计检验Python代码!
  8. 图像旋转的原理,实现与优化
  9. 姿态识别入门 DeepPose: Human Pose Estimation via Deep Neural Networks
  10. linux微信qq钉钉,Ubuntu使用Wine安装钉钉、微信、QQ等Windows软件