机器学习是什么?
机器学习:让机器帮助人类做一些大规模的数据识别、分拣、规律总结等人类做起来比价花时间的事情。
机器:机器按照人类设定的规则执行。
如垃圾邮件的处理:人类设定好垃圾邮件的判断条件,机器来进行区分。
机器学习:机器按照自己设定的规则执行。
如垃圾邮件的处理:人类将大批的垃圾邮件告诉机器,机器来总结规律,自己制定垃圾邮件的判断条件,然后才进行区分。
在这个过程中,这个机器称为分类器
,给与分类器的大量标注为垃圾邮件的邮件,称为训练样本
。分类器对垃圾邮件样本进行统计和归纳的过程称为训练
。总结出的判断条件称为分类模型
。我们还会拿其他一些“普通邮件”和“垃圾邮件”给予分类器,让它尝试根据刚刚总结好的分类模型进行分类,看看是否正确,这个步骤称为验证
。这个过程主要是为了验证这个分类模型是否能够迁移。这之后,还会使用一定量的“普通邮件”和“垃圾邮件”去测试
这个模型的识别能力,看看是不是在我们业务允许的范围内。这是一个基本完整的“有监督学习”的学习过程。
其他的有监督学习的场景也极为相似,都是基于训练和使用验证数据集验证。这个过程中,机器是自己总结出的分类规则,这个一个非常形象的“机器学习”过程,它在这个过程中学会了怎样正确地区分事物。
机器学习从学习的种类来说分为两种:有监督学习和无监督学习。
无监督学习:人们在获得训练的向量数据后,在没有标签的情况下尝试找出其内部蕴含关系。这个过程中使用者除了可能要设置一些必要的超参数,不用对这些样本做任何的标记甚至是过程干预。
有监督学习:每一个样本都有着明确的标签,最后我们只是要总结这些训练样本向量与标签的映射关系。
聚类
聚类是一种典型的无监督学习,是把物理对象或抽象对象的集合分组为由彼此类似的对象组成的多个类的分析过程。
机器学习的算法的来源其实都是人类自身的思考方式,聚类就是我们人类在认知事物时归纳归类的方法。
比如我们小时候认识了一只猴子,以后再看到类似的动物,我们也能一眼就认出它是猴子,即使它们的毛色、体态都不一样。人类天生具备这种归纳和总结的能力,能够把认知的相似事物放到一起作为一类事物,它们之间可以有所不同,但是有一个我们心里的“限度”,在这个限度内,都算作一类。
比较常用的聚类算法有 K-Means、DBSCAN 几种,基本思路都是利用每个向量之间的“距离”——空间中的欧式距离或曼哈顿距离,从远近判断是否从属于同一类别。如下图所示,160 和 162 相距更近,所以它们就属于同一类。
在做聚类学习时,每种算法都有相应的计算原则,可以把输入的每种看上去彼此相近的向量分在一个群组中。下一步,通常更有针对性地去研究每一组聚在一起的对象所拥有的的共性及那些远离各个群组的孤立点——这种孤立点在刑侦、特殊疾病排查等方面都有应用。
在这个过程中,从获得具体的样本向量,到得到聚类结果,人们是不用进行干预的,这就是“非监督”的由来。
回归
回归是一种“由果索因”的归纳思想——当我看到大量事实所呈现的样态,我推断出原因或客观蕴含的关系;但我看到大量观测而来的向量(数字)是某种样态,我设计一种假说来描述它们之间蕴含的关系。
常用的回归有两种:线性回归和非线性回归。
线性回归:在观察和归纳样本的过冲中认为向量和最终的函数值呈线性的关系。而后设计这种关系为
y = f(x) = wx + b
这里的 w 和 x 分别是 1xn 和 nx1 的矩阵,wx 指的是两个矩阵的内积。机器要做的,就是找出最符合这种关系的 w 值和 b 值。
在传统的机器学习算法中,都要把获取到的数据分为训练集和验证集。用训练集来做训练,归纳关系;用验证集来做验证避免过拟合现象。一般为三七分或二八分,训练集为多的那一部分。
非线性回归:在观察和归纳样本的过冲中认为向量和最终的函数值呈非线性的关系。非线性回归中用得最多的是逻辑回归。它和线性回归都叫做回归,但看上去更像是分类。在这种模型中观察者假设的前提是 y 只有两种值:一种是 1,一种是 0,或者说“是”或“否”的这种判断。公式为:
这里面 wx+b 和前面线性回归汇总所说的 wx+b 是一个概念,都指一个 w 矩阵和 x 做了矩阵内积再和偏置 b 做了加和。机器要做的,还是找出最符合这种关系的 w 值和 b 值。
它训练的过程和普通线性回归是一样的,只不过损失函数的形式不同。
分类
分类是机器学习中使用最多的一种算法,也叫做“分类器”。是一种“有监督学习”。
如我们给机器一张老虎的图片,机器返回给我们“老虎”这样的描述,给机器一张飞机的图片,机器返回给我们“飞机”这样的描述,这就是一个基本的分类过程。
一个分类器模型在它初始化的时候是不具备这种功能的,只有通过给予它大量的图片及图片所对应的标签分类,让它自己进行充分的总结和归纳,才能具备这样的能力。
分类器的输出与非线性回归一样,是一种离散的变量。
分类器的判读是否合理由两个指标确认,召回率和精确率——召回率指的是检索出的相关样本和样本库中所有相关样本的比率,衡量的是分类器的查全率。精确率是检索出的相关样本数与检索出的样本总数的比率,衡量的是分类器的查准率。
比如 1000 张图片中,有 200 张猫的图片,机器挑选出了 240 张,其中 180 张是正确的,20 张是错误的,那么它的召回率就是 180/200 = 90%,精确率就是 180/240 = 75%。
分类的训练过程与回归的训练过程一样,都是极为套路化的程序。
- 输入样本和分类标签。
- 建立映射假说的某个 y=f(x) 的模型。
- 求解出全局的损失函数 Loss 和待定系数 w 的映射关系,Loss = g(w)。
- 通过迭代优化逐步降低 Loss,最终找到一个 w 能使召回率和精确率满足当前场景需要。这里尤其指在验证数据集上的表现。
聚类和分类的区别
分类分为有监督,无监督,半监督,分别对应有无标签为:有-无-有一点。
有监督就是样本数据给定所有标签,然后去训练分类器,这是能达到最高精度的一种。要分的类是已知的。
无监督也就是通常意义上的聚类,只给数据,不给标签。要分的类是未知的。
半监督,绝大多数数据不给标签,然后给一小部分数据贴上标签,再送分类器里面,用有监督的方式解决偏聚类问题。