1. 监督学习与无监督学习
监督学习
定义
给算法一个数据集,其中包含正确答案,算法的目的是给出更多的正确答案
案例
例1:预测房价(回归问题)
回归:预测连续值的输出
-
用直线拟合
-
用二次函数或二阶多项式拟合(效果更好)
例2:预测肿瘤(分类问题)
分类:预测离散值的输出 对肿瘤而言,只有良性和恶性,不同于上面回归,可以有连续的房价数值 这里可以量化为0和1的输出
- 只有一个特征时
良性用“○”,恶性用“X”
- 2个特征时
假设不仅知道肿瘤大小,还知道肿瘤年龄,需要预测一个直线,将两类肿瘤分隔开。
还可以用其他更多的特征
无监督学习
定义
数据集没有标签(即没有正确答案)
算法
-
聚类算法:将数据分为两个不同的簇
-
案例
- google news:每天收集几十万条新闻,按主题分好类
- 市场:对用户数据集进行分类,细分到不同的市场,确定目标用户
- 鸡尾酒算法:两个麦克风分别离两人不同距离,录制两段录音,将两人声音分离开
2. 线性回归
1. 模型是什么样的
2. 整个监督学习的过程
代价函数
代价函数,有的地方也叫损失函数 训练模型的过程就是优化代价函数的过程 代价函数越小说明模型和参数越符合训练样本(x,y) 优化参数θ的过程中,最常用的方法是梯度下降 一般而言。损失函数的值越小,模型的精确度就越高 若要提高机器学习模型的准确度,就要尽可能降低损失函数的值→一般采用梯度下降方法
定义
假设函数:
代价函数:
假设有训练样本(x,y),模型为h,参数为
- 任何能够衡量模型预测出来的值h(θ)与真实值y之间的差异的函数都可以叫做代价函数C(θ)
若有多个样本,则可以将所有代价函数的取值求均值,记做J(θ)
- 可得关于代价函数的性质: 1. 每种算法,代价函数不唯一 2. 代价函数是参数θ的函数 3. 总的代价函数J(θ)可以用来衡量模型的好坏,代价函数越小说明模型和参数越符合训练样本(x,y) 4. J(θ)是一个标量
- 确定模型h的参数θ,也需要代价函数 代价函数衡量模型好坏 训练参数的过程就是不断改变θ,从而得到更小的J(θ) 理想情况下,当取到代价函数J的最小值时,就得到了最优的参数θ
- 优化参数θ时,常用梯度下降这里的梯度就是代价函数J(θ)对θ1, θ2, ..., θn的偏导数。由于需要求偏导,我们可以得到另一个关于代价函数的性质:
- 选择代价函数时,最好挑选对参数θ可微的函数(全微分存在,偏导数一定存在)
只有一个参数
固定(先取为0),并改变的值,得到多组 minimize\ J(\theta_0) $$就是线性回归的目标函数
两个参数
相同原理,此时有2个参数,则代价函数J变为三维图像
等高线图表示:
梯度下降
定义
- 作用:最小化函数
- 做法
- 初始化,一般都初始化为0(也可以为其他值)
- 不断改变的值使变小,直到找到最小值或局部最小值
- 每次在当前位置像下降最多的方向迈出一步
- 不同的起始点可能会得到不同的最小值(局部最小)
- 梯度下降公式:
- NT:应同步下降
(右边不同时下降的梯度下降算法,可能也能正常运行,但是不是梯度下降算法,而是具有不同心之的其他算法)
线性回归的梯度下降
-
公式
得到:
梯度下降的局限性:可能得到的是局部最优解
线性回归的梯度下降的函数是凸函数,因此没有局部最优解,只有全局最优解
3. 矩阵
向量表示
之后的内容除特殊说明,向量采取从1计数
习惯上用大写字母表示矩阵,小写字母表示向量
矩阵、向量运算
线性代数内容
乘法特性:不符合交换律,符合结合律
单位矩阵:一般记作
逆矩阵
Python求逆矩阵: 使用numpy
import numpy as np
A = np.array([[3,4],[2,16]])
print(np.linalg.inv(A)) # 求逆矩阵
问题:有时候再成回来不是特别精确的单位矩阵 原因:求逆矩阵时的小数带来了精度损耗,一般四舍五入下是单位矩阵