Supervised Learning: Regression
本节课更加注重代码实践,而不是数学理论…
优化问题
注意几个问题
- 观察是否一眼就能解决
- 检查是否有下界,不然无意义
- 检查是否有意义,存在的 x 处于空集
最优值 or 最优解
关注最优值
买彩票:关注怎么中奖,而不是奖金有多少。
突函数 Convex Functions
求导求最优解:
多元函数的等高线
import numpy as np
import matplotlib.pyplot as plt
# build meshgrid
# -1 到 1 画 1000 段
x = np.linspace(-1, 1, 1000)
y = np.linspace(-1, 1, 1000)
# 创建一个网格,其中 X 和 Y 是两个二维数组,表示 x 和 y 在网格上的所有组合:
X, Y = np.meshgrid(x, y)
a = 2
b = 5
# 计算等高线图的高度值 Z
Z = a*X**2 + b*Y**2
fig = plt.figure(figsize=(7, 7))
# 绘制等高线图
# X 和 Y 是网格坐标,Z 是高度值
# np.linspace() 生成了 10 个等间距的高度值作为等高线的轮廓线:
cs = plt.contour(X, Y, Z, np.linspace(Z.min(), Z.max(), 10))
# 设置 x 和 y 轴的范围和标签
plt.xlim([X.min(), X.max()])
plt.ylim([Y.min() - 0.01, Y.max() + 0.01])
plt.xlabel(r'$\theta_0$', fontsize=15)
plt.ylabel(r'$\theta_1$', fontsize=15)
# 添加轮廓线的标签
# fontsize 设置标签的字体大小,colors 设置标签的颜色,fmt 设置标签的格式
plt.clabel(cs, fontsize=10, colors=('k','r'), fmt='%.2f')
plt.show()
梯度 The Gradient
梯度记住两个点就好
- 它垂直于切平面
- 它的维度跟 x的维度一样
用方程求解是一个不流行的方法
用梯度下降法更加流行
import numpy as np
def f(x_0):
return x_0[0]**2+x_0[1]**2
def gradiente(x_0):
return 2*x_0
def gradienteDescent(x_0, alpha, epsilon):
while np.linalg.norm(gradiente(x_0))>epsilon:
x_0 = x_0 - alpha * gradiente(x_0)
return x_0
x_0 = np.array([1,1])
optimal_x = gradienteDescent(x_0, alpha=0.1, epsilon=0.0001)
print(optimal_x)
print(np.linalg.norm(gradiente(optimal_x)))
写在最后的idea:
计算机现在就像早期的英语专业,所以要发散性思维。
研究生申请可以考虑一些其他的专业,比如说金融,机械…
申请工作可以考虑格力、小米、灯泡等偏制造业的公司…
老师最差的师妹去了很好的公司,师妹去了蓝月亮。