ಡೇಟಾದಲ್ಲಿ ಕ್ರಿಯಾತ್ಮಕ ಅವಲಂಬನೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯ ವಿವಿಧ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ: ಡೇಟಾಬೇಸ್ ನಿರ್ವಹಣೆ, ಡೇಟಾ ಕ್ಲೀನಿಂಗ್, ಡೇಟಾಬೇಸ್ ರಿವರ್ಸ್ ಎಂಜಿನಿಯರಿಂಗ್ ಮತ್ತು ಡೇಟಾ ಪರಿಶೋಧನೆ. ಅವಲಂಬನೆಗಳ ಬಗ್ಗೆ ನಾವು ಈಗಾಗಲೇ ಪ್ರಕಟಿಸಿದ್ದೇವೆ
ಕಾರ್ಯ ಆಯ್ಕೆ
CS ಕೇಂದ್ರದಲ್ಲಿ ಅಧ್ಯಯನ ಮಾಡುವಾಗ, ನಾನು ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಆಳವಾಗಿ ಅಧ್ಯಯನ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದೆ, ಅವುಗಳೆಂದರೆ, ಕ್ರಿಯಾತ್ಮಕ ಮತ್ತು ವ್ಯತ್ಯಾಸ ಅವಲಂಬನೆಗಳ ಹುಡುಕಾಟ. ಈ ವಿಷಯವು ವಿಶ್ವವಿದ್ಯಾನಿಲಯದಲ್ಲಿ ನನ್ನ ಕೋರ್ಸ್ವರ್ಕ್ನ ವಿಷಯಕ್ಕೆ ಸಂಬಂಧಿಸಿದೆ, ಆದ್ದರಿಂದ ಕೋರ್ಸ್ವರ್ಕ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವಾಗ, ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿನ ವಿವಿಧ ಅವಲಂಬನೆಗಳ ಕುರಿತು ನಾನು ಲೇಖನಗಳನ್ನು ಓದಲು ಪ್ರಾರಂಭಿಸಿದೆ. ನಾನು ಈ ಪ್ರದೇಶದ ವಿಮರ್ಶೆಯನ್ನು ಬರೆದಿದ್ದೇನೆ - ನನ್ನ ಮೊದಲನೆಯದು
ಕೇಂದ್ರದಲ್ಲಿ ನನ್ನ ಎರಡನೇ ಸೆಮಿಸ್ಟರ್ ಸಮಯದಲ್ಲಿ, ಕ್ರಿಯಾತ್ಮಕ ಅವಲಂಬನೆಗಳನ್ನು ಹುಡುಕಲು ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ಸುಧಾರಿಸಲು ನಾನು ಸಂಶೋಧನಾ ಯೋಜನೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದೆ. ಅವರು ಜೆಟ್ಬ್ರೇನ್ಸ್ ರಿಸರ್ಚ್ನಲ್ಲಿ ಸೇಂಟ್ ಪೀಟರ್ಸ್ಬರ್ಗ್ ಸ್ಟೇಟ್ ಯೂನಿವರ್ಸಿಟಿ ಪದವಿ ವಿದ್ಯಾರ್ಥಿನಿ ನಿಕಿತಾ ಬೊಬ್ರೊವ್ ಅವರೊಂದಿಗೆ ಒಟ್ಟಾಗಿ ಕೆಲಸ ಮಾಡಿದರು.
ಕ್ರಿಯಾತ್ಮಕ ಅವಲಂಬನೆಗಳನ್ನು ಹುಡುಕುವ ಕಂಪ್ಯೂಟೇಶನಲ್ ಸಂಕೀರ್ಣತೆ
ಮುಖ್ಯ ಸಮಸ್ಯೆ ಕಂಪ್ಯೂಟೇಶನಲ್ ಸಂಕೀರ್ಣತೆಯಾಗಿದೆ. ಸಂಭವನೀಯ ಕನಿಷ್ಠ ಮತ್ತು ಕ್ಷುಲ್ಲಕವಲ್ಲದ ಅವಲಂಬನೆಗಳ ಸಂಖ್ಯೆಯು ಮೇಲಿನ ಮೌಲ್ಯದಿಂದ ಸೀಮಿತವಾಗಿದೆ ಅಲ್ಲಿ - ಟೇಬಲ್ ಗುಣಲಕ್ಷಣಗಳ ಸಂಖ್ಯೆ. ಕ್ರಮಾವಳಿಗಳ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯವು ಗುಣಲಕ್ಷಣಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮಾತ್ರ ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಆದರೆ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. 90 ರ ದಶಕದಲ್ಲಿ, ಸಾಮಾನ್ಯ ಡೆಸ್ಕ್ಟಾಪ್ PC ಯಲ್ಲಿನ ಫೆಡರಲ್ ಕಾನೂನು ಹುಡುಕಾಟ ಅಲ್ಗಾರಿದಮ್ಗಳು 20 ಗುಣಲಕ್ಷಣಗಳನ್ನು ಮತ್ತು ಹತ್ತು ಸಾವಿರ ಸಾಲುಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಡೇಟಾ ಸೆಟ್ಗಳನ್ನು ಹಲವಾರು ಗಂಟೆಗಳವರೆಗೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು. ಮಲ್ಟಿ-ಕೋರ್ ಪ್ರೊಸೆಸರ್ಗಳಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಆಧುನಿಕ ಅಲ್ಗಾರಿದಮ್ಗಳು ಸುಮಾರು ಒಂದೇ ಸಮಯದಲ್ಲಿ ನೂರಾರು ಗುಣಲಕ್ಷಣಗಳನ್ನು (200 ವರೆಗೆ) ಮತ್ತು ನೂರಾರು ಸಾವಿರ ಸಾಲುಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಡೇಟಾ ಸೆಟ್ಗಳಿಗೆ ಅವಲಂಬನೆಗಳನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಇದು ಸಾಕಾಗುವುದಿಲ್ಲ: ಹೆಚ್ಚಿನ ನೈಜ-ಪ್ರಪಂಚದ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಅಂತಹ ಸಮಯವು ಸ್ವೀಕಾರಾರ್ಹವಲ್ಲ. ಆದ್ದರಿಂದ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು ವೇಗಗೊಳಿಸಲು ನಾವು ವಿಧಾನಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇವೆ.
ವಿಭಜನಾ ಛೇದಕಗಳಿಗಾಗಿ ಕ್ಯಾಶಿಂಗ್ ಯೋಜನೆಗಳು
ಕೆಲಸದ ಮೊದಲ ಭಾಗದಲ್ಲಿ, ವಿಭಜನಾ ಛೇದನ ವಿಧಾನವನ್ನು ಬಳಸುವ ಅಲ್ಗಾರಿದಮ್ಗಳ ವರ್ಗಕ್ಕಾಗಿ ನಾವು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವ ಯೋಜನೆಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೇವೆ. ಗುಣಲಕ್ಷಣಕ್ಕಾಗಿ ಒಂದು ವಿಭಾಗವು ಪಟ್ಟಿಗಳ ಒಂದು ಗುಂಪಾಗಿದೆ, ಅಲ್ಲಿ ಪ್ರತಿ ಪಟ್ಟಿಯು ನಿರ್ದಿಷ್ಟ ಗುಣಲಕ್ಷಣಕ್ಕಾಗಿ ಅದೇ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಸಾಲು ಸಂಖ್ಯೆಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಅಂತಹ ಪ್ರತಿಯೊಂದು ಪಟ್ಟಿಯನ್ನು ಕ್ಲಸ್ಟರ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಅನೇಕ ಆಧುನಿಕ ಕ್ರಮಾವಳಿಗಳು ಅವಲಂಬನೆಯನ್ನು ಹೊಂದಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ವಿಭಾಗಗಳನ್ನು ಬಳಸುತ್ತವೆ, ಅವುಗಳೆಂದರೆ, ಅವು ಲೆಮ್ಮಾ: ಅವಲಂಬನೆಗೆ ಬದ್ಧವಾಗಿರುತ್ತವೆ ವೇಳೆ ನಡೆದ . ಇಲ್ಲಿ ಒಂದು ವಿಭಾಗವನ್ನು ಗೊತ್ತುಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ವಿಭಜನಾ ಗಾತ್ರದ ಪರಿಕಲ್ಪನೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ - ಅದರಲ್ಲಿರುವ ಸಮೂಹಗಳ ಸಂಖ್ಯೆ. ವಿಭಾಗಗಳನ್ನು ಬಳಸುವ ಅಲ್ಗಾರಿದಮ್ಗಳು, ಅವಲಂಬನೆಯನ್ನು ಉಲ್ಲಂಘಿಸಿದಾಗ, ಅವಲಂಬನೆಯ ಎಡಭಾಗಕ್ಕೆ ಹೆಚ್ಚುವರಿ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸೇರಿಸಿ, ತದನಂತರ ಅದನ್ನು ಮರು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ, ವಿಭಾಗಗಳ ಛೇದನದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಈ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಲೇಖನಗಳಲ್ಲಿ ವಿಶೇಷತೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಆದರೆ ಕೆಲವು ಸುತ್ತುಗಳ ವಿಶೇಷತೆಯ ನಂತರ ಮಾತ್ರ ಉಳಿಸಿಕೊಳ್ಳುವ ಅವಲಂಬನೆಗಳ ವಿಭಾಗಗಳನ್ನು ಸಕ್ರಿಯವಾಗಿ ಮರುಬಳಕೆ ಮಾಡಬಹುದೆಂದು ನಾವು ಗಮನಿಸಿದ್ದೇವೆ, ಇದು ಛೇದಕ ಕಾರ್ಯಾಚರಣೆಯು ದುಬಾರಿಯಾಗಿರುವುದರಿಂದ ಅಲ್ಗಾರಿದಮ್ಗಳ ಚಾಲನೆಯಲ್ಲಿರುವ ಸಮಯವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ಆದ್ದರಿಂದ, ನಾವು ಶಾನನ್ ಎಂಟ್ರೋಪಿ ಮತ್ತು ಗಿನ್ನಿ ಅನಿಶ್ಚಿತತೆಯ ಆಧಾರದ ಮೇಲೆ ಹ್ಯೂರಿಸ್ಟಿಕ್ ಅನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದ್ದೇವೆ, ಹಾಗೆಯೇ ನಮ್ಮ ಮೆಟ್ರಿಕ್ ಅನ್ನು ನಾವು ರಿವರ್ಸ್ ಎಂಟ್ರೋಪಿ ಎಂದು ಕರೆಯುತ್ತೇವೆ. ಇದು ಶಾನನ್ ಎಂಟ್ರೊಪಿಯ ಸ್ವಲ್ಪ ಮಾರ್ಪಾಡು ಮತ್ತು ಡೇಟಾ ಸೆಟ್ನ ವಿಶಿಷ್ಟತೆಯು ಹೆಚ್ಚಾದಂತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಪ್ರಸ್ತಾವಿತ ಹ್ಯೂರಿಸ್ಟಿಕ್ ಈ ಕೆಳಗಿನಂತಿರುತ್ತದೆ:
ಇದು - ಇತ್ತೀಚೆಗೆ ಲೆಕ್ಕಹಾಕಿದ ವಿಭಾಗದ ವಿಶಿಷ್ಟತೆಯ ಮಟ್ಟ ಮತ್ತು ವೈಯಕ್ತಿಕ ಗುಣಲಕ್ಷಣಗಳಿಗೆ ವಿಶಿಷ್ಟತೆಯ ಡಿಗ್ರಿಗಳ ಮಧ್ಯಂತರವಾಗಿದೆ. ಮೇಲೆ ವಿವರಿಸಿದ ಎಲ್ಲಾ ಮೂರು ಮೆಟ್ರಿಕ್ಗಳನ್ನು ಅನನ್ಯತೆಯ ಮೆಟ್ರಿಕ್ ಎಂದು ಪರೀಕ್ಷಿಸಲಾಗಿದೆ. ಹ್ಯೂರಿಸ್ಟಿಕ್ನಲ್ಲಿ ಎರಡು ಮಾರ್ಪಾಡುಗಳಿವೆ ಎಂದು ನೀವು ಗಮನಿಸಬಹುದು. ಪ್ರಸ್ತುತ ವಿಭಾಗವು ಪ್ರಾಥಮಿಕ ಕೀಲಿಗೆ ಎಷ್ಟು ಹತ್ತಿರದಲ್ಲಿದೆ ಎಂಬುದನ್ನು ಮೊದಲನೆಯದು ಸೂಚಿಸುತ್ತದೆ ಮತ್ತು ಸಂಭಾವ್ಯ ಕೀಲಿಯಿಂದ ದೂರವಿರುವ ವಿಭಾಗಗಳನ್ನು ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಎರಡನೇ ಪರಿವರ್ತಕವು ಸಂಗ್ರಹ ಆಕ್ಯುಪೆನ್ಸಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಉಚಿತ ಸ್ಥಳಾವಕಾಶ ಲಭ್ಯವಿದ್ದಲ್ಲಿ ಸಂಗ್ರಹಕ್ಕೆ ಹೆಚ್ಚಿನ ವಿಭಾಗಗಳನ್ನು ಸೇರಿಸಲು ಪ್ರೋತ್ಸಾಹಿಸುತ್ತದೆ. ಈ ಸಮಸ್ಯೆಯ ಯಶಸ್ವಿ ಪರಿಹಾರವು ಡೇಟಾಸೆಟ್ ಅನ್ನು ಅವಲಂಬಿಸಿ PYRO ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು 10-40% ರಷ್ಟು ವೇಗಗೊಳಿಸಲು ನಮಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟಿತು. ಈ ಪ್ರದೇಶದಲ್ಲಿ PYRO ಅಲ್ಗಾರಿದಮ್ ಅತ್ಯಂತ ಯಶಸ್ವಿಯಾಗಿದೆ ಎಂದು ಗಮನಿಸಬೇಕಾದ ಅಂಶವಾಗಿದೆ.
ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ನೀವು ಮೂಲ ನಾಣ್ಯ-ಫ್ಲಿಪ್ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವ ವಿಧಾನಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಪ್ರಸ್ತಾವಿತ ಹ್ಯೂರಿಸ್ಟಿಕ್ ಅನ್ನು ಅನ್ವಯಿಸುವ ಫಲಿತಾಂಶಗಳನ್ನು ನೋಡಬಹುದು. X ಅಕ್ಷವು ಲಾಗರಿಥಮಿಕ್ ಆಗಿದೆ.
ವಿಭಾಗಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಪರ್ಯಾಯ ಮಾರ್ಗ
ನಂತರ ನಾವು ವಿಭಾಗಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಪರ್ಯಾಯ ಮಾರ್ಗವನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದ್ದೇವೆ. ವಿಭಾಗಗಳು ಕ್ಲಸ್ಟರ್ಗಳ ಗುಂಪಾಗಿದೆ, ಪ್ರತಿಯೊಂದೂ ಕೆಲವು ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಒಂದೇ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಟ್ಯೂಪಲ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಈ ಕ್ಲಸ್ಟರ್ಗಳು ಟ್ಯೂಪಲ್ ಸಂಖ್ಯೆಗಳ ದೀರ್ಘ ಅನುಕ್ರಮಗಳನ್ನು ಹೊಂದಿರಬಹುದು, ಉದಾಹರಣೆಗೆ ಕೋಷ್ಟಕದಲ್ಲಿನ ಡೇಟಾವನ್ನು ಆರ್ಡರ್ ಮಾಡಿದರೆ. ಆದ್ದರಿಂದ, ನಾವು ವಿಭಾಗಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಸಂಕುಚಿತ ಯೋಜನೆಯನ್ನು ಪ್ರಸ್ತಾಪಿಸಿದ್ದೇವೆ, ಅವುಗಳೆಂದರೆ ವಿಭಾಗಗಳ ಸಮೂಹಗಳಲ್ಲಿ ಮೌಲ್ಯಗಳ ಮಧ್ಯಂತರ ಸಂಗ್ರಹಣೆ:
$$display$$pi(X) = {{ಅಂಡರ್ಬ್ರೇಸ್{1, 2, 3, 4, 5}_{ಮೊದಲ ಮಧ್ಯಂತರ}, ಅಂಡರ್ಬ್ರೇಸ್{7, 8}_{ಎರಡನೇ ಮಧ್ಯಂತರ}, 10}}\ ಡೌನ್ರೋರೋ{ ಕಂಪ್ರೆಷನ್} \ pi(X) = {{ಅಂಡರ್ಬ್ರೇಸ್{$, 1, 5}_{ಮೊದಲ~ಮಧ್ಯಂತರ}, ಅಂಡರ್ಬ್ರೇಸ್{7, 8}_{ಸೆಕೆಂಡ್~ಇಂಟರ್ವಲ್}, 10}}$$ಡಿಸ್ಪ್ಲೇ$$
ಈ ವಿಧಾನವು TANE ಅಲ್ಗಾರಿದಮ್ನ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ 1 ರಿಂದ 25% ವರೆಗೆ ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಾಧ್ಯವಾಯಿತು. TANE ಅಲ್ಗಾರಿದಮ್ ಫೆಡರಲ್ ಕಾನೂನುಗಳನ್ನು ಹುಡುಕಲು ಒಂದು ಶ್ರೇಷ್ಠ ಅಲ್ಗಾರಿದಮ್ ಆಗಿದೆ; ಇದು ತನ್ನ ಕೆಲಸದ ಸಮಯದಲ್ಲಿ ವಿಭಾಗಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಅಭ್ಯಾಸದ ಭಾಗವಾಗಿ, TANE ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ, ಏಕೆಂದರೆ ಅದರಲ್ಲಿ ಮಧ್ಯಂತರ ಸಂಗ್ರಹಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ತುಂಬಾ ಸುಲಭವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ, PYRO ನಲ್ಲಿ ಪ್ರಸ್ತಾವಿತ ವಿಧಾನವು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆಯೇ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು. ಪಡೆದ ಫಲಿತಾಂಶಗಳನ್ನು ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ. X ಅಕ್ಷವು ಲಾಗರಿಥಮಿಕ್ ಆಗಿದೆ.
ಕಾನ್ಫರೆನ್ಸ್ ADBIS-2019
ಸಂಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ, ಸೆಪ್ಟೆಂಬರ್ 2019 ರಲ್ಲಿ ನಾನು ಲೇಖನವನ್ನು ಪ್ರಕಟಿಸಿದೆ
ಮೂಲ: www.habr.com