机器学习小记

什么是机器学习?每当我们使用Google进行搜索,它总是能给出令人满意的结果,那是因为它的机器学习软件已经学会了如何给网页排序;当我们浏览邮件时,邮箱会帮我们自动过滤掉垃圾邮件因为它学会了如何区别垃圾邮件和非垃圾邮件;这都是机器学习,它是使电脑学习的一种科学。
机器学习的一些例子:
1、数据挖掘:
随着网络和自动化技术的快速发展,我们拥有了前所未有的大量的数据集。很多公司正在收集网络点击数据(点击流数据),并试图用机器学习算法来挖掘数据,以更好的理解用户并更好地为用户服务;随着自动化技术的发展,现在我们大多使用电子医疗记录,如果能将医疗记录转化为医疗知识,我们就能更好的了解疾病并最终治疗疾病;而在计算生物学领域,生物学家借助电子自动化收集了大量有关基因序列、DNA序列的数据,并通过机器学习的算法深入理解人类基因组。
2、难以手工编程的应用:
比如一些机器应用并不能或者很难通过手工编程实现,就像自动直升机,写出一个让自动直升机自主飞行的程序几乎是不可能的,唯一有效的方法是让电脑自己学会如何驾驶直升机。
还有自然语言处理和计算机视觉,这些领域都是试图通过人工智能来理解人类的语言和图像。
3、用户自定制化程序:
当我们使用淘宝、优酷、腾讯等应用时,它总会根据我们的喜好来推荐一些商品或视频,这也是机器学习的应用之一
机器学习基本概念:
监督学习(supervise learning):
给机器一些数据让其分析学习,使其具有分析预测其他数据的能力。
无监督学习(unsupervise learning):
根据未被标记的数据集寻找数据规律并分类。

两者区别:
1、有监督学习必须有训练集和测试样本,且必须给待识别样品贴上标签。无监督学习则无训练集无测试样本,只分析数据本身,预先无标签若发现数据集呈某种聚集性,则按其自然的聚集性分类。
2、无监督学习旨在寻找数据集中的规律,这种规律性不一定要达到划分数据集的目的。(所以无监督学习没有测试集)
数据集、训练集、测试集区别与联系:
数据集可分为训练集和测试集,训练集是用于训练模型的子集,测试集是用与测试训练后模型的的子集。
独立同分布:
在随机过程中,任何时刻的取值都为随机变量,如果这些随机变量服从同一分布(x1、x2具有相同的分布形状和想同的分布参数)并且相互独立(x1的取值不影响x2,x2的取值也不影响x1,则x1、x2相互独立),那么这些变量独立同分布。
损失函数:
定义在单个样本上,算的是一个样本的误差。
代价函数(cost function):
定义在整个训练集上,是所有样本的平均误差,即损失函数的平均数。
梯度下降算法:

机器学习小记

寻找使得误差最小的模型函数的参数,但在一个同时存在多个极小值的函数中也有可能因为起始位置的不同最终导致找到的最小误差不同,比如:

机器学习小记

以下是相关公式(一元公式):

机器学习小记

有关 α (学习速率)

当α过小时整个函数向最低点移动的会很慢,如下图
机器学习小记
而当α 过大时,梯度下降法可能会越过最低点,甚至可能无法收敛:机器学习小记
有关下降速率
由公式可以知道越靠近最低点,曲线斜率越小,x轴坐标改变的频率也就越小,相应的也就越不容易越过最低点。

当影响因素不只有一个的时候,这个时候就要引入多元的代价函数和梯度下降算法。

k-近邻算法:
k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。它的工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。
比如我们要判断一个电影是爱情片还是动作片时,我们可以根据多年看片经验进行判断,而k-近邻算法则会通过该电影中打斗镜头和接吻镜头的多少来判断。(但仍然有一个缺陷就是,如果一个电影有50个接吻镜头和50个打斗镜头,依照我们的经验可能会判断这是一个爱情动作片[手动滑稽],但k-近邻算法则可能判断这是动作片,有可能判断为爱情片,但绝不会产生爱情动作片这个结果。)
具体实例如下图:机器学习小记
距离度量:
比如说我们创建一个有关接吻镜头和打斗镜头的散点图,任给一个点如何判断其所属类别呢?
机器学习小记
如上图,红色点应属什么类别呢?
我们可以从散点图大致推断,这个红色圆点标记的电影可能属于动作片,因为距离已知的那两个动作片的圆点更近。k-近邻算法用什么方法进行判断呢?距离度量。
通过计算,我们可以得到如下结果:

(101,20)->动作片(108,5)的距离约为16.55
(101,20)->动作片(115,8)的距离约为18.44
(101,20)->爱情片(5,89)的距离约为118.22
(101,20)->爱情片(1,101)的距离约为128.69
通过计算可知,红色圆点标记的电影到动作片 (108,5)的距离最近,为16.55。如果算法直接根据这个结果,判断该红色圆点标记的电影为动作片,这个算法就是最近邻算法,而非k-近邻算法。那么k-邻近算法是什么呢?k-近邻算法步骤如下:

1、计算已知类别数据集中的点与当前点之间的距离;
2、按照距离递增次序排序;
3、选取与当前点距离最小的k个点;
4、确定前k个点所在类别的出现频率;
5、返回前k个点所出现频率最高的类别作为当前点的预测分类。

假设k值取3(k一般取值小于等于20),则距离红点距离最近的有 动作片(108,5)、动作片(115,8)和爱情片(5,89),计算可知为动作片的概率是2/3,爱情片的概率是1/3,最后会显示为动作片。但有些人可能会说如果我取k=4的话那概率不就变成1/2了吗,那又该怎么判断呢?其实这个例子只是用于我们对k-近邻算法的理解,真正去使用k-近邻算法的数据一般都会是比较庞大的数据集,偶然性很小。

有关k近邻算法的概念、举例大多借鉴于(本博客仅为个人学习理解所用):
作者:Jack-Cui
来源:CSDN
原文:https://blog.csdn.net/c406495762/article/details/75172850/

相关文章: