مدیریت مقادیر گمشده در یادگیری ماشین Missing Data
مقادیر گمشده یک مسئله رایج در یادگیری ماشین است. این اتفاق زمانی رخ میدهد که یک متغیر خاص فاقد نقاط داده باشد و منجر به اطلاعات ناقص شود که میتواند دقت و قابلیت اطمینان مدلهای شما را تحت تأثیر قرار دهد. مدیریت مؤثر مقادیر گمشده برای اطمینان از نتایج قوی و بیطرف در پروژههای یادگیری ماشین ضروری است. در این مقاله، نحوه مدیریت مقادیر گمشده در مجموعههای داده در یادگیری ماشین را بررسی خواهیم کرد.
مقادیر گمشده چیست؟
مقادیر گمشده نقاط دادهای هستند که برای یک متغیر خاص در یک مجموعه داده وجود ندارند. این مقادیر میتوانند به صورت سلولهای خالی، مقادیر null یا نمادهای خاص مانند “NA” یا “unknown” نمایش داده شوند. این نقاط داده گمشده چالشهای قابل توجهی در تحلیل داده ایجاد میکنند و میتوانند منجر به نتایج نادرست یا سوگیرانه شوند.
چرا دادهها در مجموعههای داده گمشده هستند؟
دادهها میتوانند به دلایل مختلفی مانند مشکلات فنی، خطاهای انسانی، نگرانیهای حریم خصوصی، مشکلات پردازش داده یا ماهیت خود متغیر گمشده باشند. درک علت گمشدن دادهها به انتخاب استراتژیهای مناسب مدیریت و اطمینان از کیفیت تحلیل کمک میکند.
انواع مقادیر گمشده
سه نوع اصلی مقادیر گمشده وجود دارد:
- گمشده کاملاً تصادفی (MCAR): احتمال گمشدن یک نقطه داده کاملاً تصادفی است و به هیچ متغیر دیگری در مجموعه داده وابسته نیست.
- گمشده به صورت تصادفی (MAR): احتمال گمشدن یک نقطه داده به مقادیر سایر متغیرها در مجموعه داده بستگی دارد، اما به خود متغیر گمشده وابسته نیست.
- گمشده غیر تصادفی (MNAR): احتمال گمشدن یک نقطه داده به خود مقدار گمشده مرتبط است. این نوع گمشدن دادهها چالشبرانگیزترین نوع است.
روشهای شناسایی دادههای گمشده
شناسایی و درک الگوهای گمشدن دادهها در مجموعه دادهها گام مهمی در مدیریت تأثیر آنها بر تحلیل است. در پانداس، چندین تابع مفید برای شناسایی، حذف و جایگزینی مقادیر null وجود دارد.
نحوه نمایش مقادیر گمشده در یک مجموعه داده
مقادیر گمشده میتوانند به صورت سلولهای خالی، مقادیر خاص مانند “NA” یا کدها نمایش داده شوند. استفاده از نمایشهای سازگار و مستند برای اطمینان از شفافیت و تسهیل مدیریت دادهها مهم است.
استراتژیهای مؤثر برای مدیریت مقادیر گمشده در تحلیل داده
چندین استراتژی برای مدیریت مقادیر گمشده وجود دارد. در ادامه به برخی از رویکردهای رایج میپردازیم.
ایجاد یک نمونه DataFrame
import pandas as pd import numpy as np <h1>Creating a sample DataFrame with missing values</h1> data = { 'School ID': [101, 102, 103, np.nan, 105, 106, 107, 108], 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank', 'Grace', 'Henry'], 'Address': ['123 Main St', '456 Oak Ave', '789 Pine Ln', '101 Elm St', np.nan, '222 Maple Rd', '444 Cedar Blvd', '555 Birch Dr'], 'City': ['Los Angeles', 'New York', 'Houston', 'Los Angeles', 'Miami', np.nan, 'Houston', 'New York'], 'Subject': ['Math', 'English', 'Science', 'Math', 'History', 'Math', 'Science', 'English'], 'Marks': [85, 92, 78, 89, np.nan, 95, 80, 88], 'Rank': [2, 1, 4, 3, 8, 1, 5, 3], 'Grade': ['B', 'A', 'C', 'B', 'D', 'A', 'C', 'B'] } df = pd.DataFrame(data) print("Sample DataFrame:") print(df)
خروجی:
Sample DataFrame: School ID Name Address City Subject Marks Rank Grade 0 101.0 Alice 123 Main St Los Angeles Math 85.0 2 B 1 102.0 Bob 456 Oak Ave New York English 92.0 1 A 2 103.0 Charlie 789 Pine Ln Houston Science 78.0 4 C 3 NaN David 101 Elm St Los Angeles Math 89.0 3 B 4 105.0 Eva NaN Miami History NaN 8 D 5 106.0 Frank 222 Maple Rd NaN Math 95.0 1 A 6 107.0 Grace 444 Cedar Blvd Houston Science 80.0 5 C 7 108.0 Henry 555 Birch Dr New York English 88.0 3 B
حذف سطرهای دارای مقادیر گمشده
<h1>Removing rows with missing values</h1> df_cleaned = df.dropna() <h1>Displaying the DataFrame after removing missing values</h1> print("\nDataFrame after removing rows with missing values:") print(df_cleaned)
خروجی:
DataFrame after removing rows with missing values: School ID Name Address City Subject Marks Rank Grade 0 101.0 Alice 123 Main St Los Angeles Math 85.0 2 B 1 102.0 Bob 456 Oak Ave New York English 92.0 1 A 2 103.0 Charlie 789 Pine Ln Houston Science 78.0 4 C 6 107.0 Grace 444 Cedar Blvd Houston Science 80.0 5 C 7 108.0 Henry 555 Birch Dr New York English 88.0 3 B
روشهای جایگزینی (Imputation)
- جایگزینی با میانگین، میانه و مد:
<h1>Mean, Median, and Mode Imputation</h1> mean_imputation = df['Marks'].fillna(df['Marks'].mean()) median_imputation = df['Marks'].fillna(df['Marks'].median()) mode_imputation = df['Marks'].fillna(df['Marks'].mode().iloc[0]) print("\nImputation using Mean:") print(mean_imputation) print("\nImputation using Median:") print(median_imputation) print("\nImputation using Mode:") print(mode_imputation)
خروجی:
Imputation using Mean: 0 85.000000 1 92.000000 2 78.000000 3 89.000000 4 86.714286 5 95.000000 6 80.000000 7 88.000000 Name: Marks, dtype: float64 Imputation using Median: 0 85.0 1 92.0 2 78.0 3 89.0 4 88.0 5 95.0 6 80.0 7 88.0 Name: Marks, dtype: float64 Imputation using Mode: 0 85.0 1 92.0 2 78.0 3 89.0 4 78.0 5 95.0 6 80.0 7 88.0 Name: Marks, dtype: float64
- جایگزینی با مقادیر قبلی و بعدی (Forward and Backward Fill):
<h1>Forward and Backward Fill</h1> forward_fill = df['Marks'].fillna(method='ffill') backward_fill = df['Marks'].fillna(method='bfill') print("\nForward Fill:") print(forward_fill) print("\nBackward Fill:") print(backward_fill)
خروجی:
Forward Fill: 0 85.0 1 92.0 2 78.0 3 89.0 4 89.0 5 95.0 6 80.0 7 88.0 Name: Marks, dtype: float64 Backward Fill: 0 85.0 1 92.0 2 78.0 3 89.0 4 95.0 5 95.0 6 80.0 7 88.0 Name: Marks, dtype: float64
- روشهای درونیابی (Interpolation):
<h1>Interpolation Techniques</h1> linear_interpolation = df['Marks'].interpolate(method='linear') quadratic_interpolation = df['Marks'].interpolate(method='quadratic') print("\nLinear Interpolation:") print(linear_interpolation) print("\nQuadratic Interpolation:") print(quadratic_interpolation)
خروجی:
Linear Interpolation: 0 85.0 1 92.0 2 78.0 3 89.0 4 92.0 5 95.0 6 80.0 7 88.0 Name: Marks, dtype: float64 Quadratic Interpolation: 0 85.00000 1 92.00000 2 78.00000 3 89.00000 4 98.28024 5 95.00000 6 80.00000 7 88.00000 Name: Marks, dtype: float64
تأثیر مدیریت مقادیر گمشده
مدیریت مقادیر گمشده تأثیرات مهمی بر تحلیل داده و مدلسازی دارد:
- بهبود کیفیت داده: مدیریت مقادیر گمشده کیفیت کلی مجموعه داده را افزایش میدهد.
- افزایش عملکرد مدل: الگوریتمهای یادگیری ماشین با دادههای گمشده مشکل دارند و مدیریت آنها میتواند عملکرد مدل را بهبود بخشد.
- کاهش سوگیری: نادیده گرفتن مقادیر گمشده میتواند منجر به سوگیری در نتایج تحلیل شود.
نتیجهگیری
مدیریت مقادیر گمشده نیاز به توجه دقیق و رویکردی متناسب با ویژگیهای خاص دادههای شما دارد. با درک انواع و دلایل گمشدن دادهها، بررسی روشهای مختلف جایگزینی و بهترین روشها، و ارزیابی تأثیر استراتژی انتخابشده، میتوانید این چالش را بهطور مؤثر مدیریت کنید و خط لوله یادگیری ماشین خود را برای موفقیت بهینهسازی کنید.
سوالات متداول
- چگونه مقادیر گمشده را در یادگیری ماشین مدیریت میکنید؟
- بستگی به نوع و میزان دادههای گمشده و اهداف تحلیل دارد. روشهای رایج شامل حذف سطرها/ستونها، جایگزینی (میانگین، میانه، مدلمحور)، وزندهی و مدلهای انتخاب هستند.
- چهار تکنیک برای مدیریت مقادیر گمشده در دادههای سری زمانی چیست؟
- آخرین مشاهده حمل به جلو (LOCF): جایگزینی مقادیر گمشده با آخرین مقدار مشاهدهشده.
- مشاهده بعدی حمل به عقب (NOCB): جایگزینی مقادیر گمشده با مقدار مشاهدهشده بعدی.
- درونیابی خطی: تخمین مقادیر گمشده بر اساس روند بین نقاط داده اطراف.
- هموارسازی نمایی: استفاده از میانگین وزنی مقادیر گذشته برای تخمین مقادیر گمشده.
- یک روش برای مدیریت دادههای گمشده چیست؟
- جایگزینی با میانگین: جایگزینی مقادیر گمشده با میانگین متغیر.
- جایگزینی با میانه: جایگزینی مقادیر گمشده با میانه متغیر.
- جایگزینی با مد: جایگزینی مقادیر گمشده با پرتکرارترین مقدار متغیر.
- K-Nearest Neighbors (KNN): جایگزینی مقادیر گمشده بر اساس مقادیر K نزدیکترین همسایه.
- چگونه مقادیر گمشده را در یک مدل یادگیری ماشین پیشبینی میکنید؟
- آموزش یک مدل برای پیشبینی مقادیر گمشده بر اساس سایر ویژگیهای داده.
- استفاده از یک مدل تخصصی برای مدیریت دادههای گمشده.
- ترکیب چندین تکنیک جایگزینی برای بهبود دقت.
دیدگاهتان را بنویسید