Add gradient clipping to SGDRegressor for stability and differential privacy

### Describe the workflow you want to enable

Add gradient clipping to SGDRegressor to:
1. Improve training stability when dealing with outliers or ill-conditioned data
2. Enable differentially private regression by bounding the influence of any single observation

This addition would enable users to:
- Train more stable models on real-world data with outliers
- Implement differentially private regression with minimal additional code
- Control the maximum influence of any single observation on the model

### Describe your proposed solution

Add a `clip_value` parameter to SGDRegressor that bounds the L2 norm of gradients during training:

```python
# Example usage
model = SGDRegressor(clip_value=1.0)
```

Implementation would involve:
1. Add `clip_value` parameter (default: None for no clipping)
2. Add gradient clipping in the update step:
```python
def _clip_gradient(self, grad):
    if self.clip_value is None:
        return grad
    norm = np.linalg.norm(grad)
    if norm > self.clip_value:
        return grad * (self.clip_value / norm)
    return grad
```

### Research basis and precedent

Gradient clipping is well-established:
- Introduced in ["On the difficulty of training Recurrent Neural Networks"](https://arxiv.org/abs/1211.5063) (2013, [7000+ citations](https://scholar.google.com/scholar?cites=3353056030101542547&as_sdt=20005&sciodt=0,9&hl=en))
- Standard practice in deep learning frameworks (PyTorch, TensorFlow)
- Core component of differentially private SGD as formalized in ["Deep Learning with Differential Privacy"](https://arxiv.org/abs/1607.00133) (2016, [6000+ citations](https://scholar.google.com/scholar?cites=11431158613977668861&as_sdt=20005&sciodt=0,9&hl=en))

Implemented in:
- PyTorch: `torch.nn.utils.clip_grad_norm_`
- TensorFlow: `tf.clip_by_norm`
- JAX: `jax.example_libraries.optimizers.clip_grads`
- Scikit-learn's neural networks

### Benefits

1. **Stability**: Prevents exploding gradients and improves convergence on ill-conditioned problems
2. **Privacy**: Essential building block for differentially private regression
3. **Simple implementation**: Minimal code changes required
4. **No new hyperparameters** when using default None (maintains backward compatibility)

### Benchmarks

Would be happy to provide benchmarks showing:
1. Improved stability on datasets with outliers
2. Convergence comparisons with/without clipping
3. Privacy-utility tradeoffs when used for differential privacy

Let me know if you'd like me to provide implementation details or benchmarks to support this addition.

### Describe alternatives you've considered, if relevant

_No response_

### Additional context

_No response_

COMMENT:
Hello, I would also like to contribute with a PR if possible. I have a theoretical background in ML and this would be my first ever contribution!

On a side note, there are general uses of gradient clipping in deep learning beyond differential privacy (although differential privacy is certainly a good application) such as speeding up training (https://arxiv.org/pdf/1905.11881), so if this is a needed feature for MLPs then I would be happy to work on it too.

Labels: New Feature, Needs Decision