python与机器学习1,机器学习的一些基础知识(完善ing)
目录
1 关于阈值θ和偏移量b和公式变形的由来
2 激活函数
3 关于回归,分类等
4 关于模型
5 关于回归
6 关于分类
7 关于误差和梯度下降
7-2 最小二乘法修改θ
8 深度学习
10 分类
11 参考书籍
1 关于阈值θ和偏移量b和公式变形的由来
比如很多信息传入可以表达为
WX=w1x1+w2x2+....这个是输入值,其中w表示权重,x表示信息
也有的写成 θX=θ1x1+θ2x2+....这个是输入值,都是一个意思
如果w1x1+w2x2+....>θ 就会激活
如果w1x1+w2x2+....<=θ 就不激活那么 w1x1+w2x2+....=θ就是判断公式
可以变形为
w1x1+w2x2+....=θ
w1x1+w2x2+....-θ=0
而尽量都取正数,就是
w1x1+w2x2+....+(-θ)=0
用系数b代替-θ
w1x1+w2x2+....+b=0
如果把b看成一个虚拟的输入信息,那么b的权重就是1
w1x1+w2x2+....+1*b=0
2 激活函数
一个最简单的函数,分段函数图形是直的,但是上下限也是[0,1]
- f(x)=0, if x<=0
- f(x)=1, if x>0
一个比较连续的, sigmod,分段函数图形是曲线,但是上下限也是[0,1]
sigmod,比较经典
- f(z)=1/(1-e^(-z))
3 关于回归,分类等
- 老的AI,逻辑
- 中间AI,
- 现在AI,数据
- 数据分为2部分
- 一部分训练数据
- 一部分,验证数据
- 有监督学习,回归分析,验证
- 半监督学习,
- 无监督学习,分类等
4 关于模型
回归,regression
用来处理,连续数据,如事件序列数据
比如按天记录的数据
分类,classification
数据带有标签
有监督学习
聚类,clustering
数据不带标签
无监督学习
5 关于回归
有1次回归函数,其中包含1元的,2元等等,如果是多元的需要求偏导数
一般来说,一次回归函数都是线性函数
有2次回归函数,其中包含1元的,2元等等,如果是多元的需要求偏导数
一般来说,二次回归函数都是曲线~
选择什么样的函数有差别
如果函数次数太低,拟合不够,可以用精确度变化曲线,精确度和回归度比较
如果函数次数太高,可能是过拟合,可能训练数据拟合好,但是验证数据拟合不好,
6 关于分类
分类是把 f(x) 做成了一个概率函数
可以看作是
f θ(x)>0.5 时 y=1
f θ(x)<=0.5 时 y=0
其实就是
θTX>0 时 y=1
θTX<=0 时 y=0
7 关于误差和梯度下降
误差函数,感觉很类似于方差函数
(y-f(x))^2
最梯度下降
采用最小二乘法? 可能会陷入局部最优
随机梯度下降
随机选择一些?一定能达到全局最优
随机梯度下降
最速下降,因为事先选取点的差别,可能陷入局部最优
而随机梯度下降,因为全局随机,理论上不会陷入局部最优,一定会找到全局最优
想象不规则的sinx这种函数曲线
1个随机数量
小批量随机梯度下降
7-2 最小二乘法修改θ
y=ax+b
y=θ0+θ1*x
根据一些原始数据,
大概200 → 500
但是随便假设θ0=1,θ1=2
fθ(x)=f(x)=y=1+2x
当时200 → 201
可见参数θ0=1,θ2=2 假设的不好
最小二乘法修改θ
E(θ)=1/2*∑(y-f(x))^2
E(θ)=1/2*∑(yi-f(x)i)^2
跟方差一样
还要去掉误差的正负影响,而是考虑误差与均值的差距的绝对值。
所以用平方
用平方,比abs更容易求导数
1/2也是为了求二次方的导数故意设计的,1/2或者2 只会改变函数形状的扁平还是高起,一般来说y=f(x) 值越大越高,值越小越扁平
所以最速下降法,就是求导数,也就是微分
导数函数求出来后,导数=0时的x 对应就是f(x)的极值
方法1 加上考虑函数的性质
比如 f(x)=x^2+2x+1这种往下凸出的,就是对应的最小值
方法2 比如 f(x)=x^2+2x+1 导数 f(x)'=2x+2
因此,最小值是x=-1对应
而且,
x>-1,f(x)'=2x+2>0 为正,f(x)递增
x<=-1,f(x)'=2x+2<0 为负,f(x)递减
所以
沿着与导数的符号相反的方向移动x,f(x) 就会朝着最小值前进
最速下降,梯度下降法
x=x-la*df(x)/dx
x=x-学习率*导数
学习率的选择要尽量小点,否则就会不容易收敛,或无法收敛
其实这就是更新的θ
如果f(x)=fθ(x1,x2,x3)=θ0+θ1*x+θ2*x^2 =θ*X
θ0=θ0-la*Σ(f(x)-y)
θ1=θ1-la*Σ(f(x)-y)x
θ2=θ2-la*Σ(f(x)-y)x^2
多变量,偏导数
如果f(x)=fθ(x1,x2,x3)=θ0*x0+θ1*x+θ2*x^2 =θ*X
变成2个向量点乘
8 和矩阵计算,矩阵内积点乘的关系
w1x1+w2x2+.....+wnxn
天生适合用矩阵计算
w1x1+w2x2+.....+wnxn=W*X
考虑到 偏移量(其实是和阈值有关系)
1*b+w1x1+w2x2+.....+wnxn=W*X
可变成
列向量 (1,w1,w2...wn) ,转行向量 (1,w1,w2...wn) T
列向量 (b,x1,x2...xn)
8 深度学习
输入层,中间层,输出层
中间层的宽度
中间层的层数,深度学习?
加宽度相对容易
加深度就会很难?
10 分类
假设W*X=w1x1+w2x2
如果W*X=w1x1+w2x2=0
假设w1 w2=1
x1+x2=0
W*X=|W||X|cosθ
其中cosθ 决定点乘内积符号 90-270,cos为负数,使得内积为负的向量
使得内积为正的向量
内积为正,两者相似
内积为负数,两者不相似
内积为0,两者垂直,完全不相关
11 参考书籍
《机器学习的数学》
《深度学习的数学》
《程序员的AI书》