本系列是七月算法机器学习课程笔记
文章目录
- 1 不同类型的学习
- 2 基本术语与概念
- 3 线性回归模型
- 3.1 什么是线性回归
- 3.2 损失函数
- 3.3 最小化损失函数-梯度下降
- 3.4 学习率有什么影响
- 3.5 过拟合与欠拟合
- 4 逻辑回归
- 4.1 为什么要有逻辑回归
- 4.2 什么是逻辑回归
- 4.3决策边界
- 线性边界判定
- 非线性边界判定
- 4.4 损失函数
- 4.5 多分类问题
- 5 混淆矩阵评判标准
1 不同类型的学习
机器学习:监督学习、无监督学习、强化学习
按照问题类型分:
聚类问题:相似用户分析、新闻聚类
分类问题(选择题) 情感分类、垃圾邮件、图像内容与识别
回归(回答类问题) 房价、票房值、
强化学习:研究如何根据环境而行动
2 基本术语与概念
数据集:训练集、测试集
样本=示例=样例
特征 属性、属性值
属性空间 样本空间
特征向量
标记 label 输出空间
3 线性回归模型
3.1 什么是线性回归
有监督 学习,输出是连续值
假定输入与输出之间是线性关系:f:x->y
例如体重与身高可能就是线性关系,房屋的价格与面积是线性关系
单变量线性回归:f=ax+bf=ax+bf=ax+b
多变量线性回归:f(x)=θ0+θ1x1+θ2x2=∑i=0nθixi=θTXf(x)=\theta_0+\theta_1x_1+\theta_2x_2=\sum_{i=0}^n\theta_ix_i=\theta_TXf(x)=θ0+θ1x1+θ2x2=∑i=0nθixi=θTX
3.2 损失函数
数据驱动=数据+模型
模型=假设函数
当数据确定的时候,x将不再是未知数,而参数是未知数,所以方程可以写为:h(θ)=∑i=0nθixih(\theta)=\sum_{i=0}^n\theta_ix_ih(θ)=∑i=0nθixi
损失函数
在监督学习中优化=损失函数 + 优化算法
我们要找到最好的参数θ\thetaθ,如何衡量呢?用损失函数定义
损失函数:定义了当前状况下与标准答案差异情况的函数。
J(θ0,θ1,θ2...θn)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta_0,\theta_1,\theta_2...\theta_n)=\dfrac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2J(θ0,θ1,θ2...θn)=2m1∑i=1m(hθ(x(i))−y(i))2
3.3 最小化损失函数-梯度下降
损失函数是一个凸函数,J(θ0,θ1,θ2...θn)=12m∑i=1m(hθ(xi)−yi)2J(\theta_0,\theta_1,\theta_2...\theta_n)=\dfrac{1}{2m}\sum_{i=1}^m(h_\theta(x^i)-y^i)^2J(θ0,θ1,θ2...θn)=2m1∑i=1m(hθ(xi)−yi)2
可以使用梯度下降的方式找损失函数的最小值。这就如同将一个小球在一个碗里,让它滚落到碗底。这里涉及到两个问题:一个是最开始小球放哪:初始位置,另外一个是小球从哪个方向滚。
初始位置不重要,放哪里都行。
滚的方向:在一条曲线中变化最快的方向是梯度方向,在开始点梯度方向是函数值增加的方向,所以滚的方向是负梯度方向。(这块内容需要用数学补充)
在多维情况下 梯度方向垂直于等高线。每次迈进一小步,直到山底。
参数迭代函数:
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))\theta_0 :=\theta_0 -\alpha\dfrac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})θ0:=θ0−αm1∑i=1m(hθ(x(i))−y(i))
θ1:=θ1−α1m∑i=1m(hθ(x(i))−y(i)).x1(i)\theta_1 :=\theta_1 -\alpha\dfrac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)}).x_1^{(i)}θ1:=θ1−αm1∑i=1m(hθ(x(i))−y(i)).x1(i)
3.4 学习率有什么影响
学习率小,梯度下降慢,训练时间长
学习率大,会跨越最低点,形成振荡
3.5 过拟合与欠拟合
欠拟合:模型参数不够,表现不好。类似于一个孩子智商不够,学习不好一样。
过拟合:模型参数太多,不用学习,只是记忆答案,但遇到新的问题就不会了。类似于一个孩子智商太高,背会了所有练习题的答案。但是不会做新题。
对应的解决方法是:正则化
正则化:用来控制参数θ\thetaθ的幅度, 限制参数θ\thetaθ的搜索空间。这样损失函数就变成了:J(θ0,θ1,θ2...θn)=12m∑i=1n(hθ(xi)−yi)2+λ2∑j=1nθj2J(\theta_0,\theta_1,\theta_2...\theta_n)=\dfrac{1}{2m}\sum_{i=1}^n(h_\theta(x^i)-y^i)^2+\dfrac{\lambda}{2 }\sum_{j=1}^{n}\theta_j^2J(θ0,θ1,θ2...θn)=2m1∑i=1n(hθ(xi)−yi)2+2λ∑j=1nθj2
4 逻辑回归
4.1 为什么要有逻辑回归
现在问个问题是:希望根据肿瘤大小,判断病人是否患有癌症。
根据线性回归建模:可以设置阈值0.5,根据这个阈值算出一个肿瘤大小的分割线。
上面看似没有问题。如果有一些肿瘤尺寸很大的样本加入之后,这条线的斜率发生变化。此时再以0.5作为阈值,那么有些样本就会被错误的分类。也就是说线性回归用于分类问题的时候,特征值的范围会严重影响分类效果。
4.2 什么是逻辑回归
神奇的sigmoid函数:sigmoid函数也叫s曲线。
S(x)=11+e(−x)S(x)=\dfrac{1}{1+e^{(-x)}}S(x)=1+e(−x)1
它的导函数是S(x)′=S(x)(1−S(x))S(x)'=S(x)(1-S(x))S(x)′=S(x)(1−S(x))
sigmoid函数能够把任意值转换到(0,1)范围内。我们可以将上面线性回归模型计算的值,作为入参送入sigmoid函数,得到一个(0,1)范围的值。
4.3决策边界
所有分类问题都是要找到一条决策边界。怎么用线性回归找到可以拟合出决策边界呢?
线性边界判定
假设函数hθ(x)=g(θ0+θ1x1+θ2x2)h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2)hθ(x)=g(θ0+θ1x1+θ2x2),假定θ0=−3\theta_0=-3θ0=−3,θ1=1\theta_1=1θ1=1,θ2=1\theta_2=1θ2=1,那么当−3+x1+x2>0-3+x_1+x_2>0−3+x1+x2>0的时候,所有的点是在直线上方的,再看sigmoid函数,当输入值>0的时候,值是>0.5的。那么就可以理解图中x的概率是>0.5的。同理,图中圆圈的概率是<0.5的。我们就可以基于0.5给出一条决策边界。
非线性边界判定
假设函数hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2)hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22),假定θ0=−1\theta_0=-1θ0=−1,θ1=0\theta_1=0θ1=0,θ2=0\theta_2=0θ2=0,θ3=1\theta_3=1θ3=1,θ4=1\theta_4=1θ4=1,也就是说函数变为:hθ(x)=g(−1+x12+x22)h_\theta(x)=g(-1+x_1^2+x_2^2)hθ(x)=g(−1+x12+x22)。对于x12+x22−1=0x_1^2+x_2^2-1=0x12+x22−1=0可以形成这样一条圆形的曲线。x12+x22−1>0x_1^2+x_2^2-1>0x12+x22−1>0表示圆外面的x点,x12+x22−1<0x_1^2+x_2^2-1<0x12+x22−1<0表示圆内的○点。将其送入sigmoid函数,可以得到对应的概率。
4.4 损失函数
在逻辑回归中使用同样的损失函数发现好多凹凸点,不再是个凸函数。
因为hθ(x)h_\theta(x)hθ(x)表示的是概率。对于正样本(y=1)来说,hθ(x)h_\theta(x)hθ(x)越大越好,那么log(hθ(x))log(h_\theta(x))log(hθ(x)),越大越好,推理出−log(hθ(x))-log(h_\theta(x))−log(hθ(x)),越小越好。
对于负样本(y=0)来说,hθ(x)h_\theta(x)hθ(x)越小越好,所以那么1−hθ(x)1-h_\theta(x)1−hθ(x)越大越好,log(1−hθ(x))log(1-h_\theta(x))log(1−hθ(x)),越大越好,推理出−log(1−hθ(x))-log(1-h_\theta(x))−log(1−hθ(x)),越小越好。
加log函数是因为在计算损失函数的时候多个样本的损失会相乘,概率相乘在大数据量下会发生溢出。加上log,将乘法改为加法,解决溢出问题。
所以得到损失函数为:
Cost(hθ(x),y)=−log(hθ(x))Cost(h_\theta(x),y)=-log(h_\theta(x))Cost(hθ(x),y)=−log(hθ(x)), if y=1
Cost(hθ(x),y)=−log(1−hθ(x))Cost(h_\theta(x),y)=-log(1-h_\theta(x))Cost(hθ(x),y)=−log(1−hθ(x)), if y=0
最后的数学公式:
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]J(\theta)=-\dfrac{1}{m}[\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)})) +(1-y^{(i)})log(1-h_\theta(x^{(i)}))]J(θ)=−m1[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
加上正则化项之后变为:
J(θ)=−1m[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2J(\theta)=-\dfrac{1}{m}[\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)})) +(1-y^{(i)})log(1-h_\theta(x^{(i)}))]+\dfrac{\lambda}{2m}\sum_{j=1}^n\theta_j^2J(θ)=−m1[∑i=1my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλ∑j=1nθj2
解决损失韩式同样用梯度下降
4.5 多分类问题
上面谈到的是二分类。在解决多分类问题的时候可以采用 one vs one 和 one vs rest两种方法。
5 混淆矩阵评判标准
参考链接混淆矩阵评价指标_一文搞懂分类算法中常用的评估指标。
ROC曲线