CS229 老版作业1
课程视频地址:http://open.163.com/special/opencourse/machinelearning.html
课程主页:http://cs229.stanford.edu/
更具体的资料链接:https://www.jianshu.com/p/0a6ef31ff77a
作业地址:https://github.com/Doraemonzzz/CS229
参考资料:https://github.com/zyxue/stanford-cs229
这部分回顾老版作业1。
1. Newton’s method for computing least squares
(a)因为
所以
注意到
所以
(b)牛顿法的规则为
$\theta$的初始值为$0$,所以此时
所以第一步更新后
2.Locally-weighted logistic regression
(a)首先推导题目中给出的梯度计算式,注意到
所以
从而
定义$z\in \mathbb R^m$
那么
接着计算Hessian矩阵,首先求偏导数
记$D\in \mathbb R^{m\times m}$为对角阵,其中
那么
代码见(b)
(b)
# -*- coding: utf-8 -*-
"""
Created on Mon Jan 28 16:12:53 2019
@author: qinzhen
"""
import numpy as np
import matplotlib.pyplot as plt
Lambda = 0.0001
threshold = 1e-6
#读取数据
def load_data():
X = np.loadtxt('data/x.dat')
y = np.loadtxt('data/y.dat')
return X, y
#定义h(theta, X)
def h(theta, X):
return 1 / (1 + np.exp(- X.dot(theta)))
#计算
def lwlr(X_train, y_train, x, tau):
#记录数据维度
m, d = X_train.shape
#初始化
theta = np.zeros(d)
#计算权重
norm = np.sum((X_train - x) ** 2, axis=1)
W = np.exp(- norm / (2 * tau ** 2))
#初始化梯度
g = np.ones(d)
while np.linalg.norm(g) > threshold:
#计算h(theta, X)
h_X = h(theta, X_train)
#梯度
z = W * (y_train - h_X)
g = X_train.T.dot(z) - Lambda * theta
#Hessian矩阵
D = - np.diag(W * h_X * (1 - h_X))
H = X_train.T.dot(D).dot(X_train) - Lambda * np.eye(d)
#更新
theta -= np.linalg.inv(H).dot(g)
ans = (theta.dot(x) > 0).astype(np.float64)
return ans
#作图
def plot_lwlr(X, y, tau):
x_min, x_max = X[:, 0].min() - .1, X[:, 0].max() + .1
y_min, y_max = X[:, 1].min() - .1, X[:, 1].max() + .1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01),
np.arange(y_min, y_max, 0.01))
d = xx.ravel().shape[0]
Z = np.zeros(d)
data = np.c_[xx.ravel(), yy.ravel()]
for i in range(d):
x = data[i, :]
Z[i] = lwlr(X, y, x, tau)
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
X0 = X[y == 0]
X1 = X[y == 1]
plt.scatter(X0[:, 0], X0[:, 1], marker='x')
plt.scatter(X1[:, 0], X1[:, 1], marker='o')
plt.title("tau="+str(tau))
plt.show()
Tau = [0.01, 0.05, 0.1, 0.5, 1, 5]
X, y = load_data()
for tau in Tau:
plot_lwlr(X, y, tau)
参数$\tau$越大,边界越平滑,如果是unweighted的形式,相当于$\tau \to \infty$,所以可以推断出unweighted的边界类似于$\tau =5$时的情形。
备注:这里和标准答案的图不一样是因为答案中的代码为$\tau $,实际应该是$\tau^2$
3.Multivariate least squares
(a)注意到
所以
(b)
注意到
所以
令上式为$0$可得
(c)如果化为$p$个独立的最小二乘问题,则
其中$Y_{:, j}$为$Y$的第$j$列,从而
4.Naive Bayes
(a)不难看出
所以
(b)先关于$\phi_{j|y=k}$求梯度
令上式为$0$可得
从而
关于$\phi_{y}$求梯度可得
令上式为$0$可得
(c)
所以
所以
等价于
令
所以
等价于
5.Exponential family and the geometric distribution
(a)
所以
化简可得
综上
(b)
(c)由(b)可得
带入
可得
这里
所以对数似然函数为
关于$\theta_j$求偏导可得
所以
所以随机梯度上升的更新规则为