1、什么是机器学习?
机器学习的概念:
- 传统上如果我们想让计算机工作,我们给它一串指令,然后它遵照这个指令一步步执行下去。有因有果,非常明确。这样的方式计算机是无法执行固定流程之外的东西的 。
- 但是现实生活中,有很多无法被量化的东西,比如约会的时候要不要提前到,西瓜是否好吃,要不要录用一个人,人类在做事情的时候,解决问题的时候,大多数是懂得变通,不会那么死板的 。
- 那么一个人是如何实现变通的呢?答案就是学习。维基百科对学习的定义是:学习是通过外界教授或从自身经验提高能力的过程。 所以人在解决问题的过程中,会使用已有的经验 ,以及通过经验得到的某种规律 ,并用此来预测可能会发生的事情 ,以做出相应调整 。
- 那么机器学习就是,给机器经验(数据),通过某种算法(学习),让机器得到对应的规律,来完成一些相对具有变通性的无法确定描述的任务(手写字体识别,广告推荐,区分猫狗)
机器学习、人工智能、深度学习的关系:
——人工智能包含机器学习,机器学习包含深度学习。
- 机器学习的定义:机器学习研究和构建的是一种特殊算法(而非某一个特定的算法),能够让计算机自己在数据中学习从而进行预测。——Arthur Samuel
- 机器学习不是某种具体的算法,而是很多算法的统称。机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括支持向量机,决策树,K近邻,贝叶斯等等。
- 深度学习的灵感来自大脑的结构,即许多神经元的互连。人工神经网络(ANN)是模拟大脑生物结构的算法。
- 不管是机器学习还是深度学习,都属于人工智能(AI)。人工智能中还包括了自然语言处理(NLP), 计算机视觉(CV)等等多个领域。
机器学习的原理(概念):
——教小朋友区分猫猫和狗狗
- 首先给小朋友很多猫猫和狗狗的图片(数据训练集),告诉他哪些是猫哪些是狗(数据标注)。
- 小朋友发现猫猫长的更圆一点,小一点,,狗狗更大一点,颜色更深一点(特征集)。最后总结出了某种规律(模型),可以区别猫猫和狗狗。
2、机器学习的分类
机器学习根据训练方法一般大致可以分为3大类:
- 监督学习
- 非监督学习
- 强化学习
有监督学习:
- 即存在外界知道的学习,比如看到一只动物时,家长主动告诉小朋友这是一只猫,不是一只狗,通过不断的观察和指导(提供了正确答案,即 数据标签 ),小朋友就形成了猫和狗的概念。
- 有监督学习主要包括分类和回归 两大类。分类对应的为有限选择项的标签,比如根据身高体重年龄判断性别,根据图像选择数字。回归对应的标签为数值,比如根据年龄,学历,工作经验预测人的收入,这是一个范围的数值。
- 数据集一般包括训练集和测试集,前者用于训练,后者用于测试。
无监督学习:
- 无监督学习即不提供数据标签。比如小朋友很多次看到猫和狗,虽然并没有被告知是猫还是狗,但是再次看到已经能够区分他们了,这就是聚类。
- 无监督学习只有聚类 一种。聚类在实际应用场景中一般价值更高,因为大多数天然数据并不包含聚类。
- 半监督学习:结合了有监督学习和无监督学习,例如先通过无监督学习对数据进行聚类,再人工标注,在进行有监督学习。
增强学习:
- 强化学习更接近生物学习的本质,因此有望获得更高的智能。它关注的是智能体如何在环境中采取一系列行为,从而获得最大的累积回报。通过强化学习,一个智能体应该知道在什么状态下应该采取什么行为。
- 最典型的场景就是打游戏,比如Google的AlphaGo下围棋,或者自动跑FlappyBird游戏等。通过在历史数据中归纳和总结经验,在面对新状态时,尽可能使得目标函数做出最优行动。
附:
此外机器学习还有主动学习,迁移学习,集成学习等多种模式。
- 主动学习:边学习边标注
- 迁移学习:从一个域(Domain)迁移(Transfer)到另一个域
- 集成学习:融合多个弱模型形成一个强的模型。
3、机器学习的流程和难点
学习的流程
- 预处理:通过清洗数据,提高数据质量。
数据重塑、缺失值处理(补全、统计为缺失特征) - 特征工程:在整个项目中占60%以上,关系到后期模型的潜力和提升空间。
特征没做好,参数调到老。在已有的特征上生成新的特征,数值、类别 - 特征选择、降维:筛选上面选出来的特征,保留相关性最强的特征,提高性能
基于MIC、Pearson 相关系数、正则化方法、模型,PCA、tSNE - 训练模型、调参:尝试各种学习模型并比较性能,选择最优的。
单模型,多模型融合,集成 - 评估模型:有些模型可能能跑出训练集跑不出测试集。
正确率(Acurracy)、准确值(Pecision)、召回值(Recall)、F 值、AUC
机器学习的两大难点:
- 维度灾难:
高维度的 数据量过大,特征数过多 ,导致模型过于复杂,训练和计算成本无法估计。
但是一些模型低维度能实现很好的性能,在高维度下无法取得很好的效果。
因此实际过程中一般更看重简单的模型,需要再性能和成本之间做出权衡。 - 过拟合:
过拟合指的是模型缺乏泛化能力 :即在训练集上训练的模型,能够在训练集上取得很好的性能,却无法在测试集上跑出合适的性能,
一般来说,模型越复杂,学习能力越强,泛化能力越弱,越容易过拟合 。所以在性能相似的情况下,更青睐简单的模型。比如说身高和体重的关系,如果简单线性模型就能完成任务,那么就尽可能不要使用曲线。
为了防止过拟合,在训练过程中,一般会使用正则化 等方法。正则化指的是,在训练过程中,认为的引入一些误差,从而避免模型过度拟合训练数据中的特征和标签之间的对应关系,而是把注意力更多的放在学习通用而泛化的关系和规律上 。
过拟合往往会把人工智能训练成人工智障,比如扫地机器人不断制造垃圾再扫,比如飞机开局直接坠落,等等奇怪的模型。
(overfitting 过拟合,其实就是机器的sterotype----刻板印象 。看到一个新疆小偷,就把小偷这个属性赋予所有新疆人。三短一长选择最长的,不会蒙就c。)
4、机器学习常见模型及代码实现
机器学习的代码实现:
——使用Python的scikit-learn可以完成机器学习领域的大部分工作。
有监督的学习(分类,回归):
- 线性回归 LR
将每条记录表示为一个m维的向量x,m表示记录的特征向量。
记y=kx+b, y和b为模型输出和偏置向量。训练时根据已有数据调整k和b,对于每一条记录,计算x得出对应的y,并比较y与真实记录的误差,使用梯度下降法对损失函数求导,并根据梯度下降的方向调整模型的参数。 - Logistic回归
在线性回归的基础上,令公式为y = logit(kx+b),其中logit函数对每个输入的向量的每一个值都进行了归一化处理,消除了原本向量x中可能存在的负数,并且让非负向量加起来为1,可以对应每个类别的输出概率。 - 贝叶斯 NB
选择概率最大的分类,各个分类的概率可以通过训练集统计获得。 - K近邻 KNN
为了确定一条记录的标签,可以找出训练记录中距离其最近的K条记录。
如果需要分类,则选出K条记录中出现最多的分类标签。
如果回归,则K条记录加权求和,权重和距离成反比,距离越远权重越小即可。 - 决策树 DT
根据训练集的数据,确定树的结构,每个非叶节点对应的判断条件和叶子节点对应的标签分类。 - 支持向量机 SVM
记录所在点的原始空间,通过一些可选的函数,将原空间变换到另一空间,在新空间里寻找margin 最大的分界面。
无监督的学习(聚类)
- K-Means
初始化中心,不断迭代,EM 算法
将无标注的数据汇聚成K类,使得同一类记录之间特征相似,不同类差异显著。
随机选择K个点作为初始聚类中心化,每轮迭代将记录点分配到对应的聚类中,选择最近的归类。然后根据所有的记录点的位置,修正中心点的位置。
神经网络(有监督-无监督都可)
- 深度学习
将神经元看做一个包含输入,处理,输出的单元。
无数个神经元彼此连接,遵循相似的结构呈现激活或抑制,从而完成神经信号的处理和传递。