这门课能帮助你快速进入人工智能领域,从事工程或者算法工作。
第三部分:有监督学习 I
第四部分:有监督学习 II
第六部分:从机器学习到深度学习
1.AI 技术岗位求职知识储备
2.触类旁通各大模型与算法
3.极简版实例体验实际应用
4.配套数据+代码快速实操上手
数据是我们经过见过的万事万物,而算法则是我们的思辨能力。
01---为什么要学原理和公式推导
功利层面:面试会考、老板会问、同事会质疑
实用层面:优化模型、针对问题实际问题定向建模
真正创造价值的,从来都是解决实际问题的人。
02---学习机器学习原理,改变看待世界的方式
破除迷信、追本溯源、精进看待世界的方法
学习机器学习原理和公式推导,并非只是做一些无聊的数字变换。很可能由此为我们打开一扇窗,让我们从新的角度就看待世界,并为日常决定的思考过程提供更加可量化方法。
03---如何学习“机器学习”
机器学习的核心——将事物转化为数值,将关系、变换转化为运算——以事实(数据)为依据,以规章(算法)为准绳,通过计算来掌握事物的客观规律(模型)。
反复学习,从记忆到掌握,由易到难,螺旋式推进。
日常学习 Tips:关联、记录、分享
根据数据平台 Kaggle 发布的2017年机器学习及数据科学调查报告,Python 是数据科学家和人工智能从业者使用最多的语言/工具。
语言简单易学,支持库丰富强大,这两大支柱从早期就奠定了 Python 的江湖地位。
了解下面这些概念:数据类型、变量、函数、参数、返回值、调用、递归……
学习流程控制:顺序、条件、循环。
在这个过程中,学习什么是静态类型,什么是动态类型,什么是强类型,什么是弱类型,这些不同设计的目的和应用场景分别是什么。
05---机器是如何学习的?
机器学习就是:让计算机程序(机器),不是通过人类直接指定的规则,而是通过自身运行,习得(学习)事物的规律,和/或事物间的关联。
计算机程序所能够处理,只有数值和运算。
要让一段程序了解客观世界变化万千的事物,则必须将这些事物数值化,将事物的变化
和不同事物之间的关联转化为运算。
通过标注数据进行学习的方法,就叫做有监督学习或直接叫监督学习(SupervisedLearning)
06---机器学习三要素之数据、模型、算法
1. 确定用哪些特征来表示数据;2. 确定用什么方式表达这些特征。
通过标注数据进行学习的方法,就叫做有监督学习或直接叫监督学习(SupervisedLearning)
训练--根据已经被指定的 f(x) 的具体形式——模型类型,结合训练数据,计算出其中各个参数的具体取值的过程。
有监督学习的目标就是:让训练数据的所有 x 经过 f(x) 计算后,获得的 y’与它们原本对应的 y 的差别尽量小。
损失函数(Loss Function):对于一个训练数据,描述 y’与 y 之间的差别。
代价函数(Cost Function)对于所有训练数据,描述整体的损失。一般写作J(theta)
算法是机器学习和深度学习中最具技术含量的部分。
要得到高质量的模型,算法很重要,但往往(尤其是在应用经典模型时)更重要的是数据。
有监督学习需要标注数据。因此,在进入训练阶段前必须要经过一个步骤:人工标注。
标注的过程繁琐且工作量颇大,却无法避免。
机器学习三要素:数据、模型、算法
算法通过在数据上运算产生模型。
07--模型的获取和改进
训练集、验证集和测试集
每个集合都应当是独立的,和另外两个没有重叠。
大量的高质量训练数据,是提高模型质量的最有效手段。
超参数是需要模型训练者自己来设置和调整的
08---模型的质量和评判指标
指标对应的是模型和数据集
模型的偏差和过拟合(相对于过拟合)
09---最常用的优化算法——梯度下降法
学习的目标就是最小化目标函数的取值,而目标函数又是凸函数,那么学习的目标自然转化成了寻找某个凸函数的最小值。最常用的一种方法,叫做梯度下降法。
1. 随机取一个自变量的值 ;
2. 对应该自变量算出对应点的因变量值: ;
3. 计算 处目标函数 的导数;
4. 从 开始,沿着该处目标函数导数的方向,按一个指定的步长 ,向前“走一步”,
走到的位置对应自变量取值为 。换言之, 是 在 处的斜率;
5. 继续重复2-4,直至退出迭代(达到指定迭代次数,或 近似收敛到最优解)。
步长 是算法自己学习不出来的,它必须由外界指定。
这种算法不能学习,需要人为设定的参数,就叫做超参数。
如果目标函数有多个极小值点(多个向下的“弯儿”),那么如果开始位置不妥,很可能导致最终是走到了一个局部极小值就无法前进了。
这种情况下,可以尝试几个不同的起始点。甚至尝试一下大步长,说不定反而能够跨出局部最小值点所在的凸域。
10---线性回归——从模型函数到目标函数
从数据反推公式:用美国纽约若干程序员职位的年薪举例
综合利用训练数据,拟合线性回归函数:获得 a, b 两个参数取值
综合利用的原则是什么呢?就是我们要求的这个 a 和 b,在将训练样本的 x 逐个带入后,得出的预测年薪 y’= a + bx 与真实年薪 y 整体的差异最小。
具体的一个样本的 y 和 y’的差异用 来表示。
怎么衡量这个整体差距呢?我们用下面这个公式,我们把它叫做为 Cost Function,形式如(其中 m 为样本的个数):
在 y = a + bx 这个模型函数中,a 和 b 是常量参数,x 是自变量,而 y 是因变量。
但到了 J(a,b) 中, 和 是常量参数(也就是 m 个样本各自的 x 和 y 值),而 a 和 b
成了自变量,J(a,b) 是因变量。能够让因变量 J(a, b) 取值最小的自变量 a 和 b,就是最好的 a和 b。
我们要做的,就是找到最好的 a 和 b。
线性回归模型是:利用线性函数对一个或多个自变量 (x 或 ( ))和因变量(y)之间的关系进行拟合的模型。
线性函数的定义是:一阶(或更低阶)多项式,或零多项式。
特征是一维的,线性模型在二维空间构成一条直线;特征是二维的,线性模型在三维空间中构成一个平面;若特征是三维的,则最终模型在四维空间中构成一个体;以此类推……
用线性回归模型拟合非线性关系:比如把特征从一个“变成”两个。
11---线性回归——梯度下降法求解目标函数
# 将特征数据集分为训练集和测试集,除了最后5个作为测试用例,其他都用于训练
# 把目标数据(特征对应的真实值)也分为训练集和测试集
# 用训练集训练模型——看就这么简单,一行搞定训练过程
# 用训练得出的模型进行预测
# 将测试结果以图标的方式显示出来
操作过程:先再命令行键入python(或者IDLE),回车。
然后等待程序开始运行。
分类模型 VS 回归模型,最根本的不同:前者是预测一个标签(类型、类别);后者则是预测一个量。
换一个角度来看,分类模型输出的预测值是离散值;而回归模型输出的预测值则是连续值
13---朴素贝叶斯分类器:条件概率的参数估计
极大似然估计,就是去寻找让似然函数 的取值达到最大的参数值的估计方法。
最大化一个似然函数同最大化它的自然对数是等价的
用代码实现朴素贝叶斯模型
我的存储方式:先打开一个空白文本文档,把数据复制过去,把文本文档的名字和后缀改为career_data.csv
注意,文档的位置要和py程序的位置在一个目录即统一路径,不然调用不了。
运行脚本,即运行程序,结果应该是:
14---逻辑回归: 非线性逻辑函数的由来
逻辑函数表现的是存量随时间增长渐增的关系。而增长率和时间的关系式存量(逻辑函数)的微分函数。
学习理论相对于学习经验具备更长久也更深入的有效性。
15---逻辑回归: 用来做分类的回归模型
LR 典型的应用是二分类问题上
模型函数在y=0.5附近非常敏感。大于0.5,真性,阳性,小于0.5,假性,阴性
16---决策树——既能分类又能回归的模型
一棵决策树(Decision Tree)是一个树结构(可以是二叉树或非二叉树),每个非叶节点对应一个特征,该节点的每个分支代表这个特征的一个取值,而每个叶节点存放一个类别或一个回归函数。
决策节点、特征、分裂特征
分裂特征的目标,是让各个分裂子集尽可能地“纯”。
使得各个分裂子集“纯”:
ID3 算法(Iterative Dichotomiser 3):以信息增益为度量,选择分裂后信息增益最大的特征进行分裂。
后剪枝优化决策树、先剪枝(局部剪枝)、后剪枝(全局剪枝)
#9个女孩和8只猫的数据,对应7个feature,yes取值为1,no为0
#1 表示是女孩,0表示是猫
# 从数据集中取20%作为测试集,其他作为训练集
# 对比测试结果和预期结果
线性可分、超平面(Hyperplane)、线性分类模型、线性分类器
以最大间隔把两类样本分开的超平面,是最佳超平面
求最大分割超平面问题其实是一个约束条件下的最优化问题
线性可分 SVM 的目标函数:一个带约束条件的求极值问题
19---SVM——直观理解拉格朗日乘子法
拉格朗日乘子法,一种多元函数在变量受到条件约束时,求极值的方法。可以用来解决 SVM 的目标函数最优化。
函数的梯度与它的等高线垂直。
拉格朗日函数也可以通过求导变化成约束条件本身。
原本有约束的优化问题,就可以转化为对拉格朗日函数的无约束优化问题了。
线性可分 SVM 的目标函数可以通过求解其对偶问题来求解
对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性 SVM.
这个更高维度的新空间叫做特征空间.
23---SVR——一种“宽容”的回归模型
线性回归:在向量空间里用线性函数去拟合样本。
严格的线性回归,所有样本实际位置到该线性函数的综合距离为损失,通过最小化损失来求取线性函数的参数
SVR 和线性回归,却是两个不同的回归模型,计算损失的原则不同,目标函数和最优化算法也不同
SVR 在线性函数两侧制造了一个“间隔带”,对于所有落入到间隔带内的样本,都不计算损失;只有间隔带之外的,才计入损失函数。之后再通过最小化间隔带的宽度与总损失来最优化模型。SVR 巴不得所有的样本点都落在“隔离带”里面,而 SVM 则恰恰希望所有的样本点都在“隔离带”之外!
SVR 的两个松弛变量
SVR 的主问题和对偶问题