FastSurvival: Hidden Computational Blessings in Training Cox Proportional Hazards Models

Survival analysis is an important research topic with applications in healthcare, business, and manufacturing. One essential tool in this area is the Cox proportional hazards (CPH) model, which is widely used for its interpretability, flexibility, and predictive performance. However, for modern data science challenges such as high dimensionality (both $n$ and $p$) and high feature correlations, current algorithms to train the CPH model have drawbacks, preventing us from using the CPH model at its full potential. The root cause is that the current algorithms, based on the Newton method, have trouble converging due to vanishing second order derivatives when outside the local region of the minimizer. To circumvent this problem, we propose new optimization methods by constructing and minimizing surrogate functions that exploit hidden mathematical structures of the CPH model. Our new methods are easy to implement and ensure monotonic loss decrease and global convergence. Empirically, we verify the computational efficiency of our methods. As a direct application, we show how our optimization methods can be used to solve the cardinality-constrained CPH problem, producing very sparse high-quality models that were not previously practical to construct. We list several extensions that our breakthrough enables, including optimization opportunities, theoretical questions on CPH's mathematical structure, as well as other CPH-related applications.

Paper

References (71)

Scroll for more · 38 remaining

Similar papers

Peer review

Reviewer qYft4/10 · confidence 4/52024-06-17

Summary

The authors propose an alternative optimization method for the Cox proportional hazards model. They derive quadratic and cubic upper bounds on the loss and minimize these upper bounds with respect to a single model parameter at a time (similar to coordinate descent) via explicit formulas. They test their method on standard survival analysis benchmarks and also apply it to a feature selection problem with highly correlated features.

Strengths

The topic addressed by the paper (survival analysis with large datasets/high dimensionality) is relevant to the community. The prose of the paper was generally easy to follow. The background information provided on survival analysis should also make it easier for a non-expert to understand the paper.

Weaknesses

I do not believe the paper makes a significant contribution to the literature. The runtime reduction results for computing derivatives of the partial likelihood are trivial. The example given on lines 147-148, showing a "surprising" improvement from $O(n^2)$ to $O(n)$ computation time, seems to use a deliberately inefficient method for computing derivatives is a point of comparison: there is no need to compute the full Hessian (which is where the authors derive the $O(n^2)$ runtime) when we only want some diagonal terms, and indeed one would expect computing derivatives of a function of the form $\sum_{i=1}^n f_i(x)$ to take $O(n)$ time provided the derivatives of each function in the summation can be computed in constant time. To that end, the only optimization over a naive implementation is the use of partial sums to avoid repeated calculation of sums with $O(n)$ terms, which is a very standard technique. The most important problem is that the experimental results on runtime improvements are misleading. The Flchain dataset is a standard benchmark in survival analysis. It contains 7874 datapoints with 9 features, 4 of which are numeric. After standard 1-hot encoding of the categorical features, the features become 38-dimensional. Requiring 10-20 seconds for convergence (Fig. 1, rightmost plot) on such a modestly-sized dataset does not seem reasonable. I tested this myself using the scikit-survival (sksurv) library. Sksurv implements Newton's method for fitting the Cox model with an L2 penalty, as can be seen from their source code: https://github.com/sebp/scikit-survival/blob/v0.22.2/sksurv/linear_model/coxph.py#L189 I ran the following code based on the sksurv documentation: ``` from sksurv.datasets import load_flchain from sksurv.linear_model import CoxPHSurvivalAnalysis from sksurv.preprocessing import OneHotEncoder from sklearn.impute import SimpleImputer X, y = load_flchain() # Load the data Xt = OneHotEncoder().fit_transform(X) # One-hot encode categorical variables imputer = SimpleImputer().fit(Xt) # Dataset contains missing values, impute with mean Xt = imputer.transform(Xt) cph = CoxPHSurvivalAnalysis(alpha=1.0, verbose=1) # Fit the model with regularization lambda_2 = 1 as in Fig. 1 cph.fit(Xt, y) ``` The fitting procedure converged for me on my laptop (Apple M2 Pro chip) in a Jupyter notebook in 9 iterations and 0.6s wall-clock time. I also had no problems getting the model fit to converge even with no regularization, contrary to the claim that "the losses blow up when regularization is weak" for Newton's method (caption of Fig. 1a). Thus, the apparent gains in performance are most likely due to poor implementations of Newton's method/other baselines. In addition to these major issues, there are several other problems: 1. In equation (6), $\ell$ had been defined as a function of a $p$-dimensional vector $\beta$, so it is not clear what is meant by making it a function of the $n$-dimensional vector $\eta$. The reader can figure out what the authors probably meant, but this should be fixed and defined precisely. 2. The probabilistic interpretations given by the authors for some of the derivative expressions have appeared in very early works on the Cox model, see e.g. Section 2 of [1]. 3. Equation (17) is exactly a Newton step, just in a single coordinate and with an upper bound on the second derivative instead of the second derivative itself. It's then not at all clear why we should expect this to be an improvement over Newton's method, especially for the specific cases the authors mention (e.g. high correlations among the features). 4. I'm not sure what is meant by "the analytical solution to this cubic surrogate function has not been well studied" (lines 189-190). The cubic formula, which can be used to solve a general cubic equation, has existed for several hundred years (https://en.wikipedia.org/wiki/Cubic_equation). 5. Lines 191-192: The claim that minimizing a convex upper bound of the original function will lead to a decrease in the original function as well is incorrect, barring some important additional assumptions. In particular, I don't believe the authors have justified their claim that the proposed method will "ensure monotonic loss decrease and global convergence". **References:** [1] Schoenfeld, David. Partial Residuals for the Proportional Hazards Regression Model. Biometrika (1982).

Questions

Is there a mathematical justification for why we should expect the method to be robust to highly correlated features? Please also address the concerns listed in the Weaknesses section.

Rating

4

Confidence

4

Soundness

2

Presentation

2

Contribution

2

Limitations

Limitations are briefly discussed (lines 278-282), mostly regarding limitations of the Cox model itself.

Reviewer GBdX9/10 · confidence 4/52024-07-02

Summary

This paper explores the optimisation of the Cox model. Through careful mathematical analysis, the authors identified efficient ways to calculate the exact derivatives and surrogate loss functions necessary for efficient optimisation, addressing existing strategies' imprecision and time limitations.

Strengths

**Clarity** Despite not being familiar with the literature on optimising the Cox model, the problem is well-described, and the mathematical expressions are rigorous and well-detailed. **Relevance** The Cox model remains a pillar in multiple fields; ensuring its stability and quick convergence is a significant contribution.

Weaknesses

Excellent paper, only a few minor typos and questions, see below.

Questions

- It would be beneficial to add a pointer on the proof of convexity (line 82) of the nll. - Doesn't the cumulative reverse sum require times to be sorted, i.e. an initial O(n log(n)) computation? - Typo Line 195 - 'wise' should be 'wide'. - In Appendix A1.1.1, the 3rd equation, should have for second element $\eta_i$ not $\eta_j$; then no difference between 4th and 5th

Rating

9

Confidence

4

Soundness

4

Presentation

4

Contribution

3

Limitations

As an optimization paper, the authors mention that the work's limitations are the same as those of the standard Cox model.

Reviewer GRak7/10 · confidence 3/52024-07-05

Summary

This paper presents a new optimization algorithm for the Cox model, which is a classical algorithm for survival analysis presented in 1972.

Strengths

This paper is well-written. I am not an expert on optimization algorithms for convex functions, but I think I could understand the proposed algorithm and I enjoyed reading this paper. The proposed algorithm converges faster than other methods due to the new idea of exploiting high order derivatives (up to the third order derivatives) in the Cox model, and it utilizes the surrogate functions for the second and third derivatives. The proposed algorithm is reasonable and the experimental results are convincing.

Weaknesses

As a researcher in the field of survival analysis, I would like to note that the impact of this paper is moderate within the field of survival analysis. As mentioned on page 9 of this paper, the Cox model is based on a strong assumption, the proportional hazard assumption, which is unlikely to hold in practice. Therefore, many state-of-the-art models have been developed using much weaker assumptions, and the Cox model is becoming obsolete. However, I would also like to note that the Cox model still shows a certain level of popularity thanks to its simplicity and interpretability. Misc: - Line 52: we are -> ours are - Lines 93-94: the formula for quasi Newton method can be simplified by using the diag() function as in the formula for the proximal Newton method. - Line 116: result result - Line 124: a comma is missing - Line 195: wise -> wide - Line 257: it is better to clarify which correlation coefficient is used: Pearson, Spearman, or any other one? - Page 15: nothing is changed in the statement "move the partial derivative operator" - Lines 539-540: Redundant vertical lines in the inequality.

Questions

N/A

Rating

7

Confidence

3

Soundness

4

Presentation

4

Contribution

3

Limitations

Discussed in page 9.

Reviewer EDwF7/10 · confidence 3/52024-07-11

Summary

The authors propose an optimization of the Cox proportional hazards model based on minimizing surrogate functions obtained from exploiting the Lipschitz continuity property of the first and second order partial derivatives of the loss wrt coefficients. The authors show that the optimization works for sparse penalties or constrained problems like using a cardinality constraint. The authors conduct experiments to show the efficiency and stability of the proposed optimization procedure and empirically show high performance against CoxPH with Newton-Raphson as well as non-linear predictors.

Strengths

- The size of modern data sets wrt n and p can be a limiting factor for applying the CoxPH model, so innovation in optimization strategy is needed - Strongly correlated variables can be an issue for solving the CoxPH model due to colinearity - The method works well compared to standard CoxPH empirircally - Introducing beamsearch for l0 regularization and covariate selection due to a well behaved loss function leads to interesting performance improvements for large data sets and prevents overfitting

Weaknesses

- Comparison to an O(n) gradient descent framework like fastCPH (Yang et al) and BigSurvSGD would be helpful in the experiment section (including the lassonet implementation) to substantiate the claim that it is slow (in runtime) compared the proposed procedure and compare stability. - When comparing performances wrt survival metrics (c-index, ibs), including the lasso version of the optimization model would be helpful to understand the exact difference between standard lasso cox and the proposed optimization - A discussion of the tightness of the bound seems necessary when optimizing the bound instead of the loss function

Questions

- With the proposed method, is it possible to obtain the variance-covariance matrix to construct confidence intervals for the coefficients? If so, the calibration of these would be interesting to look at. - Do I understand it correctly that the survival times have to be sorted for the first and second derivative to be O(n) in the current implementation? Would that imply that the complexity of the algorithm is O(n log n)? - In future outlook time-varying features are named as an application, does this amount to just changing the risk set in the derivatives as is the case for the loss function?

Rating

7

Confidence

3

Soundness

3

Presentation

3

Contribution

3

Limitations

The authors have addressed some of the limitations of the model.

Reviewer EDwF2024-08-07

Thank you for the response, I have increased the score to accept.

Reviewer qYft2024-08-10

Thanks to the authors for their detailed response. My questions related to points 3 & 4, as well as the monotonic decrease in the objective have all been answered, and I have raised my score accordingly. I still lean towards rejection for the following reasons: 1. I understand that naively computing the second order derivatives naively using the formula on line 146 would lead to a high runtime. However, using equation (8) and standard methods for reducing runtime when computing multiple partial sums, the runtime reduction is not surprising. 2. I now understand the reason for the difference in wall clock runtime from my implementation vs. yours, and I believe that the baselines were implemented correctly. However, I am not convinced that the preprocessing used in the paper is realistic. Turning continuous features into highly correlated categorical features is the opposite of what one would usually do in practice. Is there any benefit to this procedure? For instance, does it improve the downstream performance of the model, e.g. in terms of the C-index on the test data? Barring some good justification for this (other than that it leads to better performance for the proposed method over existing baselines), this experiment doesn't seem convincing. 6. I agree with the authors that the cubic equation does not apply to this case and I apologize for the misunderstanding. That said, minimizing a cubic by finding the roots of a quadratic equation still does not constitute significant mathematical novelty. Even with the addition of L1 regularization, this is reasonably behaved one-dimensional optimization problem which should not pose much challenge for standard approaches.

Authorsrebuttal2024-08-13

1. **Your claim that using Eq.8 and standard methods for reducing runtime when computing multiple partial sums, the runtime reduction is not surprising** Your opinion on runtime reduction not being surprising is based on the assumption that you already have access to Eq.8. However, before our submission, no one knows we could possibly write the 2nd-order partial derivatives in such a way. Eq.8 is unique to the Cox model (Eq.8) and does not hold for a generic loss function. **Since Eq.8 is not something already known/established, it's not possible to conclude our work ''is not surprising'' considering only what follows it**. As mentioned before, the previous approaches rely on $\boldsymbol{\eta}^T \nabla_{\boldsymbol{\eta}} \ell(\boldsymbol{\eta}) \boldsymbol{\eta}$. This is why we can reduce the complexity from $O(n^2)$ to $O(n)$ and why we say the runtime reduction is surprising. 2. **What is the benefit of our preprocessing?** We do not perform this for the sake of creating a challenging dataset. It does have a potential benefit for producing better models. Due to the character limit, please see another post where we support this claim through experiments. The origin of our preprocessing can be traced back to additive models in statistics (see Line 27, 257-258, and 280, with citations [1, 11, 27, 28, 49, 67]). Additive models have been extensively used to capture nonlinear relationships between the target and continuous variables. For example, on the ICU patients, death risks may not increase linearly w.r.t age, a continuous variable; the risk for older patients may increase at a much higher rate. Using the original continuous variable would fail to capture this relationship. Lastly, additive models can be created by other preprocessing procedures, such as splines and polynomials (see [27, 28, 67]). However, no matter which procedure we use, the preprocessed features are likely much more correlated than the original ones. As shown in Section 4.2 (variable selection), our method can handle highly correlated features much better than existing methods. 3. **Minimizing a cubic by finding the roots of a quadratic equation still does not constitute significant mathematical novelty** We try to minimize the following cubic surrogate function: $$h_x(\Delta x):= f(x) + f'(x) \Delta x + \frac{1}{2} f''(x) \Delta x^2 + \frac{1}{6} L_3 \vert \Delta x \vert^3.$$ Your opinion on our method not constituting significant mathematical novelty is based on the assumption that *$h_x(\Delta x)$ already exists*. Specifically, you assume that $f'(x)$, $f''(x)$, and $L_3$ have already been given to you. However, this is not the case, due to two things mentioned in our initial rebuttal: a) $f''(x)$can be computed in $O(n)$ time. Previously, the best way takes $O(n^2)$. *If you compute $f''(x)$ in the old-fashioned way, it takes much longer to formulate $h_x(\Delta x)$*. b) Previously, it is unknown, regarding the Cox model, whether $L_3$ (Lipschitz constant for $f''(x)$) exists and, if so, whether there exists an explicit way to compute $L_3$. In our work, we answer both questions positively, through Eq.9 and Eq.14. *Without our work, you cannot even compute $L_3$ and thus formulate $h_x(\Delta x)$, let alone minimize it*. Moreover, *obtaining Eq.9 and Eq.14 are nontrivial mathematical tasks*. No one has expected these nice structures (probabilistic formula for the 3rd-order partial derivatives and its connection to the 3rd-order central moment calculation) could pop up out of the Cox model. Lastly, there are subjective opinions and objective facts. Regarding subjective opinions, we accept that different researchers can have different research tastes on novelty. However, objectively, the fact is that no one has written Eq.18, the analytical minimizer to $h_x(\Delta x)$. If you think they have, please point us to the literature where they publish this equation. 4. **Even with the addition of L1 regularization, this is reasonably behaved one-dimensional optimization problem which should not pose much challenge for standard approaches** Our reasoning above also applies here. *Without our work, you cannot even formulate this L1-regularized cubic surrogate function, let alone minimize it.* Previous researchers didn't know that the cubic surrogate function could be useful to solving the L1-regularized problem. All they had are the quasi and proximal Newton methods. Again, we make a contribution here because Eq.22 has never been presented. Moreover, our Eq.22 is one step further beyond the traditional soft-thresholding operator (well known as solving the L1-regularized problem with the quadratic surrogate function). Our work opens the door to solving the L1-regularized problem with the cubic surrogate function.

Authorsrebuttal2024-08-13

Follow-up on what is the benefit of our preprocessing

Please see the results below for the comparison between Cox models trained on the original and preprocessed features, respectively. The results correspond to our Figure 3 and Figure 4 in the main paper. The trend is very clear: the models trained on the preprocessed features achieve better metrics than the ones trained on the original features (for CIndex, the higher the better; for IBS, the lower the better). Note that the Employee Attrition dataset has 17 original features while the Dialysis dataset has only 7 original features. 1. **Results on Employee Attrition; see Figure 3** | Use Thresholding as Preprocessing | Support Size | Method | Train CIndex | Test CIndex | Train IBS | Test IBS | | :---: | :----: | :---: | :---: | :---: | :---: | :---: | | no | 5 | ABESS | 0.855 $\pm$ 0.002 | 0.855 $\pm$ 0.004 | 0.259 $\pm$ 0.003 | 0.260 $\pm$ 0.025 | | yes | 5 | ABESS | 0.919 $\pm$ 0.006 | 0.918 $\pm$ 0.011 | 0.204 $\pm$ 0.010 | 0.206 $\pm$ 0.030 | | no | 10 | ABESS | 0.856 $\pm$ 0.001 | 0.855 $\pm$ 0.007 | 0.253 $\pm$ 0.003 | 0.254 $\pm$ 0.021 | | yes | 10 | ABESS | 0.927 $\pm$ 0.004 | 0.925 $\pm$ 0.013 | 0.199 $\pm$ 0.012 | 0.201 $\pm$ 0.032 | | no | 15 | ABESS | 0.857 $\pm$ 0.002 | 0.856 $\pm$ 0.007 | 0.252 $\pm$ 0.002 | 0.252 $\pm$ 0.022 | | yes | 15 | ABESS | 0.925 $\pm$ 0.007 | 0.924 $\pm$ 0.013 | 0.200 $\pm$ 0.018 | 0.201 $\pm$ 0.030 | | no | 17 | ABESS | 0.856 $\pm$ 0.002 | 0.856 $\pm$ 0.006 | 0.252 $\pm$ 0.002 | 0.252 $\pm$ 0.022 | | yes | 17 | ABESS | 0.924 $\pm$ 0.006 | 0.922 $\pm$ 0.011 | 0.209 $\pm$ 0.016 | 0.209 $\pm$ 0.023 | | yes | 20 | ABESS | 0.931 $\pm$ 0.004 | 0.928 $\pm$ 0.012 | 0.189 $\pm$ 0.021 | 0.194 $\pm$ 0.039 | | yes | 25 | ABESS | 0.935 $\pm$ 0.006 | 0.934 $\pm$ 0.007 | 0.182 $\pm$ 0.021 | 0.188 $\pm$ 0.022 | | yes | 30 | ABESS | 0.939 $\pm$ 0.004 | 0.937 $\pm$ 0.010 | 0.172 $\pm$ 0.017 | 0.176 $\pm$ 0.034 | | no | 5 | ours | 0.854 $\pm$ 0.002 | 0.854 $\pm$ 0.005 | 0.252 $\pm$ 0.002 | 0.252 $\pm$ 0.020 | | yes | 5 | ours | 0.920 $\pm$ 0.001 | 0.919 $\pm$ 0.009 | 0.199 $\pm$ 0.006 | 0.201 $\pm$ 0.026 | | no | 10 | ours | 0.854 $\pm$ 0.002 | 0.853 $\pm$ 0.007 | 0.246 $\pm$ 0.002 | 0.246 $\pm$ 0.020 | | yes | 10 | ours | 0.943 $\pm$ 0.002 | 0.942 $\pm$ 0.007 | 0.127 $\pm$ 0.002 | 0.128 $\pm$ 0.013 | | no | 15 | ours | 0.855 $\pm$ 0.002 | 0.854 $\pm$ 0.007 | 0.245 $\pm$ 0.002 | 0.245 $\pm$ 0.020 | | yes | 15 | ours | 0.951 $\pm$ 0.002 | 0.950 $\pm$ 0.007 | 0.107 $\pm$ 0.003 | 0.109 $\pm$ 0.010 | | no | 17 | ours | 0.855 $\pm$ 0.002 | 0.854 $\pm$ 0.007 | 0.245 $\pm$ 0.002 | 0.245 $\pm$ 0.020 | | yes | 17 | ours | 0.951 $\pm$ 0.002 | 0.950 $\pm$ 0.007 | 0.105 $\pm$ 0.003 | 0.107 $\pm$ 0.010 | | yes | 20 | ours | 0.952 $\pm$ 0.001 | 0.950 $\pm$ 0.008 | 0.103 $\pm$ 0.002 | 0.105 $\pm$ 0.009 | | yes | 25 | ours | 0.953 $\pm$ 0.002 | 0.951 $\pm$ 0.007 | 0.101 $\pm$ 0.002 | 0.103 $\pm$ 0.007 | | yes | 30 | ours | 0.954 $\pm$ 0.002 | 0.952 $\pm$ 0.007 | 0.099 $\pm$ 0.002 | 0.102 $\pm$ 0.007 | 2. **Results on Dialysis; see Figure 4** | Use Thresholding as Preprocessing | Support Size | Method | Train CIndex | Test CIndex | Train IBS | Test IBS | | :---: | :----: | :---: | :---: | :---: | :---: | :---: | | no | 5 | ABESS | 0.649 $\pm$ 0.002 | 0.642 $\pm$ 0.008 | 0.173 $\pm$ 0.001 | 0.176 $\pm$ 0.010 | | yes | 5 | ABESS | 0.666 $\pm$ 0.011 | 0.650 $\pm$ 0.020 | 0.178 $\pm$ 0.002 | 0.182 $\pm$ 0.012 | | no | 7 | ABESS | 0.651 $\pm$ 0.002 | 0.646 $\pm$ 0.008 | 0.173 $\pm$ 0.001 | 0.176 $\pm$ 0.010 | | yes | 7 | ABESS | 0.680 $\pm$ 0.008 | 0.670 $\pm$ 0.011 | 0.175 $\pm$ 0.001 | 0.178 $\pm$ 0.010 | | yes | 10 | ABESS | 0.692 $\pm$ 0.004 | 0.683 $\pm$ 0.012 | 0.170 $\pm$ 0.002 | 0.174 $\pm$ 0.009 | | yes | 15 | ABESS | 0.701 $\pm$ 0.008 | 0.693 $\pm$ 0.018 | 0.166 $\pm$ 0.008 | 0.170 $\pm$ 0.013 | | yes | 20 | ABESS | 0.709 $\pm$ 0.008 | 0.694 $\pm$ 0.015 | 0.164 $\pm$ 0.003 | 0.171 $\pm$ 0.011 | | yes | 25 | ABESS | 0.724 $\pm$ 0.013 | 0.710 $\pm$ 0.007 | 0.156 $\pm$ 0.005 | 0.163 $\pm$ 0.011 | | yes | 30 | ABESS | 0.731 $\pm$ 0.003 | 0.719 $\pm$ 0.010 | 0.153 $\pm$ 0.003 | 0.159 $\pm$ 0.010 | | no | 5 | ours | 0.651 $\pm$ 0.003 | 0.644 $\pm$ 0.010 | 0.179 $\pm$ 0.003 | 0.181 $\pm$ 0.010 | | yes | 5 | ours | 0.672 $\pm$ 0.005 | 0.654 $\pm$ 0.014 | 0.176 $\pm$ 0.001 | 0.181 $\pm$ 0.001 | | no | 7 | ours | 0.651 $\pm$ 0.003 | 0.646 $\pm$ 0.010 | 0.175 $\pm$ 0.003 | 0.177 $\pm$ 0.009 | | yes | 7 | ours | 0.686 $\pm$ 0.003 | 0.669 $\pm$ 0.013 | 0.171 $\pm$ 0.001 | 0.176 $\pm$ 0.009 | | yes | 10 | ours | 0.703 $\pm$ 0.007 | 0.690 $\pm$ 0.017 | 0.165 $\pm$ 0.002 | 0.170 $\pm$ 0.011 | | yes | 15 | ours | 0.725 $\pm$ 0.011 | 0.704 $\pm$ 0.007 | 0.158 $\pm$ 0.006 | 0.164 $\pm$ 0.009 | | yes | 20 | ours | 0.739 $\pm$ 0.005 | 0.722 $\pm$ 0.014 | 0.152 $\pm$ 0.003 | 0.157 $\pm$ 0.010 | | yes | 25 | ours | 0.742 $\pm$ 0.004 | 0.722 $\pm$ 0.014 | 0.150 $\pm$ 0.002 | 0.156 $\pm$ 0.011 | | yes | 30 | ours | 0.745 $\pm$ 0.003 | 0.719 $\pm$ 0.014 | 0.149 $\pm$ 0.002 | 0.157 $\pm$ 0.010 |

Reviewer qYft2024-08-13

I have read the additional comments and maintain my score.

Program Chairsdecision2024-09-25

Decision

Accept (poster)

© 2026 NYSGPT2525 LLC