前言:
这个算法在贝叶斯以及HMM,EMM算法里面应用的比较广泛。
目的: 利用观测到的样本,估计出未知参数
1:采用不同的样本采样方法 ,for this you can check REF DOC 周志华
2: 可以增加训练的轮数,符合辛钦大数定理
3: 参数估计 参考矩估计|极大似然估计,本质上是一阶原点矩,那就要找出参数震荡小的时候参数
这个参考郑捷的机器学习
4: 对参数具体进行研究
通过热力图研究其维度之间的相关系数,如果相关性特别强的维度之间,权重系数应该是差不多的。
目录:
1: 算法的基本步骤
2: 原理
3: 应用
4: Code(交叉熵)
一 算法原理
1.1 写出 联合概率密度|分布律
1.2 极大似然函数:
似然估计
1.3 对对数似然函数求导
注意:
1 : 由于该函数二阶导数不一定小于0,所以
求导出来的不一定是全局极大值点,可能是局部极值点,
要回带到似然函数重新计算。
2: 当 关于未知参数 是单调递增或递减函数,
极大似然估计为的最大或者最小值(与样本有关),
例如均匀分布
二 原理
设 离散型随机变量分布律为 , 为样本,为观测值
发生的概率为
(该函数称为似然函数)
对于连续型变量
其中 在参数求解过程中,对极大值没有影响,所以可以去掉
三 例子:
例1: 已知随机变量,求极大似然估计
解:
1: 写出概率密度函数
2: 写出似然函数
其中
3: 对对数似然函数求导
3.1 对u 求导:
3.2 对方差求导
则 ,为中心矩
例2 : 已知样本采样,求极大似然估计
解:
2.1 写出概率密度函数
2.2 写出似然公式
求对数似然函数
2.3 对p求导数
四 机器学习中交叉熵应用例子
https://zhuanlan.zhihu.com/p/63731947
输入:
为某个样本对应维度的特征值
输出:
损失函数1:
其中 为标签值,为预测值。
参数调整过程:
可以看出只有标签值为1,才会调整
损失函数2(二阶中心矩)
其中:
这个里面看出来,
import numpy as np
'''
交叉熵,最好接近0, Log1 ==0
'''
def cross_entropy(Y,P):
Y = np.float_(Y)
P = np.float_(P)
loss = Y*np.log(P)+(1-Y)*np.log(1-P)
entropy = -np.sum(loss)
print("\n 交叉熵 ",entropy)
Y=[1,0,1,1]
P=[0.4,0.6,0.1,0.5]
P2 =[0.9,0.1,0.88,0.99]
cross_entropy(Y,P)
cross_entropy(Y,P2)