NYU机器学习第二期-l1l2正则化

下文只会挑一些可以起到检验自学效果的并且有趣的地方来说明,系统的学习请前往课程资源链接。  【毕竟时间有限,和妹子吃鸡更要紧 
同自学的可以相互交流
一起从“kind of understanding”
到“actual understanding”.

课程资源

  • 标有对号的问题下期给答案

机器学习课程知乎问答
下文ppt截图也来自链接里NYU的课件。

上期解答

  • 使用更多的数据可以减小近似误差吗?
    不可以,只可以减小估计误差,近似误差只受假设空间的影响。
  • 所有的估计误差都是因为我们知道data generation distribution,反过来我们能不能先去用数据估计这个分布,再利用这个分布来计算risk,做优化呢??
    不可以,我们之所以搞这套机器学习方法,就是因为直接估计这个分布太难了,不现实。

l1 l2 regularization

已写在这篇博客
下面给这篇博客里两个famous pictures 的Python代码

  • L1 正则化的famous picture
    下图蓝色区域代表L1约束空间即 ∣ w 1 ∣ + ∣ w 2 ∣ ≤ r |w_1|+|w_2| \le r w1+w2r,红色是全局最小值 w ^ \hat{w} w^附近的等值线
    L1正则化
mport numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
# axis
fig = plt.figure(figsize=(10, 10))
ax = axisartist.Subplot(fig, 111)  
fig.add_axes(ax)
ax.axis[:].set_visible(False)
ax.axis["x"] = ax.new_floating_axis(0,0)
ax.axis["x"].set_axisline_style("-|>", size = 1.0)
ax.axis["y"] = ax.new_floating_axis(1,0)
ax.axis["y"].set_axisline_style("-|>", size = 1.0)
ax.axis["x"].set_axis_direction("bottom")
ax.axis["y"].set_axis_direction("left")
# elliposid 
step = 0.005
x = np.arange(-3, 6, step)
y = np.arange(-3, 7, step)
X, Y = np.meshgrid(x, y)
#Z = 2 * X**2 + 4*X*Y - 12 * X + 4 * Y**2 - 20 * Y + 26
Z = 2 * X**2  - 4 * X + Y**2 - 8 * Y +18
contour = plt.contour(X, Y, Z, [1,2,4,8], colors='r', linewidths=2.0)
# center
plt.scatter(1,4, c="k")
plt.annotate("$\hat{w}$", [1.1,3.8], fontsize = 14)
plt.xticks([])
plt.yticks([])
#region
plt.plot(0,0, c="b", marker="D", markersize=120, markeredgecolor = '0.75')
plt.title("The Famous Picture for $\ell_1$ Regularization ", fontsize=16)
plt.savefig("lasso.jpg")
plt.show()
  • L2 正则化的famous picture
    下图蓝色区域代表L2约束空间即 ∣ w 1 ∣ 2 + ∣ w 2 ∣ 2 ≤ r |w_1|^2+|w_2|^2 \le r w12+w22r,红色是全局最小值 w ^ \hat{w} w^附近的等值线
    L2正则化
mport numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
# axis
fig = plt.figure(figsize=(10, 10))
ax = axisartist.Subplot(fig, 111)  
fig.add_axes(ax)
ax.axis[:].set_visible(False)
ax.axis["x"] = ax.new_floating_axis(0,0)
ax.axis["x"].set_axisline_style("-|>", size = 1.0)
ax.axis["y"] = ax.new_floating_axis(1,0)
ax.axis["y"].set_axisline_style("-|>", size = 1.0)
ax.axis["x"].set_axis_direction("bottom")
ax.axis["y"].set_axis_direction("left")
# elliposid 
step = 0.005
x = np.arange(-3, 6, step)
y = np.arange(-3, 7, step)
X, Y = np.meshgrid(x, y)
#Z = 2 * X**2 + 4*X*Y - 12 * X + 4 * Y**2 - 20 * Y + 26
Z = 2 * X**2  - 4 * X + Y**2 - 8 * Y +18
contour = plt.contour(X, Y, Z, [1,2,4,8], colors='r', linewidths=2.0)
# center
plt.scatter(1,4, c="k")
plt.annotate("$\hat{w}$", [1.1,3.8], fontsize = 14)
plt.xticks([])
plt.yticks([])
#region
plt.plot(0,0, c="b", marker="o", markersize=150, markeredgecolor = '0.75')
plt.title("The Famous Picture for $\ell_1$ Regularization ", fontsize=16)
plt.savefig("lasso.jpg")
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值