performing a least squares with regularisation in matlab

32 ビュー (過去 30 日間)
cgo
cgo 2018 年 7 月 13 日
コメント済み: Sterling Baird 2020 年 9 月 23 日
I have data sets X (2n by 8) and Y(2n by 1). I want to find the coefficients a so that Y = Xa. So we can perform a = X\Y (as a least squares minimisation).
I wanted to ask if it possible to proceed with a form of regularisation (L1 or something simple) from this?
Please help.

回答 (2 件)

Diwakar
Diwakar 2018 年 7 月 13 日
My understanding of your problem is that you want to find the coefficient a. So in order to implement optimization you can implement average of sum of least squares as shown below.
Loss= ((Y-X*a)'*(Y-X*a))/(2*n);
The above shown function is a vectorized implementation of the squared error loss function. So this can be minimized in order to get the optimal value of a. If you want to fit a curve to this then any form of regularization should be fine.
Hope this helps
Cheers!
  1 件のコメント
Sterling Baird
Sterling Baird 2020 年 9 月 23 日
How would you actually implement the regularization though?

サインインしてコメントする。


Bruno Luong
Bruno Luong 2020 年 9 月 23 日
編集済み: Bruno Luong 2020 年 9 月 23 日
Simpless method:
n = size(X,2); % 8
lambda = 1e-6; % <= regularization parameter, 0 no regularization, larger value stronger regularized solution
a = [X; lambda*eye(n)] \ [Y; zeros(n,1)]
  1 件のコメント
Sterling Baird
Sterling Baird 2020 年 9 月 23 日
Hi Bruno, thank you! That helps out quite a bit.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeProblem-Based Optimization Setup についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by