Làm thế nào tôi có thể tự động phân biệt giữa dữ liệu phân loại và dữ liệu số?


12

Tôi biết ai đó đang làm việc trong một dự án liên quan đến việc nhập các tệp dữ liệu mà không liên quan đến các cột hoặc loại dữ liệu. Nhiệm vụ là lấy một tệp với bất kỳ số lượng cột và các loại dữ liệu khác nhau và thống kê tóm tắt đầu ra trên dữ liệu số.

Tuy nhiên, anh không chắc chắn về cách chuyển động các kiểu dữ liệu cho các dữ liệu dựa trên số nhất định. Ví dụ:

    CITY
    Albuquerque
    Boston
    Chicago

Đây rõ ràng không phải là dữ liệu số và sẽ được lưu trữ dưới dạng văn bản. Tuy nhiên,

    ZIP
    80221
    60653
    25525

không được đánh dấu rõ ràng là phân loại. Phần mềm của anh ta sẽ gán mã ZIP dưới dạng thống kê tóm tắt bằng số và đầu ra cho nó, điều này không có ý nghĩa đối với loại dữ liệu đó.


Một vài ý tưởng chúng tôi đã có:

  1. Nếu một cột là tất cả các số nguyên, hãy gắn nhãn là phân loại. Điều này rõ ràng sẽ không hoạt động, nhưng đó là một ý tưởng.
  2. Nếu một cột có ít hơn n giá trị duy nhất và là số, hãy gắn nhãn phân loại. Điều này có thể gần hơn, nhưng vẫn có thể có vấn đề với dữ liệu số rơi qua.
  3. Duy trì một danh sách các dữ liệu số phổ biến thực sự cần được phân loại và so sánh các tiêu đề cột với danh sách này cho phù hợp. Ví dụ, bất cứ thứ gì có "ZIP" trong đó sẽ được phân loại.

Ruột của tôi nói với tôi rằng không có cách nào để gán chính xác dữ liệu số là phân loại hoặc số, nhưng hy vọng có một gợi ý. Bất kỳ cái nhìn sâu sắc bạn có được đánh giá rất cao.


Không đầy đủ bằng chứng nhưng nếu bắt đầu bằng 0 thì thường không phải là số
paparazzo

Có lẽ bạn cũng nên tự hỏi hậu quả của việc hiểu sai là gì? Điều đó sẽ xác định bao nhiêu nỗ lực bạn cần để đưa vào quá trình. Bạn có muốn chính xác 90%, hoặc chính xác 99%, hoặc chính xác 99.9999%?
Spainedman

Tôi sẽ lấy tất cả các heuristic được đề xuất trong các câu trả lời làm các tính năng và huấn luyện một bộ phân loại nhị phân.
Emre

Xem số liệu thống kê.stackexchange.com/a/106400/17230 . Thực sự không có một sự thật nền tảng nào ở đây.
Scortchi - Phục hồi Monica

Câu trả lời:


7

Tôi không biết một cách dễ dàng để làm điều này. Đây là một ý tưởng ngoài đỉnh đầu của tôi:

  1. Xử lý các giá trị như phân loại theo mặc định.
  2. Kiểm tra các thuộc tính khác nhau của dữ liệu có nghĩa là nó thực sự liên tục. Cân nhắc các thuộc tính này dựa trên khả năng chúng tương quan với dữ liệu liên tục. Dưới đây là một số ví dụ có thể:
    • Giá trị là số nguyên: +.7
    • Giá trị là số float: +.8
    • Các giá trị thường được phân phối: +.3
    • Các giá trị chứa một số lượng tương đối nhỏ các giá trị duy nhất: +.3
    • Các giá trị không có cùng số lượng ký tự: +.1
    • Các giá trị không chứa các số 0 đứng đầu: +.1
  3. Coi bất kỳ cột nào có tổng bằng 1 là số. Điều chỉnh các yếu tố và trọng lượng dựa trên thử nghiệm đối với các bộ dữ liệu khác nhau để phù hợp với nhu cầu của bạn. Bạn thậm chí có thể xây dựng và huấn luyện một thuật toán học máy riêng biệt chỉ để làm điều này.

Câu trả lời này rất thú vị. Thay vì đưa ra một câu trả lời khác, tôi muốn đề xuất một sửa đổi cho câu hỏi này. Điều gì về việc xử lý vấn đề này như là một vấn đề phân loại thường xuyên? Bạn có thể xác định một tập hợp các tính năng cho mỗi cột, dựa trên các thuộc tính trong câu trả lời này (số nguyên, số float, phân phối bình thường, số lượng giá trị duy nhất, v.v.) Sau đó, vấn đề chỉ là sử dụng thuật toán phân loại.
Pablo Suau

@PabloSuau, tôi thích ý tưởng đó. Các thuật toán phân loại có thể là một phương pháp tuyệt vời ở đây. Cảm ơn jncraton cho một số đặc điểm để xem xét.
Cá Poisson

4

Nếu bạn có, ví dụ, số con của một gia đình (có thể nằm trong khoảng từ 0 đến 5), thì đó là biến phân loại hay số? Trên thực tế, nó phụ thuộc vào vấn đề của bạn và cách bạn dự định giải quyết nó. Theo nghĩa này, bạn có thể làm như sau:

  • Tính số lượng giá trị duy nhất của cột đó
  • Chia số này cho tổng số hàng
  • Nếu tỷ lệ này dưới một số ngưỡng (ví dụ: 20%), bạn xem xét nó là phân loại.

Trong trường hợp các giá trị rời rạc, một thử nghiệm bổ sung có thể là: sử dụng mô hình hồi quy để ước tính một số tham số và kiểm tra xem các giá trị ước tính có được chứa trong bộ giá trị ban đầu không. Nếu điều này không đúng, có lẽ bạn đang xử lý dữ liệu phân loại (vì đó là trường hợp của ZIP).

Nó hoạt động tương đối tốt với tôi trong quá khứ ...


2

Vì câu hỏi này đã được đăng chéo, các nhận xét ban đầu của @nickcox về Xác thực chéo có liên quan cao và đúng. Quan điểm của tôi hơi khác nhau. Chẳng hạn, tôi sẽ viết lại câu hỏi, phân tách nó thành hai phần: thứ nhất, vấn đề là làm thế nào để phân loại một luồng thông tin không xác định theo loại dữ liệu và thứ hai, tỷ lệ phân loại sai có thể được dự kiến. Cả hai câu hỏi đều có thể trả lời ngay lập tức, nếu ai đó muốn dành thời gian để làm điều đó.

Vấn đề đầu tiên là phát triển một hệ thống chuyên gia dựa trên các quy tắc dọc theo những gì đã được đề xuất sơ bộ trong các nhận xét và câu trả lời về các chủ đề này bằng cách sử dụng các mẫu dữ liệu trong thế giới thực có sẵn.

Thứ hai, cho rằng dữ liệu trong thế giới thực này chứa các loại dữ liệu đã biết, điểm chuẩn lỗi phân loại.

Bước thứ ba sẽ liên quan đến việc cập nhật lặp lại các quy tắc để phản ánh chính xác hơn thông tin đang được truyền qua - đến mức có thể.

Trong tâm trí tôi, trong khi tẻ nhạt, một dự án như vậy sẽ không liên quan đến khối lượng công việc bị cấm.

---- Bình luận thêm ----

Một cuộc thảo luận tốt về trích xuất tính năng vì nó liên quan đến quá trình tạo dữ liệu xuất hiện trên CV tại đây:

/stats/191935/what-does-the- Process-that-generic-the-data-my-and-how-does-feature-kindec

Khai thác tính năng, lựa chọn và DGP là một điểm khởi đầu tuyệt vời để phát triển một hệ thống chuyên gia.


Tôi đã xóa câu hỏi trên Xác thực chéo. Để tham khảo, @NickCox tuyên bố: "Tệ hơn bạn nghĩ, ngay cả khi bạn nghĩ nó tệ hơn bạn nghĩ. Điểm thập phân có thể ẩn trong các biến phân loại, như một phần của phân loại được mã hóa, ví dụ như các ngành hoặc bệnh. hơn các loại: 3, có nghĩa là 3 ô tô hoặc mèo, không giống với 3, có nghĩa là "người sở hữu một chiếc xe hơi" hoặc "người thuộc sở hữu của một con mèo". Các phép đo chỉ có thể là số nguyên theo quy ước, ví dụ: chiều cao của mọi người có thể chỉ là được báo cáo là số nguyên cm hoặc inch, áp lực máu là số nguyên mm Hg. "
Cá Poisson

@NickCox bình luận thứ hai: "Số lượng riêng biệt (một thuật ngữ tốt hơn" duy nhất ", vẫn có ý nghĩa chính là chỉ xảy ra một lần) các giá trị cũng không phải là một hướng dẫn tốt. có lẽ ít hơn nhiều so với số lượng các liên kết tôn giáo hoặc nguồn gốc dân tộc khác nhau. "
Cá Poisson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.