机器学习入门(未整理)

  • 林轩田机器学习资源汇总:https://github.com/RedstoneWill/NTU-HsuanTienLin-MachineLearning
  • 没有看下去这个视频,主要原因有两个吧:一是我直接想学习有关机器学习的算法,可是这个视频讲了太多理论的东西,目前没有耐心去了解太多理论的内容,也没有必要去了解。我觉得先去了解最直接的内容就可。另外,就因为介绍太多来龙去脉(理论的内容),有点枯燥,涉及到很多公式,不太想看了。打算以后真的有需要去了解这些理论的时候,再回过头来看吧。

机器学习需要做的是:根据输入数据,将它们转换为一个决策面(Decision Surface),简称D.S.

聚类模型

  • 聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。
  • 聚类分析可以作为数据分析算法中其他分析算法的一个预处理步骤,如异常值识别、连续性特征离散化等。
  • 聚类模型可以将无类标记的数据聚集为多个簇,视为一类,是一种非监督的学习算法。
  • 聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将它们划分为若干组,划分的原则是组内(内部)距离最小化,而组间(外部)距离最大化。如下图。
    在这里插入图片描述
  • 聚类算法类别:
    在这里插入图片描述

分类模型

  • 分类是指构造一个分类模型,输入样本的特征值,输出对应的类别,将每个样本映射到预先定义好的类别。
  • 分类模型建立在已有类标记的数据集上,属于有监督学习。
  • 在实际应用场景中,分类算法被用于行为分析、物品识别、图像检测等。
  • 在数据分析领域,分类算法有很多,其原理千差万别,有基于样本距离的最近邻算法,有基于特征信息熵的决策树,有基于bagging的随机森林,有基于boosting的梯度提升分类树,其实现过程相差不大,如下图。
    在这里插入图片描述

回归模型

  • 回归算法的实现过程与分类算法类似,原理相差不大。
  • 分类和回归的主要区别在于,分类算法的标签是离散的,但是回归算法的标签是连续的。
  • 回归算法在交通、物流、社交网络和金融领域都能发挥巨大作用。
  • 按照研究方法划分,回归分析的研究范围大致如下:
    在这里插入图片描述
  • 常用的回归模型如下:

在这里插入图片描述
在这里插入图片描述

机器学习的几种方式

在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。

有监督学习

有类标记。
如分类模型。

无监督学习

无类标记。
如聚类模型

半监督学习

一部分数据有类标记,一部分数据无类标记。

强化学习

在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式。在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)。

在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。 而强化学习更多的应用在机器人控制及其他需要进行系统控制的领域。

朴素贝叶斯(Naive Bayes)

  • 朴素贝叶斯(Naive Bayes):一个常用的寻找决策面的算法。
  • 关于贝叶斯的理解,可以看这里:http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html
  • 在Python中,NB位于scikit-learn库(缩写为sklearn)中, 我们要学习的是高斯朴素贝叶斯(GaussianNB,官网:https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.GaussianNB.html#sklearn.naive_bayes.GaussianNB),它的算法如下:
    在这里插入图片描述
  • 算法说明:
  1. 创建分类器(classifier)
  2. fit(X, Y) 【X表示特征,Y表示标签】:进行拟合/“训练”(在这里我们就要给出训练数据了,clf分类器会学习各种模式,从而进一步完善其自身,以更好地将进行后面的新数据的预测工作)
  3. 给予新的数据点,让已完成训练的分类器进行一些预测。我们想知道的是,这个特征对应的标签应该是什么。
  • Tips:永远保留数据集中大约10%的数据,将其用作测试集(90%作为了训练集,用来训练分类器),通过这些数据就能够更好的了解分类器在学习数据模式方面的进展。在写报告,或是向上司、客户汇报结果时,请使用测试集的结果,这样能更好、更客观的展示在利用训练集进行分类器训练时的表现。

  • 朴素贝叶斯特殊的一点在于,这种算法非常适合文本分类。在处理文本时,常见的做法是将每个单词看作一个特征,这样就会有大量的特征。此算法的相对简单性和朴素贝叶斯独立特征的这一假设,使其能够出色完成文本的分类。

支持向量机(Support Vector Machines)

  • SVM是一种算法,简单来说,它用来寻找两类数据之间的分隔线(通常称为超平面 Hyperplane)。支持向量机的核心是它能最大程度地提升结果的稳定性
  • 一个重要概念——间隔(margin):间隔线最大化了与左右两分类最近点的距离,这一距离称为间隔。【支持向量机,就是可以返回 margin最大的分隔直线的一种分类算法。这一分隔直线就作为决策面,是SVM要寻找的最优解。这个最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为”支持向量”。】
    在这里插入图片描述
  • 算法:
from sklearn import svm
X = [[0, 0], [1, 1]]
y = [0, 1]
clf = svm.SVC(gamma='scale') # 创建一个分类器
clf.fit(X, y)  # 使用训练特征和训练标签进行拟合
clf.predict([[2., 2.]]) # 进行预测(根据特征预测出标签,所以此处参数是一个训练特征,据此得出训练标签)
  • 核函数:有一种函数,它们接收低维度的输入空间或特征空间,并将其映射到高维度空间。从而使得本来不可以线性分割的内容变为可线性分隔。这类函数就叫做核函数。应用核函数技巧(核技巧Kernel Trick),将输入空间从x,y变换到更大的输入空间,再使用支持向量机对数据点进行分类,得到解以后返回原始空间。这样就能得到一个非线性分隔。这是SVM的一个重要优点(实现非线性分隔对数据集进行分类)。图示:
    在这里插入图片描述
  • SVM算法的参数的讨论:
  1. kernel参数
    线性函数 linear kernel
    径向基函数 rbf kernel
  2. C参数
    在光滑的决策边界以及尽可能正确分类所有训练点两者之间进行平衡。

Q:假设有一个很大的C值,这意味着决策边界会比较光滑还是被正确分类的训练点会更多?
A:C值越大,就能对更多的训练点进行正确分类,即意味着决策变愈加曲折,即更复杂的决策边界——它可以弯曲绕过单独的数据点,尽可能让所有训练点的分类都正确(对应下图中绿色分界线)。
在这里插入图片描述

  • 你希望决策边界的形状接近于直线的程度有多少?你希望如何平衡光滑决策边界和训练点正确分类这两者?这些是机器学习的很关键的灵活部分。
  1. gamma参数
  • 过拟合(Over-fitting):SVM算法产生的决策边界过于复杂的情景(如下图,过拟合的结局使得运行结果是黑色线,而不是绿色直线作为决策边界)。在机器学习中,我们要避免过拟合。
    在这里插入图片描述
  • 控制过拟合的方法之一就是调整算法中的参数:kernel、C、gamma都会对其有所影响,改变这些参数的值,就可以或多或少的改善过拟合的状况。机器学习的艺术性之一,就在于调节这些参数,从而避免过度拟合你的数据。
  • 但是,我们将学习可以自动检测过度拟合的一个方法。
  • 使用SVM的场景:对于具有明显的分隔边界的复杂数据,SVM的表现十分出色。但是对于海量数据,它的表现不太好,因为在这种规模的数据集中,训练时间与数据量的三次方成正比。对于数据集噪声过大情况(即类之间重叠较多),支持向量机的效果也不太好,因为在噪声过多时SVM容易出现过拟合现象,所以如果类之间的重叠较多,且需要将不同类分隔开时,你需要考虑独立证据,此时NV更有效。【透彻理解SVM:https://discussions.youdaxue.com/t/topic/6360】

  • 下面讨论求解决策面这一过程(称之为最优化):

参考:https://blog.csdn.net/c406495762/article/details/78072313#commentBox


一个最优化问题通常有两个基本的因素:

  • 目标函数:你希望什么东西的什么指标达到最好;
  • 优化对象:你期望通过改变哪些因素来使你的目标函数达到最优。

在线性SVM算法中,目标函数显然就是那个”分类间隔”,而优化对象则是决策面。所以要对SVM问题进行数学建模,首先要对上述两个对象(”分类间隔”和”决策面”)进行数学描述。按照一般的思维习惯,我们先描述决策面:

发布了53 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jy_z11121/article/details/102163942