📚机器学习
type
status
date
slug
summary
tags
category
icon
password
监督学习supervised learning
由一些给出的input和output的关系给出的一种可以根据未知output的input值预测对应的output的学习方式
是一种映射关系的学习
回归regression
从无限多个数字中预测(得到)一个
预测房价
连续的
线性回归
直线拟合,单变量
成本函数(代价函数)
怎样衡量直线和数据点的拟合程度——cost function
- Squared error cost function平方误差成本函数


这里除以2是为了让之后的计算更加整洁
梯度下降算法important
适用于所有尝试最小化函数的情况
- 初始化一个初始值
- 每次略微更改,计算变化
- 稳定(局部最优解出现)local minimum
Gradient descent algorithm


Alpha 学习率,0到1之间,控制步幅(怎么选择一个合适的学习率呢?)
对J函数求偏导
tips:
- 这里要注意需要同时更新w,b的值,即先使用temp暂时存储而不是直接更新w和b,后再会导致不同步下降
- 双temp后再双更新
学习率的选择
过小,慢,过大,可能找不到最小,无法收敛甚至发散
但对于局部最优解来说,越接近的时候实际移动的步长也是变小的,学习率不变,斜率减小

batch gradient descent批量梯度下降
在梯度下降的每一步中都在查看所有的训练示例
多变量(多特征)多元线性回归

具有n个特征的模型
当然这里可以用矩阵来表示(或者向量)

在python中的实现,for循环,比较丑陋
使用矢量化的概念

代码短且运行快,numpy函数可以在幕后使用并行硬件
这种方式也可以在计算梯度下降的时候使用
多特征的梯度下降就是增加变量而已
特征的可变化范围大时,权重参数一般比较小,相反亦成立
所以如果范围不一样的话可能导致在进行梯度下降的时候反复弹跳导致运行缓慢,所以需要进行特征缩放(数据归一化处理,椭圆变为圆)

Feature scaling,最大值化为1
Mean normalization,标准归一化(数据减去平均值后除以极差)
Z-score normalization,正态分布类似(数据减去平均值后除以标准差)
多个特征的范围差异过大时最好进行上述操作
学习曲线

自动收敛测试,判断每次迭代后的J变化是否足够小
如果说在学习曲线中出现了迭代之后曲线上升的情况,说明代码有bug或者学习率过高
特征工程Feature engineering
Using intuition to design new features, by transforming or combining original features.
创建更多的特征可能会使得你的拟合变得更好,但是特征的缩放也变得更加重要,(当然有可能有的特征并没有现实的意义)
分类classification
预测类别,可以是非数字
比如mnist或者判断是否由某种疾病
离散的
线性回归并不是分类问题的一个好的解决方案,
为什么呢?
比如分两类,在尝试使用直线进行分类的时候需要引入阈值的概念,但一旦加入新的本不影响分类的数据时,直线的变化会导致阈值的判断失准,进而使得原本的分类变坏

好的比如logistic回归,虽然叫回归但是是用来分类的
Logistic回归
sigmoid函数:s形函数
通过线性回归拟合结果后使用s形函数(范围划为0-1)进行分类

或者从概率的角度来计算

决策边界decision boundary
根据所有的权重参数得到的一个能够划分分类的边界
逻辑回归的成本函数
如果使用梯度下降会出现陷入很多的局部最优解
定义loss,损失,


理解:如果实际为1,预测越接近1,loss越接近0;
实际为0同理预测越接近0,loss越小
简单点的方式呢
构造一个函数把分段的写成一个

代入会得到成本函数

这是一个下凸函数,自然解决了局部最优解的问题
logistic回归的梯度下降与线性会给类似,其他的操作都与线性回归类似,都可以使用特征缩放与矢量化的处理
过拟合与解决
under fit 或者 high bias,拟合的不好(高偏差)
generalization 正好的 just right
overfitting high variance 过拟合(有很高的方差)
如果已经发生了过拟合,怎么解决
- 用更大的训练集来尝试拟合的更好
- 是否可以使用更少的特征(特征工程产物等),选择性——特征筛选。同样的也可以交给算法来选择特征
- 正则化 Regularization,鼓励学习算法收缩特征数
正则化的成本函数
如果参数有更小的值,那么就有可能会有一个更简单的特征更少的模型也能够实现目前的功能
为什么要这样加,比如说在J确定的情况下,前面部分的损失函数如果可以改变w的配比来实现总值不变的话,就要根据后面的部分来找w相对小的,那么就可以完成上面所说的找到一些可能非常小的w,进而实现简化特征数量
而我们几乎不会管b
正则化参数lamba

mean squared error + regularization term
lamba为0.没有正则化
lamba正无穷,w会都非常接近零,x会接近b,学习会接近常数函数
lamba好都好
正则化线性回归的梯度下降算法


可以写成

这里后面的部分恰好是非正则线性回归下的下降更新,所以添加正则化其实只是在前面的w部分做出了一些调整,注意到alpha、lamba和m的大小,w会乘一个略小于1的数来实现缩小,即我们所希望的更小的w的作用
成本函数的正则化后的梯度计算

正则化Logistic回归下的梯度算法

这里要自己算一下
无监督学习unsupervised learning
在无监督学习中,输入数据是没有label的
我们只是试图去找到一个模式、架构或者只是一些有趣的东西,不会试图去监督算法
让机器自己”创造“标签
聚类算法clustering
可能会将input分为几个cluster
比如Google news 、DNA(判断某个基因是否和某种性状有关)
异常检测Anomaly detection
检测异常事件,欺诈等
降维Dimensionality reduction
将一个大数据集压缩成一个小得多的数据集的同时丢失尽可能少的信息
上一篇
操作系统
下一篇
简单神经网络
Loading...