নিরীক্ষণযোগ্য শিক্ষায় বৈশিষ্ট্য নির্বাচন সম্পাদন করার জন্য আর বা পাইথনের পদ্ধতিগুলি [বন্ধ]


11

ডেটাতে গুরুত্বহীন / গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি বাতিল / নির্বাচন করার জন্য আর / পাইথনের উপলব্ধ পদ্ধতি / বাস্তবায়ন কী কী? আমার ডেটাতে লেবেল নেই (নিরীক্ষণ)।

মিশ্র প্রকারের সাথে ডেটাতে ~ 100 বৈশিষ্ট্য রয়েছে। কিছুগুলি সংখ্যাযুক্ত এবং অন্যগুলি বাইনারি (0/1)।


আপনি কোন ধরণের অব্যবহৃত লার্নিং অ্যালগরিদম ব্যবহার করছেন? আপনার ডেটা কেমন দেখাচ্ছে?
ম্যাক্স ক্যান্ডোসিয়া

@ ব্যবহারকারী 1362215, কোনও অকার্যকর অ্যালগরিদম প্রয়োগ করার আগে, আমি বৈশিষ্ট্য অপসারণ সম্পাদনের কোনও উপায় অনুসন্ধান করার চেষ্টা করছি।
শিক্ষার্থী

আপনি এই দেখেছ scikit-শিখতে cheatsheet আগে? এটি আপনাকে সূচনা করতে সহায়তা করতে পারে ...
স্টিভ এস

কেন এমন একটি অপ্রচলিত পদ্ধতি ব্যবহার করবেন না যা নিখরচায় মোডে এলোমেলো বনের মতো সুগন্ধী বৈশিষ্ট্যগুলি নিজেরাই বৈশিষ্ট্যযুক্ত করে?
জেকুইয়া

1
আমি পুরোপুরি নিশ্চিত নই, আমার অর্থ এলোমেলো বন সম্পূর্ণ প্যারামিমেট্রিক তাই অনুমান নিয়ে চিন্তা করবেন না। আমি নিশ্চিত না তবে এটি আপনার উদ্দেশ্যটি কার্যকর করবে কিনা। আমি যা বলতে পারি তা হ'ল র্যান্ডম ফরেস্টের একটি সংস্করণ রয়েছে কেবলমাত্র "বিচ্ছিন্নতা সনাক্তকরণ" এর জন্য যা আইসোলেশন অরণ্য নামে পরিচিত: cs.nju.edu.cn/zhouzh/zhouzh.files/publication/… আর এর একটি বাস্তবায়ন হয়েছিল তবে আমি নিশ্চিত না যে এটি এখন পর্যন্ত চলছে এবং চলছে।
জেকুইহুয়া

উত্তর:


7

এটি এক বছরের পুরনো তবে আমি এখনও এটি প্রাসঙ্গিক বলে মনে করি, তাই চার্লস তার উত্তরে লিঙ্কিত পেপারে প্রস্তাবিত প্রিন্সিপাল ফিচার অ্যানালাইসিস (পিএফএ) এর আমার অজগর বাস্তবায়ন ভাগ করে নিতে চেয়েছিলেন ।

from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from collections import defaultdict
from sklearn.metrics.pairwise import euclidean_distances
from sklearn.preprocessing import StandardScaler

class PFA(object):
    def __init__(self, n_features, q=None):
        self.q = q
        self.n_features = n_features

    def fit(self, X):
        if not self.q:
            self.q = X.shape[1]

        sc = StandardScaler()
        X = sc.fit_transform(X)

        pca = PCA(n_components=self.q).fit(X)
        A_q = pca.components_.T

        kmeans = KMeans(n_clusters=self.n_features).fit(A_q)
        clusters = kmeans.predict(A_q)
        cluster_centers = kmeans.cluster_centers_

        dists = defaultdict(list)
        for i, c in enumerate(clusters):
            dist = euclidean_distances([A_q[i, :]], [cluster_centers[c, :]])[0][0]
            dists[c].append((i, dist))

        self.indices_ = [sorted(f, key=lambda x: x[1])[0][0] for f in dists.values()]
        self.features_ = X[:, self.indices_]

আপনি এটি এর মতো ব্যবহার করতে পারেন:

import numpy as np
X = np.random.random((1000,1000))

pfa = PFA(n_features=10)
pfa.fit(X)

# To get the transformed matrix
X = pfa.features_

# To get the column indices of the kept features
column_indices = pfa.indices_

এটি নিবন্ধ থেকে বর্ণিত অ্যালগরিদমকে কঠোরভাবে অনুসরণ করছে। আমি মনে করি পদ্ধতিটির প্রতিশ্রুতি রয়েছে, তবে সততার সাথে আমি মনে করি না এটি নিরীক্ষণযোগ্য বৈশিষ্ট্য নির্বাচনের সবচেয়ে দৃ approach় পদ্ধতির। আরও ভাল কিছু নিয়ে এলে আমি একটি আপডেট পোস্ট করব।


আপনি যে কাগজে লিঙ্ক করেছেন তাতে বর্ণিত পদ্ধতিতে, পদক্ষেপ 1 হ'ল কোভারিয়েন্স ম্যাট্রিক্স গণনা করা এবং পদক্ষেপ 2 হ'ল পদক্ষেপ 1 থেকে কোভারিয়েন্স ম্যাট্রিক্সে পিসিএ গণনা করা আমার বিশ্বাস আমি আপনার fitফাংশনটি পদক্ষেপ 1 এড়িয়ে চলেছি এবং মূল ডেটাसेटে পিসিএ সম্পাদন করে ।
ব্যবহারকারী 35581

@ ব্যবহারকারী 35581 ভাল পয়েন্ট। যাইহোক, তারা যা করে তা হল (1) এসভিডি পদ্ধতিটি ব্যবহার করে মূল তথ্য থেকে কোভেরিয়েন্স ম্যাট্রিক্স এবং তারপরে (2) গণনা ইগেনভেেক্টর এবং কোভেরিয়েন্স ম্যাট্রিক্সের ইগেনভ্যালুগুলি। এই দুটি পদক্ষেপ সম্মিলিতভাবে আপনি পিসিএ কল করেন। নীতিগত উপাদানগুলি মূল তথ্যগুলির কোভারিয়েন্স ম্যাট্রিক্সের আইজেনভেেক্টর are
উলফ আসলাক

@ উলফ আসলাক আপনি কী ব্যাখ্যা করতে পারেন যে আপনি কেন এটি নিষ্ক্রিয় বৈশিষ্ট্য নির্বাচনের সবচেয়ে দৃust় পদ্ধতির নয়?
হিপোগলুসিডো

1
@hipoglucido সত্যি বলতে, আমি যখন লিখলাম তখন আমি আমার চিন্তাভাবনার জন্য দায়বদ্ধ হতে পারি না। এটা তিন বছর আগের। কোডটি আবারও পর্যালোচনা করে, আমি বিশ্বাস করি যে কেএমিয়ানসের ব্যবহারের সাথে এটির কিছু সম্পর্ক রয়েছে (যা অ-নিরোধক)। এছাড়াও, আমি দেখতে চাই যে এটি কীভাবে কেবল নন-পিসিএ-রূপান্তরিত বৈশিষ্ট্যগুলিকে ক্লাস্টারিংয়ের সাথে তুলনা করে।
উলফ আসলাক


1

অধ্যক্ষ বৈশিষ্ট্য বিশ্লেষণটি নিরীক্ষণযোগ্য বৈশিষ্ট্য নির্বাচনের সমাধান বলে মনে হচ্ছে। এটি এই কাগজে বর্ণিত ।


লিঙ্কটি মারা গেছে। Stats.stackexchange.com/a/203978/76815 নিবন্ধে প্রস্তাবিত পদ্ধতির একটি অজগর বাস্তবায়ন ভাগ করেছে
উলফ আসলাক

ধন্যবাদ, আমি লিঙ্কটি সরিয়েছি (এটি অফ-টপিক হিসাবে মুছে ফেলা হয়েছে)।
ম্যাক্স ঘেনিস

0

আমি একটি লিঙ্ক পেয়েছি যা দরকারী হতে পারে, সেগুলি ম্যাটল্যাব বাস্তবায়ন, তারা আপনার জন্য কাজ করতে পারে http://www.cad.zju.edu.cn/home/dengcai/Data/MCFS.html এটি একটি মাল্টিক্লাস্টার বৈশিষ্ট্য নির্বাচন পদ্ধতি, আপনি সাম্প্রতিক পত্রগুলিতে এটি সম্পর্কে শক্তিশালী ভিত্তি খুঁজে পেতে পারেন এটি আপনার পক্ষে কাজ করে কিনা তা আমাকে জানান Let


0

এতে অনেকগুলি বিকল্প উপলব্ধ R। দেখার জন্য একটি দুর্দান্ত জায়গা হ'ল caretপ্যাকেজ যা অন্যান্য অনেক প্যাকেজ এবং বিকল্পগুলির জন্য একটি দুর্দান্ত ইন্টারফেস সরবরাহ করে। আপনি এখানে ওয়েবসাইট একবার দেখে নিতে পারেন । সেখানে অনেকগুলি বিকল্প রয়েছে, তবে আমি একটি বর্ণনা করব।

এখানে R"এমটিকার্স" ডেটাসেটগুলি অন্তর্নির্মিত (নীচে দেখানো হয়েছে) ব্যবহার করে একটি সাধারণ ফিল্টার ব্যবহারের উদাহরণ ।

                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1

এখন কিছু কোড সেটআপ (প্যাকেজ লোড করা ইত্যাদি):

# setup a parallel environment
library(doParallel)
cl <- makeCluster(2) # number of cores to use
registerDoParallel(cl)
library(caret)

এবং আমরা ভেরিয়েবলগুলি নির্বাচন করতে একটি সাধারণ মডেল ফিট করতে পারি:

fit1 <- sbf(mtcars[, -1], mtcars[, 1],
  sbfControl =
    sbfControl(functions = rfSBF, method = "repeatedcv", repeats = 10)
)

ফলাফলগুলি দেখতে, আমরা পেয়েছি:

fit1
Selection By Filter

Outer resampling method: Cross-Validated (10 fold, repeated 10 times) 

Resampling performance:

  RMSE Rsquared RMSESD RsquaredSD
 2.266   0.9224 0.8666     0.1523

Using the training set, 7 variables were selected:
   cyl, disp, hp, wt, vs...

During resampling, the top 5 selected variables (out of a possible 9):
   am (100%), cyl (100%), disp (100%), gear (100%), vs (100%)

On average, 7 variables were selected (min = 5, max = 9)

অবশেষে আমরা fit1$optVariablesফলাফলের বিরুদ্ধে বাছাই করা ভেরিয়েবলগুলি প্লট করতে পারি mpg:

library(ggplot2)
library(gridExtra)
do.call(grid.arrange, 
lapply(fit1$optVariables, function(v) {
  ggplot(mtcars, aes_string(x = v, y = "mpg")) +
    geom_jitter()
}))

এই গ্রাফের ফলাফল: ছিটান প্লট


1
ওপি অনুরোধ হিসাবে এটি নিরীক্ষণযোগ্য শেখার নয়, যেহেতু আপনি মডেলটিকে mpgফলাফল হিসাবে ব্যবহার করেন। নিরীক্ষণযোগ্য মডেলগুলিতে এই জাতীয় পদ্ধতি ব্যবহার করার কোনও উপায় আছে কি?
ম্যাক্স ঘেনিস

0

nsprcompআর প্যাকেজ বিক্ষিপ্ত প্রধান উপাদান বিশ্লেষণ, যা আপনার প্রয়োজন অনুসারে পারে জন্য পদ্ধতি প্রদান করে।

উদাহরণস্বরূপ, আপনি যদি বিশ্বাস করেন যে আপনার বৈশিষ্ট্যগুলি সাধারণত রৈখিকভাবে সম্পর্কযুক্ত হয় এবং শীর্ষ পাঁচটি নির্বাচন করতে চান, আপনি সর্বাধিক পাঁচটি বৈশিষ্ট্য সহ স্পার্স পিসিএ চালাতে পারেন এবং প্রথম প্রধান উপাদানটির সীমাবদ্ধ করতে পারেন:

m <- nsprcomp(x, scale.=T, k=5, ncomp=1)
m$rotation[, 1]

বিকল্পভাবে, আপনি যদি বৈশিষ্ট্যের অরথোগোনাল প্রকৃতি ক্যাপচার করতে চান তবে আপনি প্রতিটি পিসিকে একটি বৈশিষ্ট্যে সীমাবদ্ধ করে শীর্ষ পাঁচটি পিসি থেকে শীর্ষস্থানীয় বৈশিষ্ট্যটি নির্বাচন করতে পারেন:

m <- nsprcomp(x, scale.=T, k=1, ncomp=5)
m$rotation

এগুলির একটি সংযুক্তি কার্যকরও হতে পারে; অর্থাত্ যে বৈশিষ্ট্যগুলি ধারাবাহিকভাবে বিভিন্ন পদ্ধতিতে শীর্ষে আসে সেগুলি বৈশিষ্ট্যের জায়গাতে বিরাট পরিমাণের ব্যাখ্যা দিতে পারে। nsprcompকিছুটা খেলতে পেরে মনে হচ্ছে প্রথম দুটি পদ্ধতি একই বৈশিষ্ট্যের features 1/2 শীর্ষে তুলেছে। এটি বলেছিল, এই প্রক্রিয়াটি অনুকূল করা বোধগম্য প্রচেষ্টা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.