Berbagi teknologi

Masalah data umum dalam big data: sewenang-wenang dan kotor

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Bayangkan Anda baru saja bergabung dengan perusahaan besar yang mengaku sedang menjalani "transformasi digital" sebagai insinyur pengembangan data besar. Pada minggu pertama Anda bekerja, Anda sangat antusias dan tidak sabar untuk melenturkan otot Anda dan menggunakan keahlian Anda untuk mendorong keputusan berdasarkan data di perusahaan.
gambar.png

Namun, saat Anda mulai menggali lebih dalam infrastruktur dan proses data perusahaan Anda, Anda menyadari bahwa tantangan di depan jauh lebih besar dari yang Anda perkirakan:

  • Anda mencoba memperoleh beberapa data penjualan historis untuk dianalisis, namun menemukan bahwa data departemen penjualan disimpan dalam database lama yang sepenuhnya terisolasi dari sistem utama perusahaan.
  • Saat Anda mencoba mengintegrasikan data pelanggan dari departemen yang berbeda, Anda menemukan bahwa setiap departemen menggunakan format ID pelanggan yang berbeda, sehingga pencocokan data menjadi sangat sulit.
  • Anda menulis skrip pemrosesan data, namun saat runtime Anda menemukan banyak masalah kualitas data, termasuk nilai yang hilang, outlier, dan input yang jelas salah.
  • Saat Anda bertanya apa arti beberapa bidang data, tidak ada yang bisa memberikan jawaban jelas, dan Anda tidak dapat menemukan kamus atau dokumentasi data yang relevan.
  • Anda mengusulkan untuk mentransfer beberapa data sensitif ke cloud untuk diproses, namun tim keamanan TI menyatakan kekhawatiran serius bahwa hal ini dapat menimbulkan risiko kebocoran data.
  • Anda mengembangkan model prediktif yang berkinerja baik, namun saat Anda menunjukkannya kepada bisnis, mereka mengatakan bahwa mereka tidak memahami arti data tersebut.

Menghadapi tantangan ini, Anda menyadari bahwa jalan masih panjang untuk mencapai pengambilan keputusan berbasis data yang sebenarnya di perusahaan ini. Anda memutuskan untuk memilah masalah ini secara sistematis agar dapat lebih memahami dan menyelesaikannya.

Masalah data umum dalam data besar

1. Sendirian - pulau data

gambar.png

Silo data adalah situasi di mana data tidak dapat dibagikan secara efektif antar sistem informasi atau unit organisasi. Hal ini menyebabkan duplikasi pembangunan dan pemborosan sumber daya.

contoh:

  • Departemen penjualan dan manajemen inventaris di sebuah perusahaan ritel besar menggunakan sistem yang berbeda dan tidak dapat berbagi data secara real time.
  • Sistem informasi antar departemen pemerintah tidak dapat dioperasikan, sehingga masyarakat harus memberikan informasi yang sama berulang kali.

Contoh kode (Python):

# 销售部门的数据库
sales_db = {
    "product_a": {"sales": 1000, "revenue": 50000},
    "product_b": {"sales": 800, "revenue": 40000}
}

# 库存部门的数据库
inventory_db = {
    "product_a": {"stock": 500},
    "product_b": {"stock": 200}
}

# 由于数据孤岛,我们无法直接获取销售和库存的综合信息
# 需要手动整合数据
def get_product_info(product):
    if product in sales_db and product in inventory_db:
        return {
            "sales": sales_db[product]["sales"],
            "revenue": sales_db[product]["revenue"],
            "stock": inventory_db[product]["stock"]
        }
    return None

print(get_product_info("product_a"))

2. Gangguan - Kesalahan dalam rantai nilai data

gambar.png

Kesalahan dalam rantai nilai data mengacu pada terhentinya proses pengumpulan data hingga pemanfaatan akhir, yang mengakibatkan ketidakmampuan untuk menyadari sepenuhnya nilai data.

contoh:

  • Sebuah platform e-niaga mengumpulkan sejumlah besar data penjelajahan pengguna, namun tim analisis tidak memiliki keterampilan yang sesuai untuk menafsirkan data ini.
  • Institusi medis mengumpulkan data genetik pasien tetapi tidak memiliki kemampuan untuk menerjemahkan data ini ke dalam rencana perawatan yang dipersonalisasi.

Contoh kode (Python):

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 假设我们有用户浏览数据
df = pd.DataFrame({
    'user_id': range(1000),
    'page_views': np.random.randint(1, 100, 1000),
    'time_spent': np.random.randint(10, 3600, 1000),
    'purchases': np.random.randint(0, 5, 1000)
})

# 尝试建立一个预测模型
X = df[['page_views', 'time_spent']]
y = df['purchases']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = LinearRegression()
model.fit(X_train, y_train)

# 模型评分
print(f"Model Score: {model.score(X_test, y_test)}")

# 但是,如果分析团队不理解这个模型或不知道如何解释结果,
# 那么这个模型就无法为业务决策提供有价值的指导

3. Kurangnya standar, tata kelola, data, dll.

Masalah ini melibatkan banyak aspek manajemen data, termasuk kurangnya standar terpadu, mekanisme tata kelola data, data yang diperlukan, proses standar, organisasi khusus dan sistem manajemen, dll.

gambar.png

contoh:

  • Cabang perusahaan multinasional di berbagai negara menggunakan format informasi pelanggan yang berbeda, sehingga membuat integrasi data menjadi sulit.
  • Salah satu proyek penelitian tidak memiliki data demografi utama, sehingga mempengaruhi keakuratan analisis.

Contoh kode (Python):

# 假设我们有来自不同国家的客户数据,格式不统一
us_customers = [
    {"name": "John Doe", "phone": "1234567890"},
    {"name": "Jane Smith", "phone": "0987654321"}
]

uk_customers = [
    {"full_name": "David Brown", "tel": " 44 1234567890"},
    {"full_name": "Emma Wilson", "tel": " 44 0987654321"}
]

# 由于缺乏统一标准,我们需要手动处理数据
def standardize_customer(customer, country):
    if country == "US":
        return {
            "full_name": customer["name"],
            "phone_number": " 1 "   customer["phone"]
        }
    elif country == "UK":
        return {
            "full_name": customer["full_name"],
            "phone_number": customer["tel"]
        }

# 标准化数据
standardized_customers = (
    [standardize_customer(c, "US") for c in us_customers]  
    [standardize_customer(c, "UK") for c in uk_customers]
)

print(standardized_customers)

4. Kesulitan – Data sulit diperoleh, dipahami dan ditelusuri

Masalah ini melibatkan aksesibilitas, pemahaman, dan penelusuran data.

contoh:

  • Data historis perusahaan disimpan dalam sistem lama, sehingga menyulitkan karyawan baru untuk mengakses dan memahami data tersebut.
  • Beberapa hasil dalam proyek analisis data tidak dapat ditelusuri kembali ke sumber data asli, sehingga mempengaruhi kredibilitas hasil.
    gambar.png

Contoh kode (Python):

import hashlib
import json
from datetime import datetime

class DataRecord:
    def __init__(self, data, source):
        self.data = data
        self.source = source
        self.timestamp = datetime.now().isoformat()
        self.hash = self._calculate_hash()

    def _calculate_hash(self):
        record = json.dumps({"data": self.data, "source": self.source, "timestamp": self.timestamp})
        return hashlib.sha256(record.encode()).hexdigest()

    def __str__(self):
        return f"Data: {self.data}, Source: {self.source}, Timestamp: {self.timestamp}, Hash: {self.hash}"

# 创建一些数据记录
record1 = DataRecord("User A purchased Product X", "Sales System")
record2 = DataRecord("Product X inventory decreased by 1", "Inventory System")

print(record1)
print(record2)

# 这种方法可以帮助追踪数据的来源和变化,但仍然需要额外的系统来管理这些记录

5. Kotor - kualitas data buruk

Masalah kualitas data meliputi ketidakakuratan, ketidaklengkapan, inkonsistensi, duplikasi, dll.

gambar.png

contoh:

  • Ada sejumlah besar informasi kontak duplikat atau ketinggalan jaman di database pelanggan.
  • Data sensor mengandung outlier, yang mempengaruhi keakuratan analisis data.

Contoh kode (Python):

import pandas as pd
import numpy as np

# 创建一个包含一些"脏"数据的DataFrame
df = pd.DataFrame({
    'name': ['John', 'Jane', 'John', 'Bob', 'Alice', np.nan],
    'age': [30, 25, 30, -5, 200, 35],
    'email': ['[email protected]', 'jane@example', '[email protected]', '[email protected]', '[email protected]', 'invalid']
})

print("Original data:")
print(df)

# 数据清洗
def clean_data(df):
    # 删除重复行
    df = df.drop_duplicates()
    
    # 处理缺失值
    df['name'] = df['name'].fillna('Unknown')
    
    # 修正异常值
    df.loc[df['age']