AI Ore Grade Prediction at Mining Enterprises
Grade prediction (ore valuable component content) in mining is geostatistics reconceived with ML application. Accurate grade forecast determines mining project economics: ore routing to processing or waste, flotation optimization, mill loading.
Geostatistical Context
Traditional approach — Kriging: Ordinary kriging (OK) — BLUE estimate based on spatial correlation (variogram). Ordinary kriging works well with stationary data, but misses nonlinear geological structures.
Kriging limitations:
- Stationarity assumption violated in complex ore bodies
- Does not account for secondary variables (geophysics, geochemistry)
- Mitigation: Indicator Kriging for categorical grade domains
ML as supplement:
# Source data: drill core sampling
drill_data = {
'x', 'y', 'z', # sample coordinates
'au_g_t', # Au content g/t — target
'density', # density
'lithology_code', # lithology (one-hot)
'alteration_type', # alteration type
'magnetic_susceptibility',# geophysics
'ip_chargeability', # IP chargeability
'distance_to_fault' # distance to fault
}
ML Models for Grade Estimation
Random Forest with spatial features:
from sklearn.ensemble import GradientBoostingRegressor
import numpy as np
def spatial_features(x, y, z, drill_holes):
"""
Neighborhood features: nearest N drill holes with grades
Spatial lag: mean grade within radius R
"""
distances = np.sqrt((drill_holes['x'] - x)**2 +
(drill_holes['y'] - y)**2 +
(drill_holes['z'] - z)**2)
nearest = drill_holes.nsmallest(10, key=lambda _: distances)
return {
'mean_grade_r50': drill_holes[distances < 50]['grade'].mean(),
'max_grade_r100': drill_holes[distances < 100]['grade'].max(),
'nearest_grade': nearest.iloc[0]['grade'],
'grade_gradient': (nearest.iloc[0]['grade'] - nearest.iloc[5]['grade']) / distances.nsmallest(5).mean()
}
XGBoost with geological domains: Grade estimation within each geological domain (lithotype × alteration zone). Separate models per domain — better than single global model.
Neural Network for 3D space: 3D CNN on block model voxels: input channels — geophysical data (magnetometry, IP, seismics), output channel — predicted grade.
Secondary Data Sources
Geophysics:
- Aeromagnetic survey: magnetism relationship with sulfide mineralization
- Induced Polarization (IP): chargeability = proxy for sulfide content
- Gravimetry: density anomalies for ore bodies
Remote Sensing:
- Hyperspectral survey (ASTER, WorldView): surface mineral mapping
- For quarries: drone-based hyperspectral benches survey
Real-time Drilling Data:
- MWD/LWD (Measurement/Logging While Drilling): gamma-ray, resistivity, sonic
- XRF analysis at wellhead: express analysis without laboratory
Block Model and Routing
Grade Control Model: Short-term (operational) block model for mining mass management:
# For each 5×5×5 m block: Au g/t forecast
# Routing cutoff value:
cutoff_grade = 0.3 # g/t for this deposit
for block in mining_blocks:
predicted_grade = model.predict(block.features)
block.destination = 'mill' if predicted_grade >= cutoff_grade else 'waste'
Ore/Waste Misclassification:
- False positive (waste to processing): mill power loss, dilution
- False negative (ore to waste): metal loss forever ROC analysis: threshold optimized with economic error weights.
Reconciliation: Compare predicted grade to actual from laboratory analysis. Systematic bias → model recalibration. KPI: global error < ±5%.
Validation and Metrics
Cross-Validation with Spatial Partition: Standard k-fold → spatial correlation leakage. Use:
- Spatial Block CV: blocks divided by geographic quadrants
- Leave-One-Block-Out: full validation by block exclusion
Metrics:
| Metric | Description |
|---|---|
| RMSE grade | g/t or % deviation |
| Slope of regression | predicted vs. actual (ideal = 1.0) |
| E-Type variance | conditional estimation variance |
| Reconciliation factor | forecast vs. mining by periods |
Comparison with kriging: With sufficient drill holes ML doesn't always beat OK. ML advantage: use secondary variables + nonlinear interactions in complex geological settings.
Timeline: basic geostatistical model + XGBoost grade estimation + routing block model — 5-7 weeks. Full system with 3D geophysical data, real-time XRF integration, reconciliation pipeline — 3-4 months.







