در مسائل بیوانفورماتیک، دادههای ژنومی معمولاً شامل هزاران ویژگی (ژن) هستند که پردازش آنها بهصورت مستقیم دشوار است. Autoencoder میتواند با یادگیری یک نمایش فشرده، ویژگیهای مهم را حفظ کرده و ابعاد دادهها را کاهش دهد.
·
PCA تنها روابط خطی
را مدل میکند، درحالیکه Autoencoder روابط غیرخطی را هم میآموزد.
·
در PCA،
دادهها به ترکیبهای خطی از ویژگیهای اصلی کاهش مییابند، اما Autoencoder یک نمایش بهینهتر را در Bottleneck یاد میگیرد.
· اندازهگیری کاهش خطای بازسازی در Autoencoder، برخلاف PCA، معیار مناسبی برای بررسی کیفیت نمایش فشرده است.
import tensorflow as tf
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model
input_dim = 10000 # تعداد ژنها
encoding_dim = 100 # نمایش فشرده در لایه Bottleneck
# لایههای شبکه
input_layer = Input(shape=(input_dim,))
encoded = Dense(5000, activation='relu')(input_layer)
encoded = Dense(1000, activation='relu')(encoded)
encoded = Dense(encoding_dim, activation='relu')(encoded) # Bottleneck
decoded = Dense(1000, activation='relu')(encoded)
decoded = Dense(5000, activation='relu')(decoded)
decoded = Dense(input_dim, activation='linear')(decoded) # بازسازی دادهها
# تعریف مدل
autoencoder = Model(input_layer, decoded)
autoencoder.compile(optimizer='adam', loss='mse')
· خطای بازسازی (MSE)
· مقایسه واریانس حفظ شده بین PCA و Autoencoder
· تحلیل ویژگیهای کلیدی در Bottleneck
from sklearn.decomposition import PCA
import numpy as np
pca = PCA(n_components=100)
X_pca = pca.fit_transform(X_train)
variance_ratio_pca = np.sum(pca.explained_variance_ratio_)
X_autoencoded = autoencoder.encoder.predict(X_train)
variance_ratio_autoencoder = np.var(X_autoencoded) / np.var(X_train)
print(f"PCA Variance Retained: {variance_ratio_pca:.4f}")
print(f"Autoencoder Variance Retained: {variance_ratio_autoencoder:.4f}")
انتظار داریم Autoencoder واریانس بیشتری را نسبت به PCA حفظ کند