人工智能技术及应用 PDF
Document Details
Uploaded by ImprovedNephrite8351
严啸
Tags
Summary
This document is a presentation on artificial intelligence and machine learning. It gives an overview of fundamental concepts including supervised and unsupervised learning. The lecture notes focus on several Machine Learning algorithms such as linear regression, logistic regression, kNN, and SVM. It provides an introduction to the basic theory and concepts behind each algorithm using visualizations and mathematical formulas.
Full Transcript
人工智能技术及应用 严啸 机器学习 1 线性回归 2 逻辑回归 3 kNN(k近邻) 4 SVM(支持向量机) 2 监督学习 机器学习 从给定的训练数据集中学习出一个函数, 当新的数据到来时,可根据这个函数预 测结果 训练集:...
人工智能技术及应用 严啸 机器学习 1 线性回归 2 逻辑回归 3 kNN(k近邻) 4 SVM(支持向量机) 2 监督学习 机器学习 从给定的训练数据集中学习出一个函数, 当新的数据到来时,可根据这个函数预 测结果 训练集:输入(特征)和输出(目标) 训练集中的目标是由人标注的 回归和分类 无监督学习 训练集没有人为标注的结果 生成对抗网络(GAN)、聚类 深度学习 以人工神经网络为架构,对资料进行表 征学习的算法 强化学习 强调如何基于环境而行动,以取得最大 化的预期利益 3 不需要带标签的输入输出对 回归 聚类 分类 4 GAN Deepfake Generative Adversarial Network (GAN) 线性回归 Linear Regression 5 回归 是一种统计学上分析数据的方法,目的在于了解两个或多个变 量间是否相关、相关方向与强度,并建立数学模型以便观察特 定变量来预测研究者感兴趣的变量 用此函数代表因变量和自变量之间的关系 目的在于找出一条最能够代表所有观测资料的函数曲线(回归 估计式) 线性回归 VS 非线性回归 6 回归 sin(x) 取10个点,有噪声 7 线性回归 线性回归是在N维的空间找到一条直线、一个平面或者一个超 平面,使其能够拟合提供的数据,从而可以预测新的数据。 8 线性回归 复习过程中时间投入与考 试成绩关系,其中横坐标为 时间投入,纵坐标为分数。 假如现在随意告诉你一个时 间,要怎么才能预测(或者 叫计算)出其对应的考试成 绩呢? 9 线性回归求解步骤 步骤1:模型选择——线性回归 𝑦𝑦 = ℎ 𝑥𝑥 = 𝑤𝑤𝑤𝑤 + 𝑏𝑏 其 中 𝑤𝑤 叫 权 重 参 数 ( Weight ) , 𝑏𝑏 叫 偏 置 ( Bias ) 或 者 截 距 (Intercept)。当求解得到未知参数之后,也就意味着我们得到了这 个预测模型,即给定一个复习时间,就能够预测出其对应的考试成绩。 注:在机器学习中部分模型,可以简单理解为一个函数。 10 线性回归求解步骤 步骤2:通过给定的数据(训练集-Training Data),来对模型 ℎ 𝑥𝑥 进行求解 两 点确 定一 条直 线? 所有的点并不在一条直线上 当ℎ 𝑥𝑥 满足一个什么样的条件时,它才能称得上是一个好的 ℎ 𝑥𝑥 ? 目的:输入复习时间后能够输出"准确"的考试成绩 𝑦𝑦 11 线性回归求解步骤 可以通过计算每个样本的真实时间投入与预测成绩之间的均方误差来 对“准确”进行刻画: 距离最短 其中,𝑚𝑚表示样本数数量;𝑥𝑥 (𝑖𝑖) 表示第𝑖𝑖个样本的,也就是第𝑖𝑖个学生的 复习时间;𝑦𝑦 (𝑖𝑖) 表示第𝑖𝑖个学生的真实成绩;𝑦𝑦 (𝑖𝑖) 表示第𝑖𝑖个学生的预测成绩。 当函数 𝐽𝐽(𝑤𝑤, 𝑏𝑏) 取最小值时的参数 𝑤𝑤, 𝑏𝑏 ,就是要求的目标参数。因为当 𝐽𝐽(𝑤𝑤, 𝑏𝑏) 取最小值就意味着此时所有样本的预测值与真实值之间的误差(Error) 最小。极端一点就是所有预测值都等同于真实值,则 𝐽𝐽 𝑤𝑤, 𝑏𝑏 = 0。 12 线性回归求解步骤 步骤3:定义并最小化函数 𝐽𝐽(𝑤𝑤, 𝑏𝑏) 𝐽𝐽(𝑤𝑤, 𝑏𝑏) : 目 标 函 数 ( Objective Function ) 或 者 是 代 价 函 数 ( Cost Function)亦或是损失函数(Loss Function) 13 线性回归距离 希望拟合后的线上每一个 y 和 𝑦𝑦 的差距都尽可能小 求最优化的拟合线问题转换为求最短距离问题 计算距离常用的方法有L1距离和L2距离等 L1距离 L2距离 14 多变量线性回归 多变量线性回归:如复习效率,理解转化率,答题准确性等因素 机器学习中我们将这些“因素”称之为特征(Feature) 包含有多个特征的线性回归就叫做多变量线性回归 线性模型 目标函数 15 只要通过某种方法最小化目标函数 𝐽𝐽(𝑊𝑊, 𝑏𝑏)后,便可以求解出模型对应的参数。 线性回归评估指标 ℎ1 (𝑥𝑥)与ℎ2 (𝑥𝑥) ,选哪一个? 常见的评估指标(Metric) 平均绝对误差(Mean Absolute Error, MAE) 均方误差(Mean Square Error, MSE) 均方根误差(Root Mean Square Error, RMSE) R2 16 线性回归评估指标 平均绝对误差(MAE) L1损失 均方误差(MSE) L2损失 ∈[0,+∞) 均方根误差(RMSE) 越小越好 R2 MSE R2 ∈ (−∞, 1] 越大越好 17 方差 线性回归评估指标 import numpy as np 平均绝对误差(MAE) def MAE(y, y_pre): return np.mean(np.abs(y - y_pre)) 均方误差(MSE) def MSE(y, y_pre): return np.mean((y - y_pre) ** 2) 均方根误差(RMSE) def RMSE(y, y_pre): return np.sqrt(MSE(y, y_pre)) R2 def R2(y, y_pre): u = np.sum((y - y_pre) ** 2) v = np.sum((y - np.mean(y_pre)) ** 2) 18 return 1 - (u / v) 线性回归数学方法 1.导入必要的库 在PyCharm中新建项目machine_learning,在machine_learning项目下新建 Linear_regression.py,在PyCharm中编写以下代码。 import matplotlib.pyplot as plt import numpy as np 2.设置一个初始的W和b #y=W*x+b W = 0.9 b = 15 19 写代码的时候使用W代表权重,不使用斜率k。 线性回归数学方法 3.在二维平面上创造一些数据 train_data = [] for i in range(150): # 从[0.0,80.0)中随机采样,注意定义域是左闭右开,即包含0.0,不包含80.0 tr_x = np.random.uniform(0.0, 80.0) # 高斯分布的概率密度函数 # tr_x:float,此概率分布的均值(对应着整个分布的中心center) # 3:float,此概率分布的标准差(对应于分布的宽度) tr_y = tr_x * W + b train_data.append([np.random.normal(tr_x, 3), np.random.normal(tr_y, 3)]) 随机生成一些横纵坐标数据,横坐标为学习的小时数,纵坐标为最后的成绩, 20 生成150个点进行拟合。 线性回归数学方法 4.将数据在水平方向上平铺,形成一个新的数组 data = np.hstack(train_data).reshape(-1, 2) 5.绘制散点图 由于点比较多,所以连在一起 难以区分,用边缘可便于区分,绘 制后的散点图如图所示。 21 线性回归数学方法 6.创建训练函数 def train_math(train_data): for x_i, y_i in zip(xtr, ytr): # 获取数据 numerator += (x_i - x_mean) * (y_i - trainx = [train_d for train_d in y_mean) train_data] # list denominator += (x_i - x_mean) ** 2 trainy = [train_d for train_d in W = numerator / denominator train_data] b = y_mean - W * x_mean xtr = np.hstack(trainx) print("W = ", W) ytr = np.hstack(trainy) print("b = ", b) x_mean = np.mean(xtr) return W, b y_mean = np.mean(ytr) numerator = 0.0 # 分子 22 denominator = 0.0 # 分母 线性回归数学方法 7.创建预测函数 def predict(x, W, b, data): y=W*x+b plt.xlim((0, 85)) plt.ylim((10, 95)) plt.xlabel('时间/h') plt.ylabel('分数(分)') plt.scatter(data[:, 0], data[:, 1], color="c", edgecolor="white") plt.plot([0, 85], [b, W * 85 + b], color='y', linewidth=2) plt.scatter(x, y, color="r", edgecolor="white") plt.show() 23 线性回归数学方法 8.调用训练函数 W, b = train_math(data) predict(50, W, b, data) 关掉Matplotlib打印的图像,得到W和b的值,结果如图所示。 需要注意的是,由于每次的初始化数据都是 随机生成的,所以得到的W和b都是不一致的。 拟合的直线以及预测的点如图所示。 24