迭代重新加权最小二乘
Posted
技术标签:
【中文标题】迭代重新加权最小二乘【英文标题】:iterative reweighted least squares 【发布时间】:2020-09-18 20:15:08 【问题描述】:我正在尝试在 python 中手动实现 irls 逻辑回归(Bishop - Pattern Recognition And Machine Learning 中的第 4.3.3 章)。 为了更新权重,我使用 但是我没有得到令人满意的结果,而且我的权重在每次迭代中都在无限增长。
到目前为止,我已经编写了这段代码:
def y(X, w):
return sigmoid(X.dot(w))
def R(y):
R = np.identity(y.size)
R = R*(y*(1-y))
return R
def irls(X, t):
w = np.ones(X.shape[1])
w = w.reshape(w.size, 1)
t = np.array(list(map(lambda x: 1 if x else 0, t)))
t = t.reshape(t.size, 1)
#after 3 iterations matrix is singular
for i in range(3):
y_ = y(X,w)
w = w - np.linalg.inv(X.T.dot(R(y_)).dot(X)).dot((X.T).dot(y_-t))
return w
其中 X 是我的设计矩阵(64 个特征和 74 个样本),t 是包含布尔值的目标向量(数据来自 https://archive.ics.uci.edu/ml/datasets/Mice+Protein+Expression)。
感谢任何帮助指出我出错的地方。
【问题讨论】:
【参考方案1】:所以答案很简单,设置初始权重向量w = np.zeros(X.shape[1)
【讨论】:
以上是关于迭代重新加权最小二乘的主要内容,如果未能解决你的问题,请参考以下文章
Kalman卡尔曼滤波,Least Square最小二乘估计,加权最小二乘,递归最小二乘