PERSONAL PROJECTS

Simple Clustering Application (SCAn)

SCAn Demo

Unsupervised Machine Learning/Clustering

As someone with prior experience in neural networks and supervised machine learning, I was eager to expand my knowledge of unsupervised machine learning. I learn best while creating, so I decided to develop a tool that would enable non-data scientists to perform clustering analysis on their data. To accomplish this, I developed a web application that utilizes KMeans clustering to identify patterns in user-uploaded data. The application runs KMeans clustering against all permutations of selected feature dimensions to determine which features produce the most distinct clusters. This allows the user to identify the optimal feature sets that lead to the most accurate clusters.

To automate the process of choosing the "best" number of clusters for a given featureset (since KMeans requires that information to be provided), the application runs both silhouette scoring and a custom version of the elbow method that I created. Silhouette scoring measures the similarity of an object to its own cluster compared to other clusters, while the elbow method involves plotting the total within-cluster sum of squares against the number of clusters and identifying the "elbow point" where the rate of decrease in sum of squares slows down. If these two methods disagree, the application analyzes the range between the two results to determine which number of clusters creates the most distinct clusters.

Furthermore, to compare the generated clusters from all the permutations against one another, I created a method that calculated n-dimensional spheres around cluster centroids. This allowed me to determine the amount of overlap between different clusters (similar to collision detection in game development), which became a "score" to determine which feature sets generated the most distinct clusters. By leveraging principles of higher dimensional geometry, I was able to develop an innovative solution that automated the clustering analysis and helped users identify the most accurate and optimal feature sets.

It's worth noting that I intentionally did not utilize Principal Component Analysis (PCA) in this project. I made this decision because PCA can be too abstract of a concept for non-data scientists, and I wanted the application to be accessible and user-friendly for all users.

Through this project, I expanded my knowledge of unsupervised machine learning and created a tool that automates clustering analysis on user-uploaded data. I gained expertise in KMeans clustering, silhouette scoring, and the elbow method, and developed a method that calculated n-dimensional spheres to determine the overlap between different clusters. By leveraging principles of higher dimensional geometry, I created an innovative solution that identified the most accurate and optimal feature sets. This project provided me with valuable experience in developing mathematical solutions for practical problems in data analysis and machine learning.

View Demo

Cipher Challenge

Cipher Challenge Demo

Cryptography

As someone with a passion for unsolved math problems, I was intrigued by a particularly challenging problem and discovered an interesting property that could be applied to create a strong cipher. Using this knowledge, I created a challenging cipher and transformed it into a web application that not only challenges cryptanalysts to decrypt a ciphertext but also allows users to encrypt/decrypt messages of their own using the same cipher.

The web application challenges users to decrypt a challenge message and offers a prize of $500 to the first person who succeeds. The cipher is incredibly difficult to break due to its unique property based on the math discovery. In fact, over 700 people have attempted to decrypt the message, but no one has been able to do so successfully. Despite allowing users to encrypt/decrypt messages of their own, the cipher is not susceptible to a "chosen plaintext attack" due to its unique property.

A "chosen plaintext attack" is a type of cryptanalysis that involves an attacker selecting plaintext and obtaining its corresponding ciphertext from the cipher. The attacker can use this information to analyze the cipher's behavior and potentially discover weaknesses that can be used to decrypt other messages. However, the cipher I created has a unique property that makes it immune to such attacks.

This project was a valuable learning experience that allowed me to apply my passion for unsolved math problems to create a strong cipher. I learned about cryptography and the different types of attacks that can be used to decrypt messages. Through the creation of the web application, I learned about web development and the process of transforming an idea into a functioning application. This project provided me with a solid foundation for future projects and showcased my creativity and problem-solving skills.

View Web App

Puffy Fish

Puffy Fish Demo

Mobile App/Game Development

As a commuter in Seattle, I spent many bus rides playing mobile games on my phone to pass the time. While playing a particular game, I realized that I wanted to create a version with more dimensions to make it more challenging and entertaining. This idea led me to explore the world of game development, and I decided to build my own mobile game using a development platform called Unity.

To create the game, I first took a course on Udemy that taught me how to develop 2D mobile games using Unity. Unity is a popular game engine that allows developers to create games using C#, which can be converted to deploy on various platforms such as iPhones, Androids, and WebGL. With this knowledge, I was able to start building my game.

The game I created is a simple yet challenging one where the player must avoid barriers by lining up a fish sprite with randomly positioned gaps. The unique feature of my game is that the fish sprite grows at a constant rate, requiring the player to continuously tap the screen to make the fish remain small enough to pass through the gaps in the barriers. The game adds a risk-reward incentive to the challenge, as the larger the sprite is when it passes through a gap, the more points the player receives. This feature adds an exciting element to the game and requires the player to use changing strategies and take risks to beat their high score.

Through this project, I gained knowledge on using development platforms like Unity to create games and learned how to develop games using C#. I also learned about game design and the importance of incorporating unique features into a game to make it more challenging and entertaining. This project allowed me to apply my creativity and knowledge of development to create a simple yet challenging game. Most importantly, it taught me how to plan and execute a large project, from conception to deployment, and provided me with a solid foundation for pursuing future complex projects.

View Demo

UFC Prediction Model

Supervised Machine Learning

As a former MMA practitioner and UFC fan, I was fascinated with the idea of creating an ML model that predicts the outcomes of UFC bouts based on fighter statistics and historical data. To make this a reality, I enrolled in an online course on supervised machine learning using Tensorflow from Udemy. To gather the necessary historical bout data, I created a script to scrape the UFC stats website as downloadable metrics were not available. The data was then cleaned, scaled, and used to train the model. Once the model was trained, I could input fighter stats for upcoming bouts and obtain accurate predictions about who would win.

This project provided me with a hands-on experience of applying supervised machine learning using Tensorflow to solve a real-world problem. I learned how to gather and preprocess data from real-world, messy sources using a custom script, and how to create a model that could predict future outcomes based on historical data. The project required a deep understanding of data cleaning, scaling, and the principles of supervised machine learning. The most challenging aspect of the project was to create a model that could accurately predict the outcome of a complex and dynamic sport such as MMA. Through this project, I gained valuable insights into the world of machine learning and its potential to solve problems in diverse fields, including sports. It also reinforced my belief in the importance of continuous learning and the value of gaining new skills to stay relevant in today's fast-paced and dynamic world.

No Demo Available