L2ノルムとL1ノルムの違い

CVXを使って,L1ノルムとL2ノルムの違いをみてみる.
もっと正確に言うと,L1ノルムでスパースな解が求まっているのかを確かめる.

  1. >> m=16;n=8;
  2. >> A=randn(m,n); b=randn(m,1);
    % L2 norm
    % Minimize |A*x-b|_2
    % subject to |x|_2
  3. >> cvx_begin
  4. >> variable x_l2(n);
  5. >> minimize( norm(A*x_l2-b,2)+norm(x_l2,2));
  6. >> cvx_end
    % L1 norm
    % Minimize |A*x-b|_2
    subject to |x|_1
  7. >> cvx_begin
  8. >> variable x_l1(n);
  9. >> minimize( norm(A*x_l1-b,2)+norm(x_l1,1));
  10. >> cvx_end

x_l2, x_l1に,それぞれ正則化項をL2ノルム,L1ノルムにした解が格納されているので比較.
>> [x_l2 x_l1]
ans =
-0.1598 -0.1088
-0.0488 -0.0000
0.0380 0.0000
0.1336 0.0000
0.3207 0.2636
-0.0513 -0.0000
0.3794 0.2774
-0.0616 -0.0028

という事で,L1ノルムによってスパースな解が求まっている事が分かる.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s