机器学习常用十大算法

机器学习常用十大算法机器学习常用10种算法

基本的机器学习算法:

线性回归算法 Linear Regression
逻辑回归算法 Logistic Regression
朴素贝叶斯算法 Naive Bayes
最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)
支持向量机算法 (Support Vector Machine,SVM)
决策树算法 Decision Tree
随机森林算法 Random Forest
k-平均算法 K-Means
降维算法 Dimensional Reduction
梯度增强算法 Gradient Boosting

一、机器学习算法大致可以分为三类:

1、监督学习算法 (Supervised Algorithms)

       这类算法的工作原理是使用带标签的训练数据来学习输入变量转化为输出变量的映射函数,换句话说就是求解方程 Y=f(X) 中的f

在监督学习训练过程中,可以由训练数据集学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。该算法要求特定的输入/输出,首先需要决定使用哪种数据作为范例。例如,文字识别应用中一个手写的字符,或一行手写文字。监督式学习的常见应用场景如分类问题和回归问题。

监督学习又可细分为如下三类:

  • 回归(Regression):预测一个值,如预测降雨量、房价等,较基础的算法有:Linear Regression
  • 分类(Classification):预测一个标签,如预测生病健康,图片上是哪种动物等,较基础的算法有:Logistic RegressionNaive BayesK-Nearest NeighborsKNN)、支持向量机、决策树
  • 集成(Ensembling)也可以归类为监督学习的一种,它将多个单独较弱的机器学习模型的预测结合起来,以产生更准确的预测,较基础的算法有Bagging with Random Forests、Boosting with XGBoost

2、无监督学习算法 (Unsupervised Algorithms)

       这类算法的工作原理是从无标签的训练数据中学习数据的底层结构。这类算法没有特定的目标输出,算法将数据集分为不同的组。常见的应用场景包括关联规则的学习以及聚类等。

非监督学习又可细分为如下三类:

  • 关联(Association):发现集合中项目同时出现的概率,如通过分析超市购物篮,发现啤酒总是和尿片一起购买(啤酒与尿片的故事),较基础的算法有:Apriori
  • 聚类(Clustering):对数据进行分组,以便组内对象比组间对象更相似,较基础的算法有:K-Means
  • 降维(Dimensionality Reduction):减少数据集的变量数量,同时保证重要的信息不被丢失。降维可以通过特征提取方法和特征选择方法来实现,特征提取是执行从高维空间到低维空间的转换,特征选择是选择原始变量的子集,较基础的算法有:PCA

3、强化学习算法 (Reinforcement Algorithms)

       强化学习普适性强,主要基于决策进行训练,算法根据输出结果(决策)的成功或错误来训练自己,通过大量经验训练优化后的算法将能够给出较好的预测。类似有机体在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。在运筹学和控制论的语境下,强化学习被称作“近似动态规划”(approximate dynamic programming,ADP)。

二、基本的机器学习算法:

1. 线性回归算法 Linear Regression

       回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况。它为变量分配最佳权重,以创建一条直线或一个平面或更高维的超平面,使得预测值和真实值之间的误差最小化。

        线性回归算法(Linear Regression)的建模过程就是使用数据点来寻找最佳拟合线。公式,y = mx + c,其中 y 是因变量,x 是自变量,利用给定的数据集求 m 和 c 的值。

线性回归又分为两种类型,即 简单线性回归(simple linear regression),只有 1 个自变量;*多变量回归(multiple regression),至少两组以上自变量。

下面是一个线性回归示例:基于 Python scikit-learn 工具包描述。

机器学习常用十大算法

优点:实现简单,计算简单;

缺点:不能拟合非线性数据;

2. 逻辑回归算法 Logistic Regression

        虽然写着回归,但实际上是一种二分类算法。它将数据拟合到logit函数中,所以称为logit回归。简单来说就是基于一组给定的变量,用logistic function来预测这个事件的概率,给出一个介于01之间的输出。

逻辑回归算法(Logistic Regression)一般用于需要明确输出的场景,如某些事件的发生(预测是否会发生降雨)。通常,逻辑回归使用某种函数将概率值压缩到某一特定范围。

例如,Sigmoid 函数(S 函数)是一种具有 S 形曲线、用于二元分类的函数。它将发生某事件的概率值转换为 0, 1 的范围表示。

Y = E ^(b0+b1 x)/(1 + E ^(b0+b1 x ))

       以上是一个简单的逻辑回归方程,B0,B1是常数。这些常数值将被计算获得,以确保预测值和实际值之间的误差最小。

机器学习常用十大算法

机器学习常用十大算法

优点:

1. 实现简单

2. 分类时计算量非常小,速度很快,存储资源低;

缺点:

1. 容易欠拟合,一般准确度不太高

2. 只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;

3. 朴素贝叶斯算法 Naive Bayes

        朴素贝叶斯算法(Naive Bayes)基于概率论的贝叶斯定理,应用非常广泛,从文本分类、垃圾邮件过滤器、医疗诊断等等。朴素贝叶斯是一种基于贝叶斯定理的分类方法,它会假设一个类中的某个特征与其他特征无关。这个模型不仅非常简单,而且比许多高度复杂的分类方法表现得更好。

朴素贝叶斯适用于特征之间的相互独立的场景,例如利用花瓣的长度和宽度来预测花的类型。“朴素”的内涵可以理解为特征和特征之间独立性强。

与朴素贝叶斯算法密切相关的一个概念是最大似然估计(Maximum likelihood estimation),历史上大部分的最大似然估计理论也都是在贝叶斯统计中得到大发展。例如,建立人口身高模型,很难有人力与物力去统计全国每个人的身高,但是可以通过采样,获取部分人的身高,然后通过最大似然估计来获取分布的均值与方差。

Naive Bayes is called naive because it assumes that each input variable is independent.

机器学习常用十大算法

优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。

缺点:对输入数据的表达形式很敏感。

4 最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)

        KNN算法是一种基于实例的学习,或者是局部近似和将所有计算推迟到分类之后的惰性学习。用最近的邻居(k)来预测未知数据点。k 值是预测精度的一个关键因素,无论是分类还是回归,衡量邻居的权重都非常有用,较近邻居的权重比较远邻居的权重大。

这是用于分类和回归的机器学习算法(主要用于分类)。它考虑了不同的质心,并使用欧几里得函数来比较距离。接着分析结果并将每个点分类到组中,以优化它,使其与所有最接近的点一起放置。它使用k个最近邻的多数票对数据进行分类预测。

机器学习常用十大算法

机器学习常用十大算法

机器学习常用十大算法

优点:

1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;

2. 可用于非线性分类;

3. 训练时间复杂度为O(n)

4. 准确度高,对数据没有假设,对outlier不敏感;

缺点:

1. 计算量大,需要对数据进行规范化处理,使每个数据点都在相同的范围。

2. 样本不平衡问题,对数据的局部结构非常敏感(即有些类别的样本数量很多,而其它样本的数量很少);

3. 需要大量的内存;

        延伸:KNN 的一个缺点是依赖于整个训练数据集,学习向量量化(Learning Vector Quantization,LVQ)是一种监督学习的人神经网络算法,允许你选择训练实例。LVQ 由数据驱动,搜索距离它最近的两个神经元,对于同类神经元采取拉拢,异类神经元采取排斥,最终得到数据的分布模式。如果基于 KNN 可以获得较好的数据集分类效果,利用 LVQ 可以减少存储训练数据集存储规模。典型的学习矢量量化算法有LVQ1、LVQ2和LVQ3,尤以LVQ2的应用最为广泛。

机器学习常用十大算法

5. 支持向量机算法(Support Vector Machine,SVM)

       支持向量机/网络算法(SVM)属于分类型算法。SVM模型将实例表示为空间中的点,将使用一条直线分隔数据点。需要注意的是,支持向量机需要对输入数据进行完全标记,仅直接适用于两类任务,应用将多类任务需要减少到几个二元问题。

它将数据映射为空间中的点,使得不同类别的点可以被尽可能宽的间隔分隔开,对于待预测类别的数据,先将其映射至同一空间,并根据它落在间隔的哪一侧来得到对应的类别。

机器学习常用十大算法

机器学习常用十大算法

优点:

1. 可用于线性/非线性分类,也可以用于回归;

2. 低泛化误差;

3. 容易解释;

4. 计算复杂度较低;

缺点:

1. 对参数和核函数的选择比较敏感;

2. 原始的SVM只比较擅长处理二分类问题;

6. 决策树算法 Decision Tree

        决策树(Decision tree)是一种特殊的树结构,由一个决策图和可能的结果(例如成本和风险)组成,用来辅助决策。机器学习中,决策树是一个预测模型,树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,通常该算法用于解决分类问题。

一个决策树包含三种类型的节点:

决策节点:通常用矩形框来表示

机会节点:通常用圆圈来表示

终结点:通常用三角形来表示

       简单决策树算法案例,确定人群中谁喜欢使用信用卡。考虑人群的年龄和婚姻状况,如果年龄在30岁或是已婚,人们更倾向于选择信用卡,反之则更少。

通过确定合适的属性来定义更多的类别,可以进一步扩展此决策树。在这个例子中,如果一个人结婚了,他超过30岁,他们更有可能拥有信用卡(100% 偏好)。测试数据用于生成决策树。

机器学习常用十大算法

注意:对于那些各类别样本数量不一致的数据,在决策树当中信息增益的结果偏向于那些具有更多数值的特征。

优点:计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

缺点:容易过拟合(后续出现了随机森林,减小了过拟合现象)。

7. 随机森林算法 Random Forest

         随机森林算法(Random Forest)的名称由 1995 年由贝尔实验室提出的random decision forests 而来,正如它的名字所说的那样,随机森林可以看作一个决策树的集合。

随机森林中每棵决策树估计一个分类,这个过程称为“投票(vote)”。理想情况下,我们根据每棵决策树的每个投票,选择最多投票的分类。

机器学习常用十大算法

PaperRandom Forest |Leo Breiman | Statistics Department University of California Berkeley

8. k-平均算法 K-Means

       k-平均算法(K-Means)是一种无监督学习算法,为聚类问题提供了一种解决方案。

K-Means 算法把 n 个点(可以是样本的一次观察或一个实例)划分到 k 个集群(cluster),使得每个点都属于离他最近的均值(即聚类中心,centroid)对应的集群。重复上述过程一直持续到重心不改变。

机器学习常用十大算法

9. 降维算法 Dimensional Reduction

        在机器学习和统计学领域,降维是指在限定条件下,降低随机变量个数,得到一组“不相关”主变量的过程,并可进一步细分为特征选择和特征提取两大方法。

      一些数据集可能包含许多难以处理的变量。特别是资源丰富的情况下,系统中的数据将非常详细。在这种情况下,数据集可能包含数千个变量,其中大多数变量也可能是不必要的。在这种情况下,几乎不可能确定对我们的预测影响最大的变量。此时,我们需要使用降维算法,降维的过程中也可能需要用到其他算法,例如借用随机森林,决策树来识别最重要的变量。

它将数据映射为空间中的点,使得不同类别的点可以被尽可能宽的间隔分隔开,对于待预测类别的数据,先将其映射至同一空间,并根据它落在间隔的哪一侧来得到对应的类别。

主成分分析(Principal Component Analysis,PCA)

一种常用的降维技术,顾名思义,PCA帮助我们找出数据的主要成分,主成分基本上是线性不相关的向量,用选出的k个主成分来表示数据,来达到降维的目的。具体原理参考:如何通俗易懂地讲解什么是 PCA 主成分分析?- 马同学的回答 – 知乎,下面给出代码实现。

import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
# PCA
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# 1. 准备数据
pca_data=load_iris()
pca_X_data=pca_data.datapca_y_data=pca_data.target
# 2. 训练模型, 维度为2
pca_model=PCA(n_components=2)  
# 3. 降维
reduced_X=pca_model.fit_transform(pca_X_data)
# 4. 可视化
red_x,red_y=[],[]blue_x,blue_y=[],[]green_x,green_y=[],[]
for i in range(len(reduced_X)): if pca_y_data[i] ==0:  red_x.append(reduced_X[i][0])  red_y.append(reduced_X[i][1]) elif pca_y_data[i]==1:  blue_x.append(reduced_X[i][0])  blue_y.append(reduced_X[i][1]) else:  green_x.append(reduced_X[i][0])  green_y.append(reduced_X[i][1])
plt.figure('PCA')plt.title('PCA')
plt.scatter(red_x,red_y,c='r')plt.scatter(blue_x,blue_y,c='b')
plt.scatter(green_x,green_y,c='g')
plt.show()

10. 梯度增强算法 Gradient Boosting

        梯度增强算法(Gradient Boosting)使用多个弱算法来创建更强大的精确算法。它与使用单个估计量不同,而是使用多个估计量创建一个更稳定和更健壮的算法。梯度增强算法有几种:

XGBoost  — 使用线性和树算法

LightGBM  — 只使用基于树的算法

梯度增强算法的特点是精度较高。此外,LightGBM 算法具有令人难以置信的高性能。

Boosting 是一种试图利用大量弱分类器创建一个强分类器的集成技术。要实现 Boosting 方法,首先你需要利用训练数据构建一个模型,然后创建第二个模型(它企图修正第一个模型的误差)。直到最后模型能够对训练集进行完美地预测或加入的模型数量已达上限,我们才停止加入新的模型。

AdaBoost 是第一个为二分类问题开发的真正成功的 Boosting 算法。它是人们入门理解 Boosting 的最佳起点。当下的 Boosting 方法建立在 AdaBoost 基础之上,最著名的就是随机梯度提升机。

AdaBoost 使用浅层决策树。在创建第一棵树之后,使用该树在每个训练实例上的性能来衡量下一棵树应该对每个训练实例赋予多少权重。难以预测的训练数据权重会增大,而易于预测的实例权重会减小。模型是一个接一个依次创建的,每个模型都会更新训练实例权重,影响序列中下一棵树的学习。在构建所有的树之后,我们就可以对新的数据执行预测,并根据每棵树在训练数据上的准确率来对其性能进行加权。

————————————————

参考:

机器学习十大算法!入门看这个就够了~_横扫bug的博客-CSDN博客_机器学习算法

https://baijiahao.baidu.com/s?id=1712547694343035245&wfr=spider&for=pc

今天的文章机器学习常用十大算法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10384.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注