ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇
目录
一、ML与高等数学
0、基础数学
1、导数、方向导数、梯度
1.1、概念简介
1.2、代码实现
2、Taylor展开
3、凸函数
二、ML与概率统计
1、古典概率
2、贝叶斯公式
3、常见概率分布
4、重要统计量(基于全局的而不是样本)
5、不等式系列
6、样本估计参数
7、先验概率、后验概率
三、ML与线性代数
相关文章ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——进阶篇DL之simpleNet:利用自定义的simpleNet(设好权重)对新样本进行预测、评估、输出梯度值
一、ML与高等数学 0、基础数学
(1)、平方根:一般若干次(5、6次)迭代即可获得比较好的近似值。
(2)、拉格朗日函数解决带约束的优化问题
1、导数、方向导数、梯度 1.1、概念简介
(1)、已知函数f(x)=x^x,x>0,求f(x)的最小值:在信息熵中会遇到 (2)、方向导数、梯度
1.2、代码实现
(1)、求导:利用微小的差分求导数的过程称为数值微分(numerical differentiation)
#利用微小的差分求导数的过程称为数值微分(numerical differentiation)
def numerical_diff(f, x):
h = 1e-4 # 0.0001
return (f(x+h) - f(x-h)) / (2*h)
(2)、实现简单的函数求导
import numpy as np
import matplotlib.pylab as plt
def numerical_diff(f, x):
h = 1e-4 # 0.0001
return (f(x+h) - f(x-h)) / (2*h)
def function_1(x):
return 0.01*x**2 + 0.1*x
def tangent_line(f, x):
d = numerical_diff(f, x)
print(d)
y = f(x) - d*x
return lambda t: d*t + y
x = np.arange(0.0, 20.0, 0.1) # 以0.1为单位,从0到20的数组x
y = function_1(x)
tf = tangent_line(function_1, 5)
y2 = tf(x)
plt.xlabel("x")
plt.ylabel("f(x)")
plt.plot(x, y)
plt.plot(x, y2)
plt.title('f(x) = 0.01*x^2 + 0.1x')
plt.show()
#对函数求导:在x=5 和x=10 处的导数
#利用微小的差分求导数的过程称为数值微分(numerical differentiation)
print('x=5 处求导:',numerical_diff(function_1, 5))
print('x=10 处求导:',numerical_diff(function_1, 10))
#和真实结果对比,发现虽然严格意义上并不一致,但误差非常小。实际上,误差小到基本上可以认为它们是相等的。
0.1999999999990898
x=5 处求导: 0.1999999999990898
x=10 处求导: 0.2999999999986347
(3)、求偏导数
(4)、梯度法求的最小值
(5)、综合案例
输出结果
求x0=3, x1=4时,关于x0的偏导数: 6.00000000000378 求x0=3, x1=4时,关于x1的偏导数: 7.999999999999119
求点(3, 4)、(0, 2)、(3, 0) 处的梯度 [6. 8.] [0. 4.] [6. 0.]
求函数最小值: [-6.11110793e-10 8.14814391e-10] 学习率过大的例子:lr=10.0: [-2.58983747e+13 -1.29524862e+12] 学习率过小的例子:lr=1e-10: [-2.99999994 3.99999992]
输出权重参数: [[-1.20419093 2.09426703 1.46228252] [ 1.74419802 0.55102885 1.2495018 ]]
输出预测: [0.84726366 1.75248618 2.00192113] 最大值的索引: 2 loss: 0.7392699844784301
求出梯度值: [[ 0.09028775 0.22323484 -0.31352259] [ 0.13543162 0.33485226 -0.47028388]]
实现代码ML之Math:理解机器学习的数学基础之求导、求偏导、求梯度、定义梯度下降算法(并尝试调参lr)
2、Taylor展开
(1)、Taylor公式的应用:求e^x
(2)、Taylor公式的应用:
3、凸函数
(1)、凸函数的判定: 定理:f(x)在区间[a,b]上连续,在(a,b)内二阶可导,那么: 若f’’(x)>0,则f(x)是凸的; 若f’’(x)
- Computer:C语言/C++语言的简介、发展历史、应用领域、编程语言环境IDE安装、学习路线之详细攻略
- DBMS/Database:数据库管理的简介、安装(注意事项等)、学习路线(基于SQLSever深入理解SQL命令语句综合篇《初级→中级→高级》/几十项代码案例集合)之详细攻略
- DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
- High&NewTech:一文了解计算机思维、数学思维的本质区别,以及算法和程序的认知比较
- Algorithm:【Algorithm算法进阶之路】之十大经典排序算法
- DataScience:数据生成之在原始数据上添加小量噪声(可自定义噪声)进而实现构造新数据(dataframe格式数据存储案例)
- CV:Image.open 和cv2.imread的简介、区别及PIL.Image格式/OpenCV格式相互转换代码实现之详细攻略
- Py之shap:shap.explainers.shap_values函数的简介、解读(shap_values[1]索引为1的原因)、使用方法之详细攻略
- Py之PaddleFL:PaddleFL/paddle_fl的简介、安装、使用方法之详细攻略
- Python语言学习:Python语言学习之正则表达式常用函数之re.search方法【输出仅一个匹配结果(内容+位置)】、re.findall方法【输出所有匹配结果(内容)】案例集合之详细攻略