本系列博客基于温州大学黄海广博士的机器学习课程的笔记,小伙伴们想更详细学习黄博士课程请移步到黄博士的Github、或者机器学习初学者公众号,现在在中国慕课也是可以学习的,内容包括机器学习、深度学习及Python编程,matplotlib、numpy、pandas、sklearn等,资料很详细,要系统学习请移步哦!笔者的博客只是笔记,内容不会十分详细,甚至会有些少错误!



1.机器学习简介

# 机器学习、人工智能、深度学习关系:
# a.人工智能:努力将通常由人类完成的智力任务自动化;
# b.机器学习:计算机利用已有的数据,得出某种模型,利用此模型预测未来的一种方法;
# c.深度学习:实现机器学习的一种技术;

# 机器学习界名人:
# a.杨立昆--Yann LeCun;
# b.杰弗里·欣顿--Geoffrey Hinton;
# c.本吉奥--Bengio;
# d.吴恩达--Andrew Ng;

# e.李航:代表作--《统计学习方法》;
# f.周志华:代表作--《机器学习》(西瓜书);

# g.陈天奇:设计了XGBoost算法;
# h.何凯明:设计了ResNets;

# 机器学习的范围:
# a.模式识别;
# b.计算机视觉;
# c.数据挖掘;
# d.语音识别;
# e.统计学习;
# f.自然语言处理;

1

2.机器学习发展史

2
3

3.机器学习类型

4

# 1.监督学习实例:

# a.分类(Classification)
# a.1:身高170cm,体重80kg的男人肥胖吗?
# a.2:根据肿瘤的体积、患者的年龄判断肿瘤是良性还是恶性;

# b.回归(Regression、Prediction)
# b.1:如何预测上海浦东的房价?
# b.2:预测未来股票市场的走向;

# 2.无监督学习实例:

# a.聚类(Clustering)
# a.1:如何将教室里的学生按爱好、身高划分为5类;

# b.降维(Dimensionality Reduction)
# b.1:如何将高维度空间中的数据点映射到低维度空间中;

# 3.强化学习实例
# a.强化学习(Reinforcement Learning)
# a.1:用于描述和解决智能体在与环境的交互过程中通过学习策略以达到最大化或实现特定目标的问题;

4.机器学习概念

4.1 机器学习—模型

1

4.2 机器学习—损失函数
  1. 0-1损失函数(0-1 Loss Function)
    L ( Y , f ( x ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(x))=\left\{ \begin {array}{lr}1,Y≠f(X)\\0,Y=f(X) \end{array} \right. L(Y,f(x))={1Y=f(X)0Y=f(X)
  2. 平方损失函数(Quadratic Loss Function)
    L ( Y , f ( x ) ) = ( Y − f ( X ) ) 2 L(Y,f(x))=(Y-f(X))^2 L(Y,f(x))=(Yf(X))2
  3. 绝对损失函数(Absolute Loss Function)
    L ( Y , f ( x ) ) = ∣ Y − f ( X ) ∣ L(Y,f(x))=|Y-f(X)| L(Y,f(x))=Yf(X)
  4. 对数损失函数(Logarithmic Loss Function)
    L ( Y , P ( Y ∣ X ) ) = − log ⁡ P ( Y ∣ X ) L(Y,P(Y|X))=-\log{P(Y|X)} L(Y,P(YX))=logP(YX)

根据损失函数模型,损失函数值越小,模型性能越好;给定一个数据集,训练数据集的平均损失称为经验风险;基于经验风险最小化原则,构建全局损失函数求解最优化问题: min ⁡ f 1 N ∑ n = 1 N L ( y n , f ( x n ) ) \min_f\frac{1}{N}\sum_{n=1}^NL(y_n,f(x_n)) fminN1n=1NL(yn,f(xn))

当样本数量足够大时,根据大数定理,经验风险会近似于模型期望风险;此时,经验风险最小化能确保有好的学习性能;当样本数量不足时,只利用经验风险最小化可能导致"过拟合"问题;

在原有的基础上加上用于控制模型复杂度的正则项(Regularizer),得到结构最小化准则;定义如下: min ⁡ f 1 N ∑ n = 1 N L ( y n , f ( x n ) ) + λ J ( f ) \min_f\frac{1}{N}\sum_{n=1}^NL(y_n,f(x_n))+\lambda{J(f)} fminN1n=1NL(yn,f(xn))+λJ(f)
其 中 : J ( f ) : 代 表 对 模 型 复 杂 度 的 惩 罚 ; 模 型 越 复 杂 , J ( f ) 越 大 ; 模 型 越 简 单 , J ( f ) 越 小 ; λ : 一 个 正 的 常 数 , 称 为 正 则 化 系 数 , 用 于 平 衡 经 验 风 险 和 模 型 复 杂 度 ; T i p s : 结 构 风 险 小 的 模 型 需 要 经 验 风 险 和 模 型 复 杂 度 同 时 小 , 对 训 练 数 据 和 测 试 数 据 都 能 有 较 好 的 拟 合 ; 其中:\\J(f):代表对模型复杂度的惩罚;模型越复杂,J(f)越大;模型越简单,J(f)越小;\\\lambda:一个正的常数,称为正则化系数,用于平衡经验风险和模型复杂度;\\Tips:结构风险小的模型需要经验风险和模型复杂度同时小,对训练数据和测试数据都能有较好的拟合; J(f)J(f)J(f)λTips

4.3 机器学习—优化算法
# 1.算法:模型学习中的具体计算方法;
# 2.现有的优化方法:梯度下降法、牛顿法、拟牛顿法、ADAM等;
4.4 机器学习—模型评估
  1. 当损失函数给定时,将基于模型训练数据的误差(Training Error)和测试数据的误差(Testing Error)作为模型评估的标准;
  2. 测试误差的定义如下: E t e s t = 1 N ′ ∑ n = 1 N ′ L ( y n , f ^ ( x n ) ) E_{test}=\frac{1}{N'}\sum_{n=1}^{N'}L(y_n,\hat{f}(x_n)) Etest=N1n=1NL(yn,f^(xn))
    其 中 : N ′ : 测 试 数 据 数 量 ; L ( y n , f ^ ( x n ) ) : 损 失 函 数 ; y n : 真 实 标 签 ; f ^ ( x n ) : 预 测 标 签 ; T i p s : 模 型 学 习 效 果 好 , 则 训 练 误 差 和 测 试 误 差 接 近 一 致 ; 其中:\\N':测试数据数量;L(y_n,\hat{f}(x_n)):损失函数;\\y_n:真实标签;\hat{f}(x_n):预测标签;\\Tips:模型学习效果好,则训练误差和测试误差接近一致; NL(yn,f^(xn))ynf^(xn)Tips

5.Python模块简介

# 1.Numpy模块:用Python实现的科学计算扩展程序库;
# a.强大的N维数组对象Array;
# b.比较成熟的函数库;
# c.用于整合C/C++和Fortran代码的工具包;
# d.使用的线性代数、傅里叶变换和随机数生成函数;

# 2.Pandas模块:为了解决数据分析任务而创建的一种工具;
# a.纳入了大量库和一些标准数据模型,提供了高效地操作大型数据集的工具;
# b.提供了大量能快速便捷处理数据的函数和方法;

# Pandas模块的文件读写:
# 从文件中读取数据(DataFrame)
# ① pd.read_csv():从csv文件读取;
# ② pd.read_table():从制表符分隔文件读取;
# ③ pd.read_excel():从Excel文件读取;
# ④ pd.read_sql():从SQL表或数据库读取;
# ⑤ pd.read_json():从JSON格式的URL或文件读取;
# ⑥ pd.read_clipboard():从剪切板读取;

# 将DataFrame写入文件:
# ① df.to_csv():写入csv文件;
# ② df.to_excel():写入Excel文件;
# ③ df.to_sql():写入SQL表或数据库;
# ④ df.to_json():写入JSON格式的文件;
# ⑤ df.to_clipboard():写入剪切板;

# 3.SciPy模块:一款方便、易于使用、专为科学和工程设计的Python工具包;
# SciPy模块包括:统计、优化、整合及线性代数模块、傅里叶变换、信号和图像图例,常微分方程的求解等;

# 4.Matplotlib模块:一个Python的2D绘图库;

6.机器学习开发流程

2

# 机器学习一般步骤:
# a.数据搜集;
# b.数据清洗;
# c.特征工程;
# d.数据建模;

7.最后送上

3

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐