タグ付けされた質問 「matrix-decomposition」

行列分解とは、行列を小さな行列の積に因数分解するプロセスを指します。大きな行列を分解することにより、多くの行列アルゴリズムを効率的に実行できます。

1
大規模なスパース行列の次元削減(SVDまたはPCA)
/ edit:irlba :: prcomp_irlbaを使用できるようになりました。 / edit:自分の投稿のフォローアップ。 irlba現在、「center」および「scale」引数があり、これを使用して主成分を計算できます。例: pc <- M %*% irlba(M, nv=5, nu=0, center=colMeans(M), right_only=TRUE)$v Matrix機械学習アルゴリズムで使用したい機能の大規模でまばらなものがあります。 library(Matrix) set.seed(42) rows <- 500000 cols <- 10000 i <- unlist(lapply(1:rows, function(i) rep(i, sample(1:5,1)))) j <- sample(1:cols, length(i), replace=TRUE) M <- sparseMatrix(i, j) このマトリックスには多くの列があるため、その次元を管理しやすいものに減らしたいと思います。優れたirlbaパッケージを使用してSVDを実行し、最初のn個の主要コンポーネントを返すことができます(ここに示す5つ。実際のデータセットではおそらく100または500を使用します)。 library(irlba) pc <- irlba(M, nu=5)$u ただし、PCAを実行する前に、行列を中央に配置する必要があることを読みました(各列から列の平均値を減算します)。これは私のデータセットで行うことは非常に難しく、さらにマトリックスのスパース性を破壊します。 スケーリングされていないデータに対してSVDを実行し、それを機械学習アルゴリズムに直接入力するのはどの程度「悪い」のでしょうか?マトリックスのスパース性を維持しながら、このデータをスケーリングできる効率的な方法はありますか? / edit:AはB_minerによって注目されました。「PC」は次のようになります。 …

1
PCAで得られた低ランクの近似行列によって、再構築エラーのどのノルムが最小化されますか?
PCA(またはSVD)行列の近似を考えるとバツXX行列とX、我々は知っていることをXが最良の低ランク近似値であるX。バツ^X^\hat Xバツ^X^\hat XバツXX これはによるとされる誘発∥は⋅ ∥は2∥⋅∥2\parallel \cdot \parallel_2規範(すなわち最大固有値規範)やフロベニウスに応じ∥は⋅ ∥はF∥⋅∥F\parallel \cdot \parallel_F標準?

2
データのSVDによるデータのPCAが必要な理由
この質問は、主成分を計算する効率的な方法に関するものです。 casewise dataの特異値分解を使用した線形PCAの多くのテキスト。つまり、データあり、変数(その列)を主成分で置き換えたい場合、SVDを実行します。、特異値(固有値の平方根)の主対角を占める、右固有ベクトルは、軸変数から軸コンポーネントへの直交回転行列です。左固有ベクトルは、場合のみに似ています。その後、コンポーネント値をとして計算できます。XX\bf XX=USV′X=USV′\bf X=USV'SS\bf SVV\bf VUU\bf UVV\bf VC=XV=USC=XV=US \bf C=XV=US 変数のPCAを行う別の方法は、分解を経由している(つまり正方行列でき相関または共分散の変数の間、など)。分解は、固有分解または特異値分解である可能性があります:正方対称正定行列では、前述の\ bf Lおよび\ bf Vの対角要素と同じ固有値を持つ\ bf R = VLV 'と同じ結果が得られます。コンポーネントの値は\ bf C = XVになります。R=X′XR=X′X\bf R=X'XRR\bf R R=VLV′R=VLV′\bf R=VLV'LL\bf LVV\bf VC=XVC=XV\bf C=XV さて、私の質問:データXX\bf Xが大きな行列であり、ケースの数が(多くの場合)変数の数よりはるかに大きい場合、ウェイ(1)はウェイ(2 )、方法(1)は非常に高価なアルゴリズム(SVDなど)を大きなマトリックスに適用するため。巨大な行列UU\bf Uを計算して保存しますが、この場合は実際には必要ありません(変数のPCA)。もしそうなら、なぜそんなに多くのtexbookが主張しているように見える、または単に方法(1)だけに言及しているように見えるのでしょうか?たぶんそれは効率的で、私は何かが欠けていますか?

1
Rの逆行列の効率的な計算
逆行列を計算する必要があり、solve関数を使用しています。小さなマトリックスでsolveはうまく機能しますが、大きなマトリックスでは非常に遅くなる傾向があります。より高速な結果を得ることができる他の機能または機能の組み合わせ(SVD、QR、LU、またはその他の分解機能を使用)があるかどうか疑問に思いました。

5
マトリックス分解に関する重要な論文
最近、マトリックス分解に関するSkillicornの本を読みましたが、学部の聴衆を対象としていたため、少しがっかりしました。マトリックス分解に関する重要な論文(調査だけでなく、画期的な論文)の短い参考文献を(自分や他の人のために)編集したいと思います。私が念頭に置いているのは、主にSVD / PCA(および堅牢/スパースバリアント)とNNMFに関するものです。みなさんは、何か提案/提案がありますか?私は答えを偏らせないために私のものを控えています。各回答を2〜3論文に限定してください。 PS:これら2つの分解は、データ分析で最もよく使用されるものです。もちろん数値解析では、QR、コレスキー、LU、およびポーラーが非常に重要です。しかし、それは私の質問の焦点では​​ありません。

1
行列に1つの新しい行を追加した後のSVD分解の更新
Iが密行列があるとのM × N個の SVD分解を伴う大きさ、A = U S Vを ⊤。では、次のようにSVDを計算できます。AA \textbf{A}m × nm×nm \times nA = U S V⊤。A=USV⊤.\mathbf{A}=\mathbf{USV}^\top.Rsvd(A) 新しい番目の行がAに追加された場合、SVDをゼロから再計算せずに、古いものに基づいて(つまりU、S、およびVを使用して)新しいSVD分解を計算できますか?(m + 1 )(m+1)(m+1)AA\mathbf AうんU\mathbf USS\mathbf SVV\mathbf V

1
時系列の隣接行列の固有関数?
簡単な時系列を考えてみましょう: > tp <- seq_len(10) > tp [1] 1 2 3 4 5 6 7 8 9 10 サンプル間の時間リンクを表すこの時系列の隣接行列を計算できます。この行列の計算では、時間0に架空のサイトを追加し、この観測と時間1の最初の実際の観測間のリンクをリンク0と呼びます。時間1と時間2の間では、リンクはリンク1などです。時間は方向性のあるプロセスであるため、サイトはサイトの「上流」にあるリンクに接続されます(影響を受けます)。したがって、すべてのサイトはリンク0に接続されますが、リンク9はサイト10にのみ接続されます。これは、サイト10を除く各サイトの後に一時的に発生します。このように定義された隣接行列は、次のように作成されます。 > adjmat <- matrix(0, ncol = length(tp), nrow = length(tp)) > adjmat[lower.tri(adjmat, diag = TRUE)] <- 1 > rownames(adjmat) <- paste("Site", seq_along(tp)) > colnames(adjmat) <- paste("Link", seq_along(tp)-1) > adjmat Link 0 …

2
Rの固有値と固有ベクトルから楕円をプロットする方法は?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、相互検証のトピックになるようにします。 2年前に閉店。 誰かが次の行列の固有値と固有ベクトルから楕円をプロットするRコードを思い付くことができます A =(2.20.40.42.8)A=(2.20.40.42.8) \mathbf{A} = \left( \begin{array} {cc} 2.2 & 0.4\\ 0.4 & 2.8 \end{array} \right)

3
非負行列因子分解で潜在因子の最適数を選択する方法は?
行列の所与Vm×nVm×n\mathbf V^{m \times n}、非負行列因子分解(NMF)は、2つの非負行列発見Wm×kWm×k\mathbf W^{m \times k}及びHk×nHk×n\mathbf H^{k \times n}(すなわち、すべての要素と≥0≥0\ge 0)として分解行列を表します。 V≈WH,V≈WH,\mathbf V \approx \mathbf W\mathbf H, WW\mathbf WHH\mathbf H∥ V−WH∥2.‖V−WH‖2。\|\mathbf V-\mathbf W\mathbf H\|^2. NMFで数値を推定する一般的な方法はありますか?たとえば、そのためにクロス検証をどのように使用できますか?kkk

1
協調フィルタリングの最新技術
私は共同フィルタリング(CF)のプロジェクトに取り組んでいます。つまり、部分的に観測された行列またはより一般的にはテンソルを完成させています。私はこの分野の初心者であり、このプロジェクトでは、最終的に、現在の手法とCFの最新技術を比較する他の有名な手法とこの手法を比較する必要があります。 私の検索では、次の方法が明らかになりました。確かに、これらの論文とその参考文献のいくつかを見たり、比較を行う際に実験セクションを見たりすることで、彼らに出会いました。新しい提案された方法について知り、SoTAと比較したいのですが、次のうちどれが良い選択でしょうか?それらの間でなかったら、私はよい代表を知りたいです。 行列分解に基づく: 加重低ランク近似(ICML 2003) 協調フィルタリングのユーザー評価プロファイルのモデリング(NIPS 2003) 協調フィルタリングの多重乗数因子モデル(ICML 2004) 協調的予測のための高速最大マージンマトリックス因数分解(ICML 2005) 確率的行列因子分解(NIPS 2007) ベイジアン確率行列因子分解(ICML 2008) 回帰ベースの潜在因子モデル(KDD 2009) ガウス過程による非線形行列因子分解(ICML 2009) Dynamic Poission Factorization(Recommender Systems 2015に関するACM会議) テンソル分解に基づく: 多次元アプローチを使用したリコメンダーシステムへのコンテキスト情報の組み込み(ACM Transactions on Information Systems(TOIS)2005) ベイズ確率的テンソル因数分解(SIAMデータマイニング2010) リーマン最適化による低ランクテンソルの完了(BIT Numerical Mathematics 54.2(2014))

1
「固有」が行列の反転にどのように役立つかを説明する
私の質問は、geoR:::.negloglik.GRFまたはで悪用された計算技術に関するものgeoR:::solve.geoRです。 線形混合モデルのセットアップ: ここで、とはそれぞれ固定効果とランダム効果です。また、β B Σ = COV (Y )Y=Xβ+Zb+eY=バツβ+Zb+e Y=X\beta+Zb+e ββ\betabbbΣ=cov(Y)Σ=cov(Y)\Sigma=\text{cov}(Y) 影響を推定する場合、計算する必要がある 通常のようなものを使用して行うことができ、時にははほとんど可逆的ではないので、トリックを使用してください(X ' Σ - 1 X )(X′Σ−1X)−1X′Σ−1Y(X′Σ−1X)−1X′Σ−1Y (X'\Sigma^{-1}X)^{-1}X'\Sigma^{-1} Y solve(XtS_invX,XtS_invY)(X′Σ−1X)(X′Σ−1X)(X'\Sigma^{-1}X)geoR t.ei=eigen(XtS_invX) crossprod(t(t.ei$vec)/sqrt(t.ei$val))%*%XtS_invY (に見られるgeoR:::.negloglik.GRFとgeoR:::.solve.geoR)分解に達した したがって (X′Σ−1X)=ΛDΛ−1(X′Σ−1X)=ΛDΛ−1 (X'\Sigma^{-1}X)=\Lambda D \Lambda^{-1}\\ Λ′=Λ−1Λ′=Λ−1\Lambda'=\Lambda^{-1}(X′Σ−1X)−1=(D−1/2Λ−1)′(D−1/2Λ−1)(X′Σ−1X)−1=(D−1/2Λ−1)′(D−1/2Λ−1) (X'\Sigma^{-1}X)^{-1}=(D^{-1/2}\Lambda^{-1})'(D^{-1/2}\Lambda^{-1}) 2つの質問: この固有分解は反転にどのように役立ちますか?(X′Σ−1X)(X′Σ−1X)(X'\Sigma^{-1}X) 他の実行可能な代替手段(堅牢で安定したもの)はありますか?(例:qr.solveまたはchol2inv)

1
R / mgcv:なぜte()とti()テンソル積が異なる表面を生成するのですか?
のmgcvパッケージにRは、テンソル積の相互作用をフィッティングするための2つの関数がte()ありti()ます。私は2つの作業の基本的な分業を理解しています(非線形の相互作用を当てはめるか、この相互作用を主効果と相互作用に分解するか)。私が理解していないのは、なぜte(x1, x2)、そしてti(x1) + ti(x2) + ti(x1, x2)(わずかに)異なる結果を生成するのかということです。 MWE(から適応?ti): require(mgcv) test1 <- function(x,z,sx=0.3,sz=0.4) { x <- x*20 (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+ 0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2)) } n <- 500 x <- runif(n)/20;z <- runif(n); xs <- seq(0,1,length=30)/20;zs <- seq(0,1,length=30) pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30))) truth <- matrix(test1(pr$x,pr$z),30,30) f <- test1(x,z) y <- f + rnorm(n)*0.2 par(mfrow = c(2,2)) # …
11 r  gam  mgcv  conditional-probability  mixed-model  references  bayesian  estimation  conditional-probability  machine-learning  optimization  gradient-descent  r  hypothesis-testing  wilcoxon-mann-whitney  time-series  bayesian  inference  change-point  time-series  anova  repeated-measures  statistical-significance  bayesian  contingency-tables  regression  prediction  quantiles  classification  auc  k-means  scikit-learn  regression  spatial  circular-statistics  t-test  effect-size  cohens-d  r  cross-validation  feature-selection  caret  machine-learning  modeling  python  optimization  frequentist  correlation  sample-size  normalization  group-differences  heteroscedasticity  independence  generalized-least-squares  lme4-nlme  references  mcmc  metropolis-hastings  optimization  r  logistic  feature-selection  separation  clustering  k-means  normal-distribution  gaussian-mixture  kullback-leibler  java  spark-mllib  data-visualization  categorical-data  barplot  hypothesis-testing  statistical-significance  chi-squared  type-i-and-ii-errors  pca  scikit-learn  conditional-expectation  statistical-significance  meta-analysis  intuition  r  time-series  multivariate-analysis  garch  machine-learning  classification  data-mining  missing-data  cart  regression  cross-validation  matrix-decomposition  categorical-data  repeated-measures  chi-squared  assumptions  contingency-tables  prediction  binary-data  trend  test-for-trend  matrix-inverse  anova  categorical-data  regression-coefficients  standard-error  r  distributions  exponential  interarrival-time  copula  log-likelihood  time-series  forecasting  prediction-interval  mean  standard-error  meta-analysis  meta-regression  network-meta-analysis  systematic-review  normal-distribution  multiple-regression  generalized-linear-model  poisson-distribution  poisson-regression  r  sas  cohens-kappa 

1
協調フィルタリング/推奨システムで非否定性が重要なのはなぜですか?
私が見てきたすべての最新の推奨システムでは、マトリックス因数分解に依存しているため、非負のマトリックス因数分解がユーザー映画マトリックスで実行されます。なぜ非負性が解釈可能性にとって重要であるか、および/または疎要素が必要かどうかを理解できます。しかし、たとえばnetflix賞の競争のように、予測のパフォーマンスのみに関心がある場合は、なぜ非否定性の制限を課すのでしょうか。因数分解で負の値を許可するよりも厳密に悪いように思えます。 このペーパーは、協調フィルタリングでの非負行列因数分解の使用の1つの非常に引用された例です。

1
低ランク線形システムの高速計算/推定
方程式の線形システムは、計算統計に広く使用されています。私が遭遇した1つの特別なシステム(たとえば、因子分析)はシステムです Ax=bAx=bAx=b ここで、 ここでDはであるN × N厳密に正の対角を有する対角行列で、ΩはあるM × M(とM « N対称半正定値行列)であり、Bは任意であり、N × m行列。低ランクの行列によって摂動された対角線形システム(簡単)を解くように求められます。上記の問題を解決する素朴な方法は、Woodburyの式を使用してAを反転させることですA=D+BΩBTA=D+BΩBTA=D+ B \Omega B^TDDDn×nn×nn\times nΩΩ\Omegam×mm×mm\times mm≪nm≪nm\ll nBBBn×mn×mn\times mAAA。ただし、コレスキーおよびQR分解は通常、線形システム(および正規方程式)の解を劇的に高速化できるため、これは正しくありません。私は最近次の論文を思いつきました。これはコレスキーのアプローチを採用しているようで、ウッドベリーの反転の数値的不安定性について言及しています。しかし、論文は草案のようで、数値実験や裏付けとなる研究が見つかりませんでした。私が説明した問題を解決するための最新技術は何ですか?

2
ロジスティック損失関数を使用した行列分解による協調フィルタリング
協調フィルタリングの問題を検討してください。サイズ#users * #itemsの行列あります。ユーザーiがアイテムjを気に入った場合、ユーザーiがアイテムjを嫌い、(i、j)ペアに関するデータがない場合。私たちは予測したい将来のユーザー、アイテムのペアのために。MMMM私、j= 1Mi,j=1M_{i,j} = 1M私、j= 0Mi,j=0M_{i,j} = 0M私、j= ?Mi,j=?M_{i,j}=?M私、jMi,jM_{i,j} 標準の協調フィルタリングアプローチは、が最小になるような2つの行列積としてMを表すことです(たとえば、既知の要素の平均二乗誤差を最小化します)。U× VU×VU \times V| | M− U× V| |2||M−U×V||2||M - U \times V||_2MMM 私にとってロジスティック損失関数の方が適しているようですが、なぜすべてのアルゴリズムがMSEを使用しているのですか

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.