From b4fbbc482a7c574649deea77e983207562a651fb Mon Sep 17 00:00:00 2001 From: 13Sharad <143598174+13Sharad@users.noreply.github.com> Date: Sat, 2 Nov 2024 23:51:31 +0530 Subject: [PATCH 1/2] Markov Chain Monte Carlo. #1559 --- .../Program.c | 66 ++++++++++++++++++ .../Program.exe | Bin 0 -> 42828 bytes .../Readme.md | 59 ++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.c create mode 100644 Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.exe create mode 100644 Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Readme.md diff --git a/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.c b/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.c new file mode 100644 index 00000000..160bef0f --- /dev/null +++ b/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +// Define M_PI if not available in the math library +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +// Function to calculate the probability density of the target distribution (normal distribution) +double target_distribution(double x) { + double mean = 0.0; + double std_dev = 1.0; + double exponent = - (x - mean) * (x - mean) / (2 * std_dev * std_dev); + return exp(exponent) / (std_dev * sqrt(2 * M_PI)); +} + +// Function to propose a new sample, adds a random value within a step range around the current sample +double proposal(double x) { + double step_size = 0.5; // Step size for proposal distribution + return x + ((rand() / (double)RAND_MAX) - 0.5) * step_size * 2.0; +} + +// Metropolis-Hastings algorithm for MCMC +void metropolis_hastings(int samples, double *chain) { + chain[0] = 0.0; // Initial starting point + + for (int i = 1; i < samples; i++) { + double current = chain[i - 1]; + double proposed = proposal(current); + + // Calculate acceptance ratio + double acceptance_ratio = target_distribution(proposed) / target_distribution(current); + + // Accept or reject the proposal based on the acceptance ratio + if (acceptance_ratio >= 1.0 || ((double)rand() / RAND_MAX) < acceptance_ratio) { + chain[i] = proposed; // Accept proposal + } else { + chain[i] = current; // Reject proposal, stay at current sample + } + } +} + +// Main function to initialize, run MCMC, and print samples +int main() { + srand(time(NULL)); // Seed for random number generation + + int samples = 10000; // Number of samples + double *chain = malloc(samples * sizeof(double)); + if (chain == NULL) { + fprintf(stderr, "Memory allocation failed\n"); + return 1; + } + + metropolis_hastings(samples, chain); + + // Output every 100th sample to avoid too much output and for easier verification + printf("MCMC Samples (every 100th sample):\n"); + for (int i = 0; i < samples; i += 100) { + printf("%f\n", chain[i]); + } + + free(chain); + return 0; +} \ No newline at end of file diff --git a/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.exe b/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.exe new file mode 100644 index 0000000000000000000000000000000000000000..fcb6c2f8d88660a2103fc17e7deceb3b27b39933 GIT binary patch literal 42828 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 the Markov Chain + +The Markov Chain is initialized with a starting point and iteratively updated by sampling from the distribution. Two popular MCMC methods are: + + Gibbs Sampling: A special case of MCMC useful when sampling from the conditional distribution of each variable is easier. + +2. >Sampling Process + +The chain progresses by either accepting or rejecting new sample points based on the acceptance criterion (for Metropolis-Hastings) or by drawing from the conditional distributions (in Gibbs Sampling). + +3. >Convergence to Target Distribution + +As the Markov Chain progresses, the sequence of samples converges to the target distribution, allowing for approximations of distribution properties. + +# Time Complexity + +>Sampling: Varies based on the complexity of the target distribution and the proposal distribution used. Generally, MCMC methods are computationally intensive as they require many iterations to reach convergence. + +# Applications + +1. MCMC algorithms are widely used in: + +>Bayesian Inference: Estimating posterior distributions for model parameters. + +>Statistical Modeling: Approximating complex distributions in high-dimensional spaces. + +>Machine Learning: Sampling-based methods for unsupervised learning and probabilistic generative models. + + +# Conclusion + +The Markov Chain Monte Carlo (MCMC) algorithm is a powerful tool for approximating complex distributions that are hard to sample from directly. Although computationally intensive, MCMC enables flexible and scalable solutions in various fields, especially in Bayesian inference. However, careful tuning of parameters and convergence checks are essential to obtain accurate and reliable samples. \ No newline at end of file From 8ff5a0f53add05d3aead7eebb4e3603a37fd29fc Mon Sep 17 00:00:00 2001 From: 13Sharad <143598174+13Sharad@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:19:49 +0530 Subject: [PATCH 2/2] Delete Program.exe --- .../Program.exe | Bin 42828 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.exe diff --git a/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.exe b/Machine_Learning_Algorithms/Markov Chain Monte Carlo (MCMC) Algorithm/Program.exe deleted file mode 100644 index fcb6c2f8d88660a2103fc17e7deceb3b27b39933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42828 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