⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newton_alpha.m

📁 使用变分EM方法实现的LDA文本模型 输入为文本即可 分解实现
💻 M
字号:
function alpha = newton_alpha (gammas,maxiter,ini_alpha)% alpha = newton_alpha (gammas,[maxiter])% Newton-Raphson iteration of LDA Dirichlet prior.% gammas  : matrix of Dirichlet posteriors (M * k)% maxiter : # of maximum iteration of Newton-Raphson% $Id: newton_alpha.m,v 1.2 2004/10/09 08:34:54 dmochiha Exp $[M,K] = size(gammas);if ~(M > 1)  alpha = gammas(1,:);  return;endif nargin < 3  ini_alpha = mean(gammas) / K; % initial point  if nargin < 2    maxiter = 20;  endendl = 0;g = zeros(1,K);pg = sum(psi(gammas),1) - sum(psi(sum(gammas,2)));alpha = ini_alpha;palpha = zeros(1,K);for t = 1:maxiter  l = l + 1;  alpha0 = sum(alpha);  g = M * (psi(alpha0) - psi(alpha)) + pg;  h = - 1 ./ psi(1,alpha);  hgz = h * g' / (1 / psi(1,alpha0) + sum(h));    for i = 1:K    alpha(i) = alpha(i) - h(i) * (g(i) - hgz) / M;  end  if any(alpha < 0)    alpha = newton_alpha(gammas,maxiter,ini_alpha / 10); % try again!    return;  end    if (l > 1) && converged(alpha,palpha,1.0e-4)    break;  end  palpha = alpha;end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -