Universal Hyperbolic Geometry Library for Machine Learning
Project description
UHG-Based Anomaly Detection
This repository contains an implementation of anomaly detection using Universal Hyperbolic Geometry (UHG) principles. The code leverages the UHG library to perform geometric operations in hyperbolic space.
Overview
Universal Hyperbolic Geometry (UHG) provides a powerful framework for representing complex hierarchical data. This implementation uses UHG principles to detect anomalies in network traffic data by embedding the data in hyperbolic space and identifying points that deviate from the normal patterns.
Key Features
- UHG-based graph neural network for anomaly detection
- Efficient implementation of UHG operations using the UHG library
- Support for large-scale datasets through batched processing
- Visualization tools for analyzing embeddings and anomaly scores
Installation
- Clone this repository:
git clone https://github.com/zbovaird/UHG-Library.git
cd UHG-Library
- Install the required dependencies:
pip install -r requirements.txt
Usage
Basic Usage
from uhg_anomaly_detection_refactored import load_and_preprocess_data, create_graph_data, UHGGraphNN, UHGAnomalyLoss
# Load and preprocess data
features, labels, feature_info = load_and_preprocess_data("your_data.csv")
# Create graph data
graph_data = create_graph_data(features, labels, k=5)
# Create model
model = UHGGraphNN(
in_channels=features.shape[1],
hidden_channels=64,
embedding_dim=32,
num_layers=2,
dropout=0.2
)
# Create loss function
criterion = UHGAnomalyLoss(spread_weight=0.1, quad_weight=1.0, margin=1.0)
# Create optimizer
optimizer = torch.optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-5)
# Train the model
model.train()
for epoch in range(100):
optimizer.zero_grad()
z = model(graph_data.x, graph_data.edge_index)
loss = criterion(z, graph_data.edge_index)
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")
# Generate embeddings
model.eval()
with torch.no_grad():
embeddings = model(graph_data.x, graph_data.edge_index).cpu().numpy()
Using UHG Utilities Directly
The uhg_utils.py file provides a clean interface to the UHG library. You can use these utilities in your own code:
from uhg_utils import uhg_quadrance, uhg_spread, uhg_cross_ratio, to_uhg_space
# Convert points to UHG space
points = to_uhg_space(your_data)
# Compute quadrance (UHG distance) between points
distance = uhg_quadrance(points[0], points[1])
# Compute spread (UHG angle) between lines
spread = uhg_spread(line1, line2)
# Compute cross-ratio of four points
cr = uhg_cross_ratio(p1, p2, p3, p4)
File Structure
uhg_utils.py: Utility functions that provide a clean interface to the UHG libraryuhg_anomaly_detection_refactored.py: Main implementation of UHG-based anomaly detectionrequirements.txt: List of required dependencies
UHG Library Integration
This implementation uses the UHG library for core geometric operations. The uhg_utils.py file serves as a bridge between the application code and the UHG library, providing a clean interface and handling edge cases.
Key UHG operations used:
quadrance: Computes the squared distance between points in hyperbolic spacespread: Computes the squared angle between lines in hyperbolic spacecross_ratio: Computes the cross-ratio of four points, a projective invariantnormalize_points: Normalizes points according to UHG conventionsjoin_points: Computes the line joining two pointsmeet_line_point: Computes the intersection of a line and a point
References
- Norman J. Wildberger, "Universal Hyperbolic Geometry I: Trigonometry", Geometriae Dedicata, 2013
- Norman J. Wildberger, "Universal Hyperbolic Geometry II: A pictorial overview", KoG, 2013
- Norman J. Wildberger, "Universal Hyperbolic Geometry III: First Steps in Projective Triangle Geometry", KoG, 2014
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uhg-0.3.6.tar.gz.
File metadata
- Download URL: uhg-0.3.6.tar.gz
- Upload date:
- Size: 387.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a46e17934833f082eb62ac70bd10d2fde356238aa28e47f7e7a46e9150f4806
|
|
| MD5 |
9d63448d9112e2499e64a836e129976b
|
|
| BLAKE2b-256 |
a2c910d4a3af0e11adb30c8b576a74f0f9f718dd647f8a0b89a6e48f936184fe
|
File details
Details for the file uhg-0.3.6-py3-none-any.whl.
File metadata
- Download URL: uhg-0.3.6-py3-none-any.whl
- Upload date:
- Size: 84.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fc617e0b318e54116797a9e67f54f0e9db3ee372b825aa3ca74e2e0ea429094
|
|
| MD5 |
d2f3d77d7a87e017f59bd850be892d52
|
|
| BLAKE2b-256 |
9d2514d4e1c0c0726cac897b1cc76e49084ab1b3ede08e45d3b53940aa68365a
|