-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimization with uncertainties #26
Comments
Thanks to your interests. For example, let's do linear regression with additional error term.
#[macro_use]
extern crate peroxide;
use peroxide::fuga::*;
fn main() {
// Generate Data
let x = seq(1, 10, 1);
let eps_true = rnorm!(10, 0, 1);
let y = x.fmap(|t| 2f64 * t + 1f64).add_v(&eps_true);
let data = cbind(x.into(), y.into());
// Generate Normal error (eps ~ N(0, 1^2))
let eps_guess = rnorm!(10, 0, 1);
// Optimize with new error
let mut opt = Optimizer::new(data, |x, w| linear_regression(x, w, &eps_guess));
let p = opt.set_init_param(c!(1, 1))
.set_max_iter(50)
.set_method(LevenbergMarquardt)
.optimize();
p.print();
opt.get_error().print();
}
// Linear regression with error: y_i = w_0 + w_1 * x_i + epsilon_i
fn linear_regression(x: &Vec<f64>, w: Vec<Number>, epsilon: &Vec<f64>) -> Option<Vec<Number>> {
Some(
x.iter()
.map(|&t| Number::from_f64(t))
.zip(epsilon.iter().map(|&t| Number::from_f64(t)))
.map(|(t, eps)| w[0] + w[1] * t + eps)
.collect()
)
} Maybe add additional argument can make some confusion. For this reason, it is cautious to accept your good suggestion. If you have more question or suggestion, then please let me know. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is there a way to use
Optimizer
with weights? It would be very useful if your data include uncertaintiessigma
, a user can easily found weights as1 / sigma^2
.If there is no such way, would you accept a PR where loss function is
sum (f_i - y(x_i))^2 / sigma_i^2
,Optimizer
has additional fieldweight: Optional<Vec<f64>>
andOptimizer::new
accepts two or three column data (additional optional column is weight)?The text was updated successfully, but these errors were encountered: