初入机器学习


前言


提示:以下是本篇文章正文内容

一、机器学习定义

Arthur Samuel:

在进行特定编程的情况下,给予计算机学习能力的领域

Tom Mitchell:

一个程序被认为能从经验 E 中学习,解决任务 T,达到性能度量值
P,当且仅当,有了经验 E 后,经过 P 评判,程序在处理 T 时的性能有所提升

eg:假设您的电子邮件程序会观察收到的邮件是否被你标记为垃圾邮件。 在这种 Email 客户端中, 你点击“垃圾邮件”按钮,报告某些 Email 为垃圾邮件,不会影响别的邮件。基于被标记为垃圾的邮件,您的电子邮件程序能更好地学习如何过滤垃圾邮件。请问,在这个设定中,任务 T,E, P 是什么?

答案显然,任务T是分类邮件,是否为垃圾邮件;E: 观察你是否将邮件标记为垃圾邮件; P:正确归类邮件的比例。

机器学习主要分为:

(1)督促学习:线性回归,决策树
(2)无督促学习:聚类
(3)其他:强化xuex

二、督促学习

先给出定义,后面做解释,监督学习:指给学习算法一个数据集,这个数据集由“正确答案”组成,监督学习的特点:学习数据是有标注的

eg:经房价预测案例,它的数据集中数据样本不仅给出了各自的属性(特征)值,还给出了具体的房价大小,房价的数值就是所谓的标注,也就是需要预测的属性,模型从带有标注的数据中学习,随后对新的数据预测其标值。如下图所示是房价预测的一个示例
在这里插入图片描述
在这里插入图片描述
红色的×表示已知的一组带有标注的数据,要从这些数据中学习得一种模型,使得后续预测的值比较真实,如红色和蓝色的线,当房屋面积为750,可以预测其房价。

我们应用学习算法,可以在这组数据拟合一条直线,根据这条线我们可以推测出,这套房子可能卖$150,当然这不是唯一的算法; 我们也可以用二次方程去拟合可能效果会更好。根据二次方程的曲线,我们可以从这个点推测出,这套房子能卖接近$200。

但是那个学习算法好一些呢? 后面会解答

前面说了,监督学习指的就是给学习算法一个数据集,这个数据集由“正确答案”组成。在房价的例子中,我们给了一系列房子的数据,给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的正确答案

房价预测是一个回归问题,就是预测值是连续值,此处房价是一个连续值,所以是一个回归问题。

若预测值是离散的,则被称为分类问题,如上述提到的邮件分类,预测值只有垃圾邮件和正常邮件两个值

eg: 通过查看病历来推测乳腺癌良性与否
在这里插入图片描述
在数据集中,横轴表示肿瘤的大小,纵轴上,1:恶性肿瘤 和,0 :不是恶性肿瘤;

现在有5个良性肿瘤样本,在 1 的位置有 5 个恶性肿瘤样本,假设某个人检查出乳腺肿瘤,并且它的肿瘤的大小如红色箭头所指处,那么机器学习的问题就在于:能否估算出肿瘤是恶性的或是良性的概率。这是一个分类问题,因为推测出是离散的输出值: 0 或 1 良性或恶性

往往是通过多个属性或者特征进行学习,还可能通过细胞尺寸均匀度、细胞形状均匀度、患者年龄等许多属性来进行学习,即使有无限多种特征都可以处理
在这里插入图片描述
如图,总共 5 种不同的特征,坐标轴上的两种和右边的 3 种

小结:
(1)监督学习,其基本思想是,我们数据集中的每个样本都有相应的“正确答案”,然后根据这些样本作出预测, 就像房价和肿瘤的例子中做的那样

(2)回归问题,即通过回归来推出一个连续的输出;分类问题,其目标是推出一组离散的结果

三、无监督学习

对于监督学习来说,数据集中每条数据都已经标明是阴性或阳性,即是良性或恶性肿瘤。所以,对于监督学习里的每条数据,我们已经清楚地知道,训练集对应的正确答案,是良性或恶性

在无监督学习中,已知的数据,但是不同于监督学习的数据集,即无监督学习中没有任何的标签或者是有相同的标签所以我们已知数据集,却不知如何处理,也未告知每个数据点是什么,别的都不知道,就是一个数据集
在这里插入图片描述

能从数据中找到某种结构吗?针对数据集,无监督学习就能判断出数据有两个不同的聚集簇。这是一个,那是另一个,二者不同。无监督学习算法可能会把这些数据分成两个不同的簇。所以叫做聚类算法

eg1:在谷歌新闻中,谷歌新闻每天都在收集非常多的网络的新闻内容,
它再将这些新闻分组,组成有关联的新闻。谷歌新闻做的就是搜索非常多的新闻事件,自动地把它们聚类到一起。这些新闻事件全是同一主题的,会显示到一起

eg2: 在基因学,一个 DNA 微观数据,输入一组不同个体,对其中的每个个体,分析出它们是否有一个特定的基因
在这里插入图片描述
要分析多少特定基因已经表达,这些颜色展示了相应的程度,即不
同的个体是否有着一个特定的基因。我们能做的就是运行一个聚类算法,把个体聚类到不同的类或不同类型的组

因为我们没有提前告知算法一些信息,比如,这是第一类的人,那些是第二类的人,还有第三类…我们只知道有一堆数据,不知道数据里面有什么,也不知道谁是什么类型,甚至不知道人们有哪些不同的类型,这些类
型又是什么

但能自动地找到数据中的结构吗?就是说你要自动地聚类那些个体到各个类,我没法提前知道哪些是哪些,因为我们没有给算法正确答案来回应数据集中的数据,所以这就是无监督学习

eg3: 鸡尾酒算法
在一个只有两个人的鸡尾酒宴中,他俩同时都在说话,放两个麦克风在房间中,因为这些麦克风在两个地方,离说话人的距离不同每个麦克风记录下不同的声音,虽然是同样的两个说话人。听起来像是两份录音被叠加到一起,或是被归结到一起,产生了我们现在的这些录音。该算法会区分出两个音频资源,并可以合成或合并成之前的录音

算法实现:

[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’);


总结

提示:这里对文章进行总结:

Guess you like

Origin blog.csdn.net/qq_53144843/article/details/121629594