监督学习 应用

分类的实际应用

二分类

该算法将输入数据分类到两个可能组中的一个。通常其中一个类表示 “正常/期望” 状态,另一个类表示 “异常/不希望” 状态。二分类的真实应用包括:

垃圾检测

该算法给出了在监督学习阶段标记为 “垃圾邮件” 或 “非垃圾邮件” 的示例电子邮件。稍后,当算法显示新的电子邮件输入时,它会预测邮件是 “垃圾邮件” 还是 “非垃圾邮件”。

流失预测

该算法使用之前已经取消订阅服务的客户的训练数据集。根据训练,该算法根据输入参数预测新客户是否终止订阅。

转化预测

该算法是根据买家数据以及他们是否购买了物品进行训练。然后,根据训练,算法预测新客户是否会进行购买。

用于二分类的主要算法包括逻辑回归和支持向量机。

多级分类

在多级分类中,训练数据集标记为多个可能类中的一个。与二分类不同的是,多类算法使用可分为许多可能类之一的数据进行训练。多级分类的应用程序包括:

  • 人脸分类:根据训练数据,模型对照片进行分类并将其映射到特定人员。在这里需要注意的一点是,可能会有大量的类标签。在这种情况下,就是成千上万的人。
  • 电子邮件分类:多级分类用于将电子邮件分为不同的类别:社交、教育、工作和家庭。
  • 用于多级分类的主要算法是随机森林、朴素贝叶斯、决策树、K 最近邻和梯度提升。

多标签分类

与结果只有一个可能的类的二进制和多级分类不同,多标签输出属于一个或多个类。这意味着相同的输入数据可能会被分类到不同的存储桶中。多标签分类的应用包括:

  • 照片检测:如果照片有多个物体,例如车辆、动物和人物,照片可能属于多个标签。
  • 音频/视频分类:歌曲和视频可能适合各种类型和情绪。多标签分类可用于分配这些多标签。
  • 文本分类:可以根据文章的内容对文章进行分类。

不平衡的分类

这是二分类的一个特殊情况,在训练数据集中存在类不平衡。训练数据中的大多数示例属于一个集合,一小部分属于第二组。不幸的是,大多数机器学习算法在类之间存在相同的分割时效果最佳。例如,假设您的培训数据,您有 10,000 个真实的客户交易,只有 100 笔欺诈性交易。为了平衡准确性,由于数据的不平衡,需要专门的技术。不平衡分类的应用可能是:

  • 欺诈检测:在用于训练的标签数据集中,只有少量输入被标记为欺诈。
  • 医学诊断:在庞大的样本库中,病例阳性的样本可能要少得多。

采用基于成本的方法和基于抽样的方法等专门技术来帮助处理不平衡的分类案例。

回归的实际应用

线性回归

监督学习中的线性回归训练一种算法来查找输入和输出数据之间的线性关系。它是最简单的模型,其中输出表示输出的线性加权组合。线性回归可用于预测连续范围内的值(例如销售额、价格-预测)或将它们分为类别(例如猫、狗-逻辑回归)。在线性回归的训练数据中,提供了输入变量(自变量)和相应的输出变量(因变量)。根据提供的标记输入数据,回归算法计算线性函数中的截距和 x 系数。线性回归的应用可能包括:

预测:线性回归最重要的应用之一是预测。预测可能具有不同的性质。企业使用线性回归来预测销售额或客户的购买行为。它还用于预测经济增长、房地产销售以及石油等商品的价格。根据工资的历史数据,线性回归也用于估计新员工的最佳工资。

逻辑回归

用于确定事件发生的概率。训练数据将有一个自变量,所需的输出将是介于 0 到 1 之间的值。使用逻辑回归训练算法后,它可以根据自变量(输入)的值预测因变量(介于 0 和 1 之间)的值。逻辑回归使用经典的 S 形 sigmoid 函数。在监督学习环境中的逻辑回归中,算法根据提供的训练数据估计 beta 系数值 b0 和 b1。

概率 = e^(b0 + b1 * X)

逻辑回归的应用包括:

  • 确定概率:逻辑回归的主要应用之一是确定事件的可能性。任何事件的概率介于 0 和 1 之间,这就是逻辑函数的输出。机器学习中的逻辑回归算法可用于预测选举结果、自然灾害的概率以及其他此类事件。
  • 分类:尽管逻辑回归使用连续函数,但其中的一些应用仍在分类中。它可以用于图像分离和相关的分类问题。

多项式回归

多项式回归用于不能整齐地融入线性回归的更复杂数据集。算法使用复杂的标签数据集进行训练,这些数据集可能无法很好拟合直线回归。如果这些训练数据与线性回归一起使用,则可能会导致拟合不足,因为算法无法捕获数据的真实趋势。多项式回归允许回归线中的曲率更大,因此可以更好地逼近变量和自变量之间的关系。

偏差和方差是与多项式回归相关的两个主要术语。偏差是通过简化拟合功能而出现的建模错误。方差还指由于使用过度复杂的函数拟合数据而导致的错误。

监督学习的基本步骤

要使用监督机器学习来执行和解决问题,必须:

  • 选择训练数据的类型:监督学习的第一步是确定用于训练的数据的性质。例如,在手写分析的情况下,这可以是单个字母、一个单词或一个句子。
  • 收集和清理训练数据:在此步骤中,训练数据是从各种来源收集的,并进行严格的数据清理。
  • 使用监督学习算法选择模型:根据输入数据的性质和所需用途,选择分类或回归算法。这可能是决策树、SVM、朴素贝叶斯或随机森林。选择算法时的主要考虑因素是训练速度、内存使用率、对新数据预测的准确性以及算法的透明度/可解释性。
  • 训练模型:通过训练数据的多次迭代来微调拟合函数,以提高准确性和预测速度。
  • 进行预测并评估模型:一旦拟合函数令人满意,就可以为算法提供新的数据集来进行新的预测。

优化和重新训练模型:数据衰减是机器学习的自然组成部分。因此,必须使用更新的数据定期重新训练模型以确保准确性。

欢迎关注我们的微信公众号“人工智能LeadAI”(ID:atleadai)

记录一波监督学习算法的应用场景和优缺点。

高斯朴素贝叶斯

场景:该模型常用于性别分类(https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Sex_classification),即通过一些测量的特征,包括身高、体重、脚的尺寸,判定一个人是男性还是女性。

优点:这个模型的优势是处理连续数据,特别当数据是高斯分布时,有一个很好的表现。处理连续数据数值问题的另一种常用技术是通过离散化连续数值的方法。通常,当训练样本数量较少或者是精确的分布已知时,通过概率分布的方法是一种更好的选择。在大量样本的情形下离散化的方法表现最优,因为大量的样本可以学习到数据的分布。

缺点:由于高斯朴素贝叶斯使用的是概率分布估计的方法,不合适在大数据集上应用,因为容易出现欠拟合,在数据分布不准确时或数据样本很大时,表现很差。

决策树

场景:百度到一个相亲用决策树的应用,每个节点是一个评判标准,最后决定是否要嫁/娶。

优点:决策过程接近人的思维习惯,模型容易理解。

缺点:决策树学习方法的准确率不如其他模型,不支持在线学习,有新样本来的时候需要重建决策树,容易产生过拟合现象。(http://m.blog.csdn.net/article/details?id=47616255

KNN

场景:KNN的应用有分类未知案例的项目(摘自百度百科)。

优点:无需估计参数,简单,易于理解。特别适合于多分类问题(multi-modal,对象具有多个类别标签), KNN比SVM的表现要好(svm更适合二分类)。

缺点:当有偏斜类的情况下,由于算法只计算最近的k个样本,假设小样本总数小于k/2,即使都很近,也会分错。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。

集成学习之AdaBoost

场景:人脸检测,AdaBoost以弱学习器作为基分类器,并且输入数据,使其通过权重向量进行加权,第一次迭代时所有数据等权重,在后续迭代中,前次迭代分错的数据权重会增大。

优点:它有错误调节能力,分类精度高;在Adaboost的框架下可以使用各种回归分类模型来构建弱学习器,非常灵活;作为简单的二元分类器时,构造简单,结果可理解;不容易发生过拟合。

缺点:对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

SVM

场景:进行文本的分类

优点:在解决小样本、非线性以及高维模式识别中表现出许多特有的优势,对于非线性的分类问题,可以通过核函数把原来低维的空间中线性不可分的问题映射到高维,变成线性可分的问题进而得以解决。同样,也可以采用SMO的方式,将分解的思维推向极致,用SVM来处理多分类的问题。

缺点:在处理数据上面的时间较慢,复杂度较高,在处理多分类的问题上面存在着不足,还需要在二分类的基础上自己构造多分类相关的算法,代价比较大。

随机梯度下降分类器(SGDC)

场景:图片分类。

优点:普通的梯度下降算法在更新回归系数时要遍历整个数据集,是一种批处理方法,这样训练数据特别忙庞大时,可能出现收敛过程可能非常慢、不能保证找到全局最小值这样的问题。而随机梯度下降分类器能够更好地处理上述问题,更能避免进入局部极小值中。SGDC处理大规模问题表现比较好。

缺点:不太适合用于高精度问题,当处理高精度问题时它的表现很差。

Logistic回归

场景:主要用于危险因素探索(摘自百度百科)

优点:分类时计算量非常小,速度很快,易于理解和实现。他是一个单调上升的函数,具有良好的连续性,不存在不连续点。

缺点:当特征空间很大时,逻辑回归的性能不是很好;容易欠拟合,一般准确度不太高;不能很好地处理大量多类特征或变量;对于非线性特征,需要进行转换;只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分。

​什么是监督学习?

监督学习是机器学习的子集,监督学习会对机器学习模型的输入数据进行标记,并对其进行练习。因此,监督模型能最大限度地预测模型的输出结果。

监督学习背后的概念也可以从现实生活中找到影子,例如老师给孩子做辅导。假设老师要教孩子认识猫、狗的图像。她/他将通过不断地向孩子展示猫或狗的图像来辅导孩子,同时告知孩子图像是狗还是猫。

展示和告知图像的过程可以被认为是标记数据,机器学习模型训练过程中,会被告知哪些数据属于哪个类别。

监督学习有什么用?监督学习可用于回归和分类问题。分类模型允许算法确定给定数据属于哪个组别。示例可能包括 True/False、Dog/Cat 等。

由于回归模型能够根据历史数据预测将来的数值,因此它会被用于预测员工的工资或房地产的售价。

在本文中,我们将列出一些用于监督学习的常见算法,以及关于此类算法的实用教程。

线性回归

线性回归是一种监督学习算法,它根据给定的输入值预测输出值。当目标(输出)变量返回一个连续值时,使用线性回归。

线性算法主要有两种类型,简单线性回归和多元线性回归。

简单线性回归仅使用一个独立(输入)变量。一个例子是通过给定的身高来预测孩子的年龄。

另一方面,多元线性回归可以使用多个自变量来预测其最终结果。一个例子是根据它的位置、大小、需求等来预测给定房产的价格。

以下是线性回归公式

监督学习 应用

对于 Python的示例,我们将使用线性回归来预测相对于给定 x 值的 y 值。

我们给定的数据集仅包含两列:x 和 y。请注意,y 结果将返回连续值。

下面是给定数据集的截图:

监督学习 应用

使用 Python 的线性回归模型示例

1.导入必要的库

import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns from sklearn
import linear_model from sklearn.model_selection
import train_test_split import os

2. 读取和采样我们的数据集

为了简化数据集,我们抽取了 50 个数据行的样本,并将数据值四舍五入为 2 个有效数字。

请注意,您应该在完成此步骤之前导入给定的数据集。

df = pd.read_csv("../input/random-linear-regression/train.csv") 
df=df.sample(50) df=round(df,2)

3. 过滤 Null 和 Infinite 值

如果数据集包含空值和无限值,则可能会出现错误。因此,我们将使用 clean_dataset 函数来清理这些值的数据集。

def clean_dataset(df):   
assert isinstance(df, pd.DataFrame), "df needs to be a pd.DataFrame"
df.dropna(inplace=True)
indices_to_keep = ~df.isin([np.nan, np.inf, -np.inf]).any(1)
return df[indices_to_keep].astype(np.float64)
df=clean_dataset(df)

4. 选择我们依赖和独立的价值观

请注意,我们将数据转换为​​ DataFrame 格式。​​dataframe 数据类型是一种二维结构,可将我们的数据对齐到行和列中。

5. 拆分数据集

我们将数据集划分为训练和测试部分。选择测试数据集大小为总数据集的 20%。

请注意,通过设置 random_state=1,每次模型运行时,都会发生相同的数据拆分,从而产生完全相同的训练和测试数据集。

这在您想进一步调整模型的情况下很有用。

x_train,  x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=1)

6.建立线性回模型

使用导入的线性回归模型,我们可以在模型中自由使用线性回归算法,绕过我们为给定模型获得的 x 和 y 训练变量。

lm=linear_model.LinearRegression() lm.fit(x_train,y_train)

7. 以分散的方式绘制我们的数据

df.plot(kind="scatter", x="x", y="y")

8. 制我线性回归线

plt.plot(X,lm.predict(X), color="red")

监督学习 应用

蓝点表示数据点,而红线是模型绘制的最佳拟合线性回归线。线性模型算法总是会尝试绘制最佳拟合线以尽可能准确地预测结果。

逻辑回归

与线性回归类似,​​逻辑回归​​根据输入变量预测输出值,两种算法的主要区别在于逻辑回归算法的输出是分类(离散)变量。

对于 Python示例,使用逻辑回归将”分成两个不同的类别/种类。给定的数据集中会包括不同花的多个特征。

模型的目的是将给花识别为Iris-setosa、Iris-versicolor或 Iris-virginica 几个种类

下面是给定数据集的截图

监督学习 应用

使用 Python 的逻辑回归模型示例

1.导入必要的库

import numpy as np 
import pandas as pd from sklearn.model_selection
import train_test_split import warnings warnings.filterwarnings('ignore')

2. 导入数据集

data = pd.read_csv('../input/iris-dataset-logistic-regression/iris.csv')

3. 选择我们依赖和独立的价值观

对于独立 value(x) ,将包括除类型列之外的所有可用列。至于我们的可靠值(y),将只包括类型列。

X = data[['x0','x1','x2','x3','x4']] 
y = data[['type']]

4. 拆分数据集

将数据集分成两部分,80% 用于训练数据集,20% 用于测试数据集。

X_train,X_test,y_train,y_test = train_test_split(X,y, test_size=0.2, random_state=1)

5. 运行逻辑模型

从 linear_model 库中导入整个逻辑回归算法。然后我们可以将 X 和 y 训练数据拟合到逻辑模型中。

from sklearn.linear_model import LogisticRegression 
model = LogisticRegression(random_state = 0)
model.fit(X_train, y_train)

6. 评估我们模型的性能

print(lm.score(x_test, y_test))

返回值为0.9845128775509371,这表明我们模型的高性能。

请注意,随着测试分数的增加,模型的性能也会增加。

7.

import matplotlib.pyplot as plt %matplotlib inline 
plt.plot(range(len(X_test)), pred,'o',c='r')

输出图:

监督学习 应用

在逻辑图中,红点表示给定的数据点。这些点清楚地分为 3 类,Virginica、versicolor 和 setosa 花种。

使用这种技术,逻辑回归模型可以根据花在图表上的位置轻松对花类型进行分类。

支持向量机

​​支持向量机​​( SVM) 算法是另一个著名的监督机器学习模型,由 Vladimir Vapnik 创建,它能够解决分类和回归问题。实际上它更多地被用到解决分类问题。

SVM 算法能够将给定的数据点分成不同的组。算法绘制数据之后,可以绘制最合适的线将数据分成多个类别,从而分析数据之间的关系

如下图所示,绘制的线将数据集完美地分成 2 个不同的组,蓝色和绿色。

监督学习 应用

SVM 模型可以根据图形的维度绘制直线或超平面。行只能用于二维数据集,这意味着只有 2 列的数据集。

如果是多个特征来预测数据集,就需要更高的维度。在数据集超过 2 维的情况下,支持向量机模型将绘制超平面。

在支持向量机 Python 的示例中,将对 3 种不同的花卉类型进行物种分类。我们的自变量包括花的所有特征,而因变量是花所属物种。

花卉品种包括Iris-setosa Iris-versicolorIris-virginica

下面是数据集的截图:

监督学习 应用

使用 Python 的支持向量机模型示例

1.入必要的

import numpy as np 
import pandas as pd from sklearn.model_selection
import train_test_split from sklearn.datasets
import load_iris

2. 定的数据集

请注意,在执行此步骤之前,应该导入数据集。

data = pd.read_csv(‘../input/iris-flower-dataset/IRIS.csv’)

3. 将数据列拆分量和自

将 X 值作为自变量,其中包含除物种列之外的所有列。

变量y仅包含模型预测的物种列。

X = data.drop(‘species’, axis=1) y = data[‘species’]

4. 将数据集拆分为训练测试数据集

将数据集分为两部分,其中我们将 80% 的数据放入训练数据集中,将 20% 放入测试数据集中。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

5.入SVM并运行模型

导入了支持向量机算法。然后,使用上面步骤中收到的 X 和 y 训练数据集运行它。

from sklearn.svm import SVC 
model = SVC( )
model.fit(X_train, y_train)

6. 测试模型的性能

model.score(X_test, y_test)

为了评估模型的性能,将使用 score 函数。在第四步中创建的 X 和 y 测试值输入到 score 方法中。

返回值为0.9666666666667,这表明模型的高性能。

请注意,随着测试分数的增加,模型的性能也会增加。

其他流行的监督机器学习算法

虽然线性、逻辑和 SVM 算法非常可靠,但还提到一些有监督的机器学习算法。

1. 决策

监督学习 应用

​​决策树算法​​是一种有监督的机器学习模型,它利用树状结构进行决策。决策树通常用于分类问题,其中模型可以决定数据集中给定项目所属的组。

请注意,使用的树格式是倒置树的格式。

2. 随机森林

监督学习 应用

被认为是一种更复杂的算法,​​ 随机森林算法​​通过构建大量决策树来实现其最终目标。

意味着同时构建多个决策树,每个决策树都返回自己的结果,然后将其组合以获得更好的结果。

对于分类问题,随机森林模型将生成多个决策树,并根据大多数树预测的分类组对给定对象进行分类。

模型可以修复由单个树引起的过拟合问题同时,随机森林算法也可用于回归,尽管可能导致不良结果。

3. k-最近

监督学习 应用

k最近​​​​(KNN) 算法是一种监督机器学习方法,它将所有给定数据分组到单独的组中。

这种分组基于不同个体之间的共同特征。KNN 算法可用于分类和回归问题。

KNN 的经典示例就是将动物图像分类到不同的组集中。

总结

本文介绍了监督机器学习及其可以解决的两类问题解释了分类和回归问题,给出了每个输出数据类型的一些示例。

详细解释了线性回归是什么以及它是如何工作的,并提供了一个 Python 中的具体示例,它根据独立的 X 变量预测 Y 值。

随后介绍逻辑回归模型并给出了分类模型示例,该示例将给定的图像分类为具体花的种类

对于支持向量机算法,可以用它来预测 3 种不同花种的给定花种。最后列出了其他著名的监督机器学习算法,例如决策树、随机森林和 K 近邻算法。

无论您是为了学、工作还是娱乐阅读本文,我们认为了解这些算法是开始进入机器学习领域的一个开端。

如果您有兴趣并想了解更多关于机器学习领域的信息,我们建议您深入研究此类算法的工作原理以及如何调整此类模型以进一步提高其性能。

译者介绍

崔皓,51CTO社区编辑,资深架构师,拥有18年的软件开发和架构经验,10年分布式架构经验。曾任惠普技术专家。乐于分享,撰写了很多热门技术文章,阅读量超过60万。​​《分布式架构原理与实践》​​作者。

原文标题:Primary Supervised Learning Algorithms Used in Machine Learning,作者:Kevin Vu